- Как программировать в Swift в Windows 10
- Что такое Свифт?
- Начало работы с Swift в Windows
- Привет тебе!
- Компиляция Swift в Windows 10
- Маленькие Начало
- Swift приложение для windows
- Swift (Windows/OS X)
- Swift (Linux)
- Swiften/Stroke
- Commercial Licenses
- Swift приложение для windows
- Swift на Windows: практические советы, проблемы и инструменты
- Тулчейн и SDK Swift
- Сторонние модули
- Система сборки
- Swift и Node.js
- И это всё?
- Итого
Как программировать в Swift в Windows 10
Swift — один из самых популярных языков на данный момент, и это вызвало волнение у многих, и не без причины. Приложения OS X и iOS занимают огромную часть рынка. Возможность создавать приложения для iOS изначально важна для людей, которые не хотят погружаться в темные глубины Objective C (хотя есть много веских причин для изучения C
Если вы новичок в программировании, вы, безусловно, можете извлечь выгоду из изучения более нового языка, такого как Python
, Swift также вписывается в эту коробку, вырезая некоторые углы, которые некоторые считают препятствием для начинающих, обучающихся программированию.
Поскольку Swift является родным для Apple, может показаться сложным понять, с чего начать, если у вас нет Mac. Не существует готового способа компиляции Swift в Windows. Означает ли это, что пользователи Windows не могут изучать Swift? Как оказалось, нет! Есть выход.
В этой статье вы узнаете, как создать простую программу Swift и как скомпилировать и запустить ее в Windows 10.
Что такое Свифт?
Прежде чем мы начнем, давайте посмотрим, что же такое Swift. Swift — это язык программирования, разработанный Apple, который берет идеи «из Objective-C, Rust, Haskell, Ruby, Python, C #, CLU и многих других», по словам создателя проекта Криса Латтнера.
Это относительно молодой язык, который был выпущен для публики в 2014 году, хотя он уже широко известен. Индекс лучших языков программирования TIOBE в 2017 году поставил Swift на 11-е место, что делает его одним из самых быстрорастущих языков за все время.
Изображение предоставлено: stackify.com
Короче говоря, если вы программируете для OS X или iOS, Swift для вас! Для более глубокого изучения использования Swift, взгляните на эти причины, почему Swift стоит изучить
Начало работы с Swift в Windows
Во-первых, нам понадобится редактор для написания нашего кода. Вы можете использовать любую IDE, которая вам удобна, хотя использовать ее не обязательно, и любого текстового редактора тоже будет достаточно. Это в основном сводится к личным предпочтениям, хотя, если вам нужна помощь, решение о том, что использовать это руководство, может помочь вам
Сегодня мы собираемся использовать Notepad ++, так как он бесплатный, простой и может быть расширен при необходимости
, Загрузите Блокнот ++ и откройте его. Давайте приступим к некоторому кодированию!
Привет тебе!
Для нашего тестового проекта сегодня мы собираемся создать простую программу, которая будет работать в командной строке Windows. Начните с открытия нового файла Notepad ++. Мы начнем с вывода вопроса на экран, подождем, пока пользователь напечатает его ответ, а затем используем этот ответ для предоставления ответа.
Это отобразится, как только программа запустится. Теперь, когда мы задали вопрос, мы должны предоставить пользователю возможность ответить. Для этого мы используем Readline () метод и сохранить ответ в виде переменной с именем ответ.
Если вы уже знакомы с другими языками программирования, вы можете заметить здесь несколько небольших отличий. Во-первых, мы можем хранить данные, полученные из readLine, как вар вместо того, чтобы указывать, что это будет строка. Еще одно изменение для тех из вас, кто пришел из JavaScript
это отсутствие точки с запятой для обозначения конца строки. Пользователи Python
может быть, здесь уже больше дома!
Теперь, когда эта информация хранится в переменной, мы хотим использовать ее и отобразить ее пользователю. Что может быть лучше, чем пожелать им хорошего дня?
Даже если у вас есть опыт работы с другими языками, вы увидите здесь некоторые различия. Вместо того, чтобы использовать + оператор за кавычками для отображения вашей переменной, вы используете \ (ИмяПеременный) в кавычках. Еще одной особенностью Swift является использование Необязательные значения. Эти значения трудно понять на первый взгляд, но они расширяют функциональность использования переменных в Swift.
В этом случае мы просто хотим отобразить значение как есть, поэтому мы добавляем восклицательный знак после имени переменной ответ! обозначить, что это не необязательное значение. Необязательное значение — это переменная, которой может или не может быть присвоено значение. Это не требует одного. Если ему не присвоено значение, ему будет присвоено ноль. Знак вопроса (?) После типа значения определяет его как необязательный, а восклицательный знак означает, что это не так.
Теперь, когда мы закончили, ваш код должен выглядеть примерно так:
Чтобы сохранить свой код, используйте Файл> Сохранить как и выберите Свифт файл от Сохранить как тип меню. Если в вашем меню отсутствует тип файла Swift, выберите все файлы вместо этого, и добавьте .быстрый расширение файла после выбранного вами имени файла.
Компиляция Swift в Windows 10
Теперь, когда у нас есть программа, мы должны быть в состоянии скомпилировать и запустить ее. Хотя в Windows 10 нет встроенного способа программирования Swift, существует обходной путь. Хан Санджин создал компилятор для Swift, который можно загрузить с Github. Загрузите и установите приложение Swift для Windows, используя инструкции, приведенные в ссылке.
Как только это установлено, откройте это. Вам будет представлен такой интерфейс:
Нажми на Выберите файл кнопку и выберите вашу ранее сделанную программу. Нажмите компилировать и подождите, пока программа скомпилируется. Для такой маленькой программы это должно быть почти мгновенно, хотя это может занять время, в зависимости от того, насколько сложным вы сделали свой код!
Вы должны получить сообщение «Успешно скомпилировано» в диалоговом окне. Если нет, вернитесь и проверьте свой код, чтобы убедиться, что вы не допустили ошибок. Как только код скомпилирован, нажмите Бежать запустить вашу программу. Программа откроется в командной строке Windows и должна выглядеть следующим образом:
Стоит отметить, что вы должны использовать приложение Swift для Windows, чтобы запустить свой код, .EXE Созданный файл не будет работать отдельно, даже если приложение открыто.
Маленькие Начало
Поскольку Swift не предназначен для использования в Windows 10, это единственный способ начать работу с языком в настоящее время за пределами виртуальной машины.
, Хотя он ограничен, для тех, кто интересуется языком, это отличный способ получить практический опыт работы с ним и изучить его синтаксис.
Если вы решите, что Swift для вас и планируете работать с ним на OS X, есть множество инструментов
там, чтобы помочь вам. Как только вы овладеете основами, почему бы не попробовать несколько начинающих проектов
воплотить свои знания в жизнь?
Если вы являетесь пользователем Linux и задаетесь вопросом, возможно ли кодировать в Swift с помощью Ubuntu, у нас есть несколько хороших новостей
Вы изучаете Swift? Как вы себя чувствуете по сравнению с другими новыми языками кодирования? Мы пропустили какие-либо другие замечательные хаки, чтобы начать работать с ним в Windows 10? Дайте нам знать в комментариях ниже!
Swift приложение для windows
Here you’ll find links to downloads for all current versions of the products in the Swift family. For previous releases, see the releases page. The source for Swift, Swiften and Stroke is licensed under the GNU General Public License.
Swift (Windows/OS X)
The current release of Swift is 4.0.2. If you have an earlier version of Swift, please read the changelog before upgrading. Swift 4.0.2 is available for Windows and Mac OS X (10.9+), as well as an AppImage for 64-bit Linux systems.
The source code of Swift and Swiften is also available as a download (along with the GPG signature) or the source code can be obtained from the Swift Git Repository.
Remember to follow us on Facebook or Twitter and sign up to our mailing list (below) for news of new releases.
Swift (Linux)
To install and stay up to date with the latest prereleases on Ubuntu Linux and Debian, you can add the following APT lines (depending on your distribution) to the list of Software Sources in Synaptic Package Manager or /etc/apt/sources.list.
Ubuntu Xenial Xerus (16.04)
deb https://swift.im/packages/ubuntu/xenial release main
deb-src https://swift.im/packages/ubuntu/xenial release main
Ubuntu Artful Aardvark (17.10)
deb https://swift.im/packages/ubuntu/artful release main
deb-src https://swift.im/packages/ubuntu/artful release main
Debian 8 (jessie)
deb https://swift.im/packages/debian/jessie release main
deb-src https://swift.im/packages/debian/jessie release main
Debian 9 (stretch)
deb https://swift.im/packages/debian/stretch release main
deb-src https://swift.im/packages/debian/stretch release main
Note that these packages require that you install our key in the package manager list of trusted sources.
Swiften/Stroke
The source code of Swift and Swiften is available as a download or can be obtained from the Swift Git Repository. Instructions are available for building the source code on unix and building on windows. Pre-built binary and development packages are also available from our apt repositories for those distributions currently supported.
The source code of Stroke can be obtained from the Stroke Git Repository. Instructions for building the source code can be found here.
Commercial Licenses
If you are interested in using part of the Swift suite in a commercial project, please contact the Isode Sales team.
Swift приложение для windows
С самого начала развития язык прогаммирования Swift долгое время ассоциировался с XCode и MacOS. И вот сообщество проекта Swift представило инструментарий для компиляции приложений Swift на Windows.
Как отмечается, перенос Swift на Windows означает не просто адаптацию компилятора к новой ОС, но также обеспечение работы всей экосистемы данного языка прогаммирования, которая включает собственно компилятор, стндартную библиотеку и основные библиотеки (dispatch, Foundation, XCTest). Эти библиотеки позволяют разработчикам писать приложения с богатой функциональностью, не задумываясь о тонкостях взаимодействия с операционной системой. Используя данные библиотеки и гибкое взаимодействие языков Swift и C, становится возможным написание приложений на Windows исключительно на Swift, причем с применением уже написанных сторонних библиотек. Что, в свою очередь, открывает возможность для создания кроссплатформенных приложений
В качестве примера предлагается калькулятор, написанный на Swift на Windows, код которого можно найти в репозитории на github
Как сообщается, на данный момент для построения приложения необходимо установить Swift toolchain для Windows и Visual Studio 2019, которая предоставит доступ к другим необходимым компонентам (например, CMake, Ninja и Windows SDK)
В то же время указывается, что добавление поддержки Swift на Windows, работа над котоой идет уже год, пока еще находится только в начале пути и еще много работы предстоит проделать. Например, разработка менеджера Swift Package Manager для создания приложений на Windows еще далека от завершения. (как отмечается, он позволит компилировать приложения с помощью простой команды swift build без обращения к CMake) А CMake, который пока применяется для построения приложений, имеет свои недостатки. Тем не менее уже сейчас инструментарий языка уже находится на этапе, когда его можно начать использовать.
Swift на Windows: практические советы, проблемы и инструменты
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.
Меня зовут Александр Смарусь, и я Product Engineering Lead в Readdle. Я работаю над приложением Spark — популярным почтовым клиентом с миллионами пользователей на iOS, macOS и Android. Сейчас наша команда занимается версией для Windows, чтобы Spark стал доступен и на ПК.
В этой небольшой статье я хочу описать наш опыт, обозначить места, с которых можно начать работу со Swift на Windows, рассказать о его возможностях, вероятных проблемах, а также поделиться некоторыми инструментами.
Экспериментировать со Swift на новой платформе мы начали больше года назад. У нас уже был успешный опыт со Spark для Android, в котором базовая часть кода общая с iOS/macOS благодаря Swift. Поэтому возможность расшириться на Windows выглядела крайне привлекательно.
Мы начали изучать текущее состояние проекта, и почти сразу стало понятно, что сообщество разработки Swift уже приложило немало усилий к портированию на Windows. Компилятор был вполне живой, в стандартных библиотеках реализованы необходимые слои. И хоть на тот момент там ещё очень многое работало не совсем корректно, разработка велась очень активно. Всё серьезно. Из того, что было необходимо именно нам, бОльшая часть либо функционировала, либо выглядела не очень сильно сломанной. «Починим», — подумали мы и взялись за работу. Забегая вперёд, скажу, что некоторые сторонние зависимости на C/C++ принесли нам больше головной боли, чем сам Swift. А после проработки основных концепций работа по переносу ядра Spark на Windows стала довольно простой и рутинной.
Итак, что у нас есть сейчас:
- Инструментарий для сборки тулчейна и SDK Swift
- 9 модулей на Swift (255 739 строк кода, 2 133 исходных файла)
- 3 сторонних модуля на Swift
- 1452 теста (на базе XCTest)
- CI на Windows для отслеживания состояния тестов
- Система сборки, отчасти основанная на собственных скриптах, отчасти на CMake
Тулчейн и SDK Swift
Начать работу со Swift на Windows достаточно легко. Просто следуйте инструкциям из проекта //swift/build. Но нам требовалось нечто большее. Поскольку поддержка Windows всё ещё в разработке, постоянно возникала необходимость исследовать разнообразные проблемы в стандартных библиотеках, а иногда и в самом компиляторе. Нужен был инструмент, позволяющий собирать собственную версию Swift. И пересобирать какую-нибудь отдельно взятую часть. И так много, много раз.
Мы начали с довольно простого сборочного скрипта, основанного на Azure Pipelines compnerd`а. Со временем он превратился в гибкий инструмент, который позволяет регулярно получать свежие сборки Swift, следить за их состоянием, применять патчи, проводить эксперименты и так далее.
Сторонние модули
Модули на чистом Swift, такие как CryptoSwift и OAuthSwift, заработали практически без усилий.
CryptoSwift — это сборник криптографических алгоритмов, реализованных на Swift. Популярная библиотека определённо не нуждается в представлении. Нам понадобилось сделать лишь несколько правок импортов системных библиотек, заменить вызовы arc4random_uniform на стандартный random(in:) и в одном месте заменить mlock на его Windows-аналог, VirtualLock . Насколько мне известно, чуть позже разработчики CryptoSwift убрали оттуда arc4random_uniform , поэтому текущая версия стала более совместимой с Windows «из коробки».
OAuthSwift. Ещё одна известная библиотека с говорящим названием. Наряду с arc4random_uniform и исправлением импортов пришлось написать замену недостающей функции CFStringConvertEncodingToIANACharSetName . Эта функция из библиотеки CoreFoundation, и она недоступна (не является частью SDK) на не-Darwin платформах. OAuthSwift также содержит немного UI-кода, который привязан к фреймворкам macOS/iOS. Но ядро Spark не работает с UI, поэтому тот код мы просто исключили из сборки.
Можно выделить несколько советов, которые помогут подготовить ваш код к сборке под Windows:
- Замените arc4random_uniform на соответствующий вызов random(in:) :
Достаточно очевидная рекомендация, ведь эти функции появились ещё в Swift 4.2. Должна быть веская причина, чтобы всё ещё пользоваться старым способом.
- Если в коде используются какие-либо функции из стандартной библиотеки C, добавьте импорт ucrt :
- В библиотеке swift-corelibs-foundation разделили привычный Darwin-разработчикам Foundation на три части: Foundation, FoundationNetworking и FoundationXML. Поэтому, если ваш код использует, например, сетевой функционал, вам потребуется явным образом подключить FoundationNetworking :
- Убедитесь, что у вас не используется функционал из CoreFoundation. Мы привыкли воспринимать эту библиотеку как должное, но на платформах, отличных от Darwin, CoreFoundation не доступен и считается не более, чем внутренней деталью реализации Foundation.
Система сборки
Сейчас Swift Package Manager почти готов к полноценному использованию на Windows, но год назад это было не так. Даже CMake, который уже долгое время остаётся самым гибким решением для Swift-проектов на этой платформе, поддерживал Swift только на базовом уровне. Но мы же инженеры, в конце концов, и наше любимое занятие — писать велосипеды. Можно сделать что-то своё. Swift — это современный компилятор, основанный на llvm. Передать ему горстку исходных файлов, указать желаемый результат (библиотека или исполняемый файл), при необходимости включить оптимизацию, подсказать пути к библиотекам, и готово!
Очень советуем посмотреть эти примеры с CMake, но для самых простых экспериментов подойдет и командная строка:
Конечно, полноценный продукт содержит множество компонентов и зависимостей. Даже примитивная система сборки должна как-то разрешать пути, обрабатывать связи между модулями, управлять ресурсами, позволять настраивать весь процесс. В итоге у нас получилась связка PowerShell-скриптов, которая со всем этим неплохо справляется. Но мы обязательно перейдем на Swift Package Manager, как только он будет готов. Это позволит унифицировать сборку на всех платформах, которые поддерживаются в Spark.
Swift и Node.js
Ещё одним испытанием было принятие решения о реализации пользовательского интерфейса. Решали довольно долго, взвешивали все за и против, проверяли некоторые перспективные идеи на практике. После всестороннего обсуждения остановились на Electron в качестве фронтенда для будущего Spark на Windows. Это означало, что нам требуется не просто собрать ядро Spark на Windows, но и сделать его загружаемым модулем для Node.js.
Аддон для Node.js на чистом Swift? Звучит интригующе, ведь в разработке таких вещей царит C и C++. Но всё оказалось на удивление просто. Разработку начали на macOS. Всё-таки пользоваться Xcode для отладки и написания кода очень удобно, а node-gyp, инструмент для сборки аддонов Node.js, может сгенерировать полноценный проект под эту IDE. Swift, в свою очередь, отлично работает с N-API.
Единственную хитрость пришлось провернуть, чтобы определить точку входа. Дело в том, что аддон должен правильно себя зарегистрировать путём определения специальной функции. Хотя написать её на Swift вполне реально, это не очень удобно. N-API предоставляет простой в использовании однострочный под которым скрывается несколько уровней макросной магии. Вот бы как-то начать в коде на C и оттуда безболезненно передать управление в Swift. К сожалению, если вызвать C из Swift не представляет каких-либо проблем, то обратная операция пока официально не поддерживается. Что совсем не значит, что это невозможно! У нас же есть атрибут @_cdecl ! Судя по вот этому посту от Joe Groff, с ним связаны некоторые риски и ограничения, но у нас всего один маленький вызов. Что может пойти не так?
Шалость удалась, мы сделали аддон для Node.js. на macOS. А как же Windows? Как уже упоминалось, мы использовали node-gyp и Xcode. Очевидно, что на Windows так не получится. Там со сборкой лучше всего справляется CMake. Но node-gyp не просто собирает исходники, он делает ещё кое-что полезное: выкачивает необходимые для интеграции с Node файлы, подсказывает компилятору, где они лежат, включает кое-какие важные флаги. Вот если бы был какой-то инструмент, объединяющий в себе CMake и node-gyp. И такой есть! Cmake-js делает в точности то же, что и node-gyp, только на основе CMake. С ним всё встало на свои места. Аддон успешно собрался на Windows и запустился внутри Node.js и Electron. Немного жаль, что cmake-js не попал в поле зрения сразу, ведь тогда можно было бы не тратить время на альтернативы.
И это всё?
К глубокому сожалению, эта статья не способна вместить в себя всё интересное о Swift на Windows. Мы сфокусировались на том, что было сделано, но за рамками осталось очень много подробностей о том, как это было сделано. Планируем рассказать вам обо всём в отдельной истории.
Итого
С момента начала нашего путешествия Swift на Windows проделал огромный путь. В библиотеках исправили множество багов, компилятор перестал падать от вида необычного кода, Swift Package Manager уже в шаге от выпуска. Вы наверняка слышали, что недавно вышел Swift 5.3. Это первый релиз с официальной поддержкой Windows.
Сообщество разработки Swift приложило огромное количество усилий, чтобы воплотить в жизнь поддержку новой платформы. Отдельно хочется отметить вклад Saleem Abdulrasool, который не только пишет огромное количество кода, но и активно помогает новичкам, на практике показывает потенциал Swift и вдохновляет других на первые шаги в этой области.
Если вы думаете о расширении поддержки существующего кода на платформы кроме macOS/iOS, то Swift почти наверняка позволит это сделать. Если вы поддерживаете небольшую Swift-библиотеку, добавить поддержку Windows не составит большого труда.