можно ли писать на swift на windows
Как программировать в Swift на Windows 10
Swift — один из самых популярных языков сейчас, и на то есть веские причины. Приложения для Mac и iOS занимают огромную долю рынка. Возможность создавать приложения для iOS изначально важна для людей, которые не хотят погружаться в темные глубины Objective C.
Поскольку 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-е место, что делает его одним из самых быстрорастущих языков за все время.
Короче говоря, если вы программируете для Mac или iOS, Swift для вас! Для более глубокого изучения использования Swift, взгляните на эти причины, почему Swift стоит изучать Swift стоит изучать Swift стоит изучать
Начало работы с Swift на Windows 10
Сегодня мы собираемся использовать Notepad ++, так как он бесплатный, простой и расширяемый. Загрузите Блокнот ++ и откройте его. Давайте приступим к некоторому кодированию!
Простая программа Swift для Windows
Для нашего тестового проекта сегодня мы собираемся создать простую программу, которая будет работать в командной строке Windows. Начните с открытия нового файла Notepad ++. Мы начнем с вывода вопроса на экран, подождем, пока пользователь напечатает его ответ, а затем используем этот ответ для предоставления ответа.
Если вы уже знакомы с другими языками программирования, вы можете заметить здесь несколько небольших отличий. Во-первых, мы можем хранить данные, полученные из readLine, как переменную, вместо того, чтобы указывать, что это будет строка. Еще одно изменение для тех из вас, кто пришел из JavaScript или C #, — отсутствие точки с запятой для обозначения конца строки.
Пользователи Python уже могут быть здесь как дома!
Добавление вывода
Теперь, когда эта информация хранится в переменной, мы хотим использовать ее и отобразить ее пользователю. Что может быть лучше, чем пожелать им хорошего дня?
В этом случае мы просто хотим отобразить значение как есть, поэтому мы добавляем восклицательный знак после ответа имени переменной ! обозначить, что это не необязательное значение. Необязательное значение — это переменная, которой может или не может быть присвоено значение. Это не требует одного. Если ему не присвоено значение, то ему будет присвоено ноль.
Знак вопроса (?) После типа значения определяет его как необязательный, а восклицательный знак означает, что это не так.
Ваш код будет выглядеть примерно так:
Компиляция Swift в Windows 10
Как только это установлено, откройте это. Нажмите на кнопку « Выбрать файл» и выберите ранее созданную программу. Нажмите Compile и подождите, пока программа скомпилируется.
Для такой маленькой программы это должно быть почти мгновенно, хотя это может занять время в зависимости от того, насколько сложным вы сделали свой код!
Вы должны получить сообщение «Успешно скомпилировано» в диалоговом окне. Если нет, вернитесь и проверьте свой код, чтобы убедиться, что вы не допустили ошибок. После того, как код скомпилирован, нажмите Run, чтобы запустить вашу программу. Программа откроется в командной строке Windows и должна выглядеть следующим образом:
Стоит отметить, что для запуска кода необходимо использовать приложение Swift for Windows, созданный EXE- файл не будет работать автономно, даже если приложение открыто.
Начните писать код Swift в Windows сегодня
Если вы пользователь Linux и хотите кодировать приложения для iOS, вот как написать код в Swift с Ubuntu
Можно ли писать на swift под Windows или Linux?
Оценить 8 комментариев
beduin01: > ее же можно в эмуляторе запустить?
так и програмить можно в «эмуляторе». без OSX у вас не будет ни нужных sdk, ни возможности билда приложения.
> очень бы хотелось с языком вне MacOSX попрактиковаться
ну для винды пока нет вообще.
на линуксе командлайновые приложения писать можно уже сейчас
хотя и с некоторыми ограничениями.
Автор пока не собрал релиз, содержащий модули Foundation а так же SwiftPackageManager, однако есть MinGWCrt модуль обеспечивающий поддержку стандартной библиотеки С (mingw-w64), так же не составляет большого труда сделать модуль для поддержки WinAPI
Так что если вам не нужен именно тот Swift который используется в Apple Xcode, а интересен сам язык для изучения и вам достаточно поддержки С stdlib и других Сишных библиотек, то вполне подойдёт.
Introducing Swift on Windows
The Swift project is introducing new downloadable Swift toolchain images for Windows! These images contain development components needed to build and run Swift code on Windows.
For over a year now, there has been a significant endeavour to port Swift to Windows in conjunction with the developer community at swift.org. The Windows support is now at a point where early adopters can start using Swift to build real experiences on this platform.
Bringing Swift to Windows
Porting Swift to Windows is not about simply porting the compiler, but rather ensuring that the full ecosystem is available on the platform. This includes the compiler, the standard library, and the core libraries (dispatch, Foundation, XCTest). These libraries are part of what enables developers to write powerful applications with ease and without having to worry about many of the details of the underlying system. There are many technical details in the story of bringing Swift to a usable state on Windows, and if you are interested in them, I would recommend checking out my talk on the topic from the LLVM Developer Conference.
With these core libraries and the flexible interoperability of Swift with C, it is possible to develop applications on Windows purely in Swift while taking advantage of the existing corpus of libraries on the Windows platforms.
Example Application
This demo calculator is written entirely in Swift, with code seamlessly flipping between the application code written in Swift and the system libraries:
This project was built using:
The Swift toolchain on Windows
An installation of Visual Studio 2019 which delivers the other needed pieces in the form of CMake, Ninja, and the Windows SDK
Although the demo application is built with CMake, Swift Package Manager support on Windows is coming along. It will soon be possible to get the application building using swift build without needing CMake or Ninja.
Here you can see stepping through the application using lldb :
Cross-Platform Applications
Early adopters like Readdle are experimenting with cross-platform applications written in Swift, easily bringing many of the existing Swift libraries to Windows to support their applications.
I had been working with Alexander at Readdle about his team’s work, and he sent me this note:
We at Readdle started experimenting with Swift on Windows more than a year ago, in Q2 of 2019. By that time we already released Spark for Android which uses Swift to share core code with iOS/macOS, and the opportunity to extend to one more platform was really tempting.
Despite some functionality being unready as of yet, Swift on Windows turned out to be fully satisfying our needs. In fact, some third party C/C++ dependencies gave us more headaches than Swift did itself. All business logic of Spark is located in a separate Core module. A pack of modules, actually, but we refer to them as Core. This allows us to use any UI framework on the target platform: AppKit on macOS, UIKit on iOS, native UI Toolkit on Android. So, basically, we had to port Spark Core on Windows. After all initial concepts were proved, it was mostly routine day-to-day work to bring it alive on Windows.
As a good example, pure Swift modules like CryptoSwift and OAuthSwift almost worked right out of the box. We did trivial imports adjustment, excluded a few AppKit/UIKit references and voilà!
Another challenge was to decide how to implement the user interface. After extensive discourse we ended up with Electron as the front-end part of future Spark for Windows. That meant we not only needed to be able to build Spark Core on Windows but also use it as a loadable addon for Node.js.
Node.js addon in pure Swift? That appeared to be surprisingly easy. Swift perfectly imports N-API headers. We still need three lines of C code plus one small C header to define addon entry point, but all logic is in Swift. Due to the crossplatform nature of Node.js, we were able to use macOS as a development platform with Xcode as IDE, and then use the agility of CMake to build the same code on Windows.
Since the first day we started, Swift on Windows did a giant step forward in terms of platform support and stability. I’d say, if you are thinking about extending your existing application codebase to platforms other than macOS/iOS – you absolutely can do it with Swift now, or, at least, soon. If you are maintaining a small Swift library – you could easily add Windows support already!
— Alexander Smarus; Product Engineering Lead at Spark Team, Readdle Inc
More details are available on Readdle’s blog.
Adding support for Windows to Swift is the beginning of a journey. The current support sets the first milestone where the language is usable. There is yet another even broader part of the ecosystem like lldb and the Swift Package Manager which still need more work to be as complete in their support for this different platform.
Getting Started and Getting Involved!
The Getting Started section has been updated with new information about using Swift on Windows! For the early adopters who are getting started and finding issues, please report them to the Swift Bug Tracker.
There are many opportunities for those interested in helping push Swift on Windows forward. One of the things that makes Swift easy to use is libraries: publishing new libraries and packages for Swift on Windows or porting existing ones is another way to get involved and help make working with Swift an ever greater delight.
For the ones interested in working on core tooling, there is plenty of work to be done to improve the debugger and to improve the Windows support in the Swift Package Manager. We invite you to check out the Swift Bug Tracker for the current issues and to send patches to the GitHub repositories. There is also a new section on the Swift forums to discuss the development of Swift on Windows. There the community can discuss issues or you can introduce yourself and let others know what area of the tooling you are focusing on. This is the perfect opportunity to become involved in the project and help it grow into a strong, vibrant, cross-platform ecosystem. We cannot wait to see what exciting things you build with Swift!
Except where otherwise noted, all content on this blog is licensed under a Creative Commons Attribution 4.0 International license.
Copyright © 2021 Apple Inc. All rights reserved.
Swift and the Swift logo are trademarks of Apple Inc.
Лучшие среды разработки для Swift
В настоящее время существует большое количество языков, которые обычно используются для программирования. Некоторые, такие как Java, HMTL широко используются в рамках Windows работай. Однако мы также можем найти такой язык, как Swift, созданный Apple для разработки приложений, поэтому он широко используется в рамках устройств, принадлежащих компании Купертино, но с которыми вы также можете работать из Microsoft операционная система.
Для работы со Swift он создает среду IDE, которая представляет собой не что иное, как набор инструментов и средств, которые понадобятся программистам для разработки и проектирования программного обеспечения. Они делают это, предоставляя среду, в которой они могут писать и тестировать свой код. Поэтому, если мы хотим работать со Swift в macOS или Windows, нам понадобится инструмент, который предлагает нам эту совместимость.
Swift, язык программирования Apple
Swift разработан, чтобы упростить задачу по написанию и сопровождению программ для разработчика, поддерживая предполагаемые типы данных, чтобы сделать код более чистым и менее подверженным ошибкам. Этот язык программирования был задуман как замена языков на основе C, C ++ и Objective-C с лучшими результатами. Кроме того, он находится в постоянном развитии под строгим контролем за развитием языка.
Кросс-платформенные программы для использования Swift
Атом, один из самых популярных редакторов
Мы говорим о бесплатном текстовом редакторе с открытым исходным кодом для Windows, хотя его также можно использовать на других платформах, таких как macOS и Linux. Он разработан для использования всеми типами пользователей, будь то новички или продвинутые. Редактор позволит нам организовывать проекты по папкам, использовать несколько панелей одновременно и поддерживать такие языки, как C ++, PHP, JavaScript, HTML, а также Swift.
В настоящее время с Atom возможно автозаполнение кода Swift с помощью sourcekitten и сборка с помощью сборки Swift. Это также позволяет нам видеть список ошибок и предупреждений компиляции, устанавливать точки останова в коде Swift и запускать приложение, созданное в lldb. Кроме того, мы сможем проходить в точках останова. Кроме того, мы сможем взаимодействовать с lldb, используя его интерфейс командной строки.
Sublime Text, имеет собственный пакет для Swift
Это текстовый редактор кода, совместимый с широким спектром языков программирования, а также с языком разметки, что делает его одним из лучших вариантов для профессионалов. Он предлагает совместимость с популярными языками программирования, такими как HTML и CSS, а также со Swift для Apple, для которого у него есть хорошо известный пакет под названием Swift-Sublime-Пакет что мы должны установить через Пакетный контроль.
Его главный недостаток заключается в том, что это не самое интуитивно понятное приложение в мире, поэтому его использование предназначено особенно для самых продвинутых пользователей, поскольку оно способно повысить нашу производительность, как только нам удастся освоить его работу. Он имеет очень полезные функции, такие как определение стержней синтаксиса, выделение кода, выбор нескольких строк или выполнение разделенного редактирования и т. Д.
Visual Studio Code, возможность программирования Swift от Microsoft
У Microsoft также есть собственный редактор исходного кода под названием VS Code, который отвечает за совместимость с большим количеством языков программирования, таких как C #, C ++, HTML, Java, PHP, Python, SQL и также поддержка Swift за счет использования специального расширения. Он включает в себя списки завершения, справку по сигнатуре, фрагменты, краткую информацию и определение перехода. Чтобы работать в среде Swift, мы должны установить расширение для Swift в его палитре команд.
Этот бесплатный редактор имеет несколько интерактивных функций, таких как выделение синтаксиса и автозаполнение с помощью IntelliSense, которое предоставляет нам интеллектуальное завершение на основе типов переменных, определений импортированных функций и модулей, кода отладки, проверки различий и прямых фиксаций из редактора и т. Д. Кроме того, он включает встроенный элемент управления Git, подсветку синтаксиса, интеллектуальное завершение кода, фрагменты и рефакторинг кода.
Расписание в macOS
Xcode, инструмент, созданный Apple для разработки и компиляции
Не менее верно и то, что это непростое приложение и у него довольно высокая кривая обучения, но как только мы овладеваем им, мы получаем взамен очень мощный инструмент. Он также требует мощного компьютера и имеет проблемы с производительностью, поэтому он всегда был в поле зрения разработчиков. Кроме того, его использование стало практически необходимым, поскольку нам нужно, чтобы он мог компилироваться.
AppCode, специально разработанный для разработки на Swift
Сейчас мы говорим об IDE для разработки Swift, Objective-C, C и C + для iOS и macOS, построенной на платформе IntelliJ IDEA от JetBrains. Он выделяется рядом очень интересных функций. Например, пока мы пишем код, статический анализ или все поддерживаемые языки будут обрабатывать каждую ошибку или отображать предупреждение. По мере написания он также будет предлагать быстрые исправления. Мы сможем быстро переходить к любому классу, функции или символу в его кодировке, а также проверять только релевантное использование во время поиска.
Эта IDE поддерживает платформы XCTest, Quick, Kiwi, Catch, Boost.Test и Google Test. Предоставляет встроенное средство запуска тестов вместе с мощным пользовательским интерфейсом для исследования результатов тестирования. Кроме того, он включает единый интерфейс для самых популярных VCS, включая Subvercion, Git, GitHub, Mercurial и т. Д.
CodeRunner, легкая среда разработки для программирования с поддержкой Swift
Речь идет об облегченной среде IDE программирования для iOS и macOS, предназначенной для поддержки всех наиболее часто используемых языков программирования и мгновенного их выполнения. Приложение может запускать код на 25 языках, включая нечеткий поиск, заполнители с возможностью выбора табуляции и фрагменты документации. Он также имеет более 200 синтаксических режимов и множество расширенных функций редактирования.
С помощью этой IDE мы можем выполнять код на таких языках, как AppleScritpt, C, C #, Go, HTML, Java, JavaScript, PHP, Python и других. Это также позволяет нам добавить поддержку Swift. Кроме того, это позволяет нам запускать многофайловые проекты без необходимости ручной настройки.
Мы можем скачать CodeRunner из этой ссылке.
SCADE, программирование под Android и iOS
Мы можем скачать SCADE из здесь.
Как лучше всего программировать на Swift?
Как мы видим, у нас есть много возможностей для программирования на Swift, в основном в macOS, хотя мы также можем использовать некоторые многоплатформенные редакторы, так что можно будет программировать в Windows. Из всех доступных вариантов Xcode предлагает разработчикам все необходимое для создания приложений для Mac, IPad и iPhone. И дело в том, что это не только позволит нам программировать на Swift, но также станет возможным компилировать и отправлять наши приложения в App Store. Это то, что предлагают не все IDE, поэтому, безусловно, даже если мы воспользуемся другим из доступных вариантов в конце, нам придется пройти через Xcode.
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
Начать работу со Swift на Windows достаточно легко. Просто следуйте инструкциям из проекта //swift/build. Но нам требовалось нечто большее. Поскольку поддержка Windows всё ещё в разработке, постоянно возникала необходимость исследовать разнообразные проблемы в стандартных библиотеках, а иногда и в самом компиляторе. Нужен был инструмент, позволяющий собирать собственную версию Swift. И пересобирать какую-нибудь отдельно взятую часть. И так много, много раз.
Мы начали с довольно простого сборочного скрипта, основанного на Azure Pipelines compnerd`а. Со временем он превратился в гибкий инструмент, который позволяет регулярно получать свежие сборки Swift, следить за их состоянием, применять патчи, проводить эксперименты и так далее.
Сторонние модули
Модули на чистом Swift, такие как CryptoSwift и OAuthSwift, заработали практически без усилий.
Можно выделить несколько советов, которые помогут подготовить ваш код к сборке под Windows:
Достаточно очевидная рекомендация, ведь эти функции появились ещё в Swift 4.2. Должна быть веская причина, чтобы всё ещё пользоваться старым способом.
Система сборки
Сейчас 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.
Шалость удалась, мы сделали аддон для 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 не составит большого труда.