Эта статья была рецензирована Адрианом Санду и Марком Таулером . Спасибо всем рецензентам SitePoint за то, что сделали контент SitePoint как можно лучше!
Я взволнован Swift по причинам, о которых я расскажу позже, но в основном это энтузиазм, который он привлек. Менее чем за шесть месяцев, вот статистика проекта GitHub.
Я знаю, что статистика GitHub не всегда свидетельствует о чем-то, но, тем не менее, эти цифры впечатляют.
На прошлой неделе я выступил с докладом на фантастическом MDevCon в Амстердаме о прошлом, настоящем и будущем Swift. Несмотря на некоторые технические проблемы, она была хорошо принята и казалась хорошей темой для превращения в статью, так что вот она!
Я начну с путешествия на 30 лет назад к 1980-м годам.
Прошлое — Objective-C, Наследие Свифта
Брэд Кокс и Том Лав были первыми создателями Objective-C в начале 1980-х. Они хотели добавить концепты объектно-ориентированного программирования в C и были вдохновлены популярным в то время языком Smalltalk .
В 1988 году NeXT решил лицензировать Objective-C для создания своей усовершенствованной операционной системы NeXTSTEP .
NeXT не был таким успешным, но их программные инструменты были достаточно популярны, и их наследие остается в форме их основателя, Стива Джобса, и некой другой компании, которую он основал.
В 1997 году Apple приобрела NeXT, и в рамках соглашения Стив Джобс вернулся на пост генерального директора, положив начало второй жизни (тогда) борющейся компании с такими продуктами, как iMac, iPod и, конечно, iPhone.
В 2001 году Apple выпустила первую версию Mac OS X , значительно отличающуюся от предыдущих версий Mac OS. В то время я работал над поддержкой Mac (ах, в те дни, когда ОС 7-9), и, поверьте мне, OS X была страшной .
Остатки NeXTSTEP есть везде в OS X, и официальным языком разработки был Objective-C. Некоторые распространенные библиотеки, которые мы все еще используем, такие как Cocoa, App Kit и Foundation Kit, принадлежат NeXTSTEP, им 30 лет.
Когда в 2007 году появилась iOS (затем iPhone OS), она также использовала Objective-C и поделилась некоторыми из тех же библиотек с OS X.
Перенесемся в WWDC в 2014 году, и Apple объявила, что по прошествии более 30 лет настало время, чтобы Objective-C был постепенно удален и заменен новым, более современным и подходящим языком. Это, конечно, был Свифт .
Для этого долгосрочного пользователя Apple Свифт представляет один из первых случаев, когда Apple слушала то, о чем просили люди, тем самым предлагая что-то гораздо более привлекательное, чем некоторые другие их инструменты. Открытый поиск и создание других версий языка для платформы было еще одним шагом Apple. В сочетании с активным сообществом, я думаю, в этом сила Свифта.
Настоящее — что возможно с Swift
Поддержка Linux была доступна с первого дня Open Sourcing of Swift, и, основываясь на моих экспериментах, она работает хорошо.
Дистрибутивов пока нет, но установка проста:
wget https://swift.org/builds/swift-2.2-branch/ubuntu1404/xxx.tar.gz
tar -xvf xxx.tar.gz
sudo apt-get install clang
export PATH=/home/vagrant/xxx/usr/bin:"${PATH}"
Замена значений соответствующими именами файлов и путями. Swift постоянно развивается, как и версии и имена файлов.
Скомпилируйте и запустите любой файл Swift, например:
swiftc helloworld.swift
./helloworld
Компилятор Linux обеспечивает поддержку наиболее важных функций (помните, что это сервер, а не мобильное устройство) и до сих пор кажется производительным и стабильным.
Если продолжить работу на стороне сервера Swift, уже появились две платформы. Perfect ( уже описанный в SitePoint ) обеспечивает простой обмен между сервером и клиентом, тогда как Vapor — это основанная на Rails / Laravel инфраструктура MVC для веб-приложений Swift.
Для улучшения поддержки кроссплатформенного Swift появилось несколько инструментов, в том числе:
iOS против Swift
Важно отметить, что Swift не равен iOS. Swift включает в себя:
- составитель
- Стандартная библиотека
- Наложения SDK
- дебаггер
Он не включает (и никогда не будет) каких-либо специфических для iOS библиотек. Во-первых, потому что они являются интеллектуальной собственностью, а во-вторых, потому что они не имеют отношения к кроссплатформенному языку. Библиотеки iOS в основном имеют отношение к устройствам iOS, и хотя я являюсь сторонником открытого кода, я понимаю, почему они могут не стоить открытого ПО.
Swift активно поддерживается Apple, но является внешней основой и сообществом. Веб- сайт swift.org содержит информацию, списки рассылки и рекомендации сообщества для тех, кто хочет узнать больше.
Будущее
Версия 3 и дальше
Будущие цели Swift сосредоточены на стабильности и кроссплатформенности, для версии 3 это включает в себя:
- Основные улучшения библиотеки
- Прощай, пространство имен
NS
- Усовершенствования двоичного интерфейса приложений (ABI), то есть интерфейса между библиотеками и операционной системой хоста.
- Устойчивость и Переносимость
- Согласованность и консолидация кода и стандартов.
И в какой-то момент в будущем:
- Тестовые модули, чтобы разработчики могли помещать тестовые папки в проекты Swift.
- Совместимость C ++, позволяющая использовать устаревший и нативный код.
- Swift в настоящее время использует библиотеки уровня ОС для параллельной обработки и нуждается в собственном собственном параллелизме.
Все планы и предложения по функциям Swift являются общедоступными, поэтому для получения более подробной информации по этим и другим вопросам, которые могут возникнуть, посетите хранилище Swift Evolution .
Windows и Android
Большой вопрос в том, какие другие платформы будет поддерживать Swift? Я поймал себя на мысли, что, поскольку Android имеет ядро Linux, тогда будет не слишком сложно запускать приложения Swift?
Первый вопрос — деловой. Что Google, Microsoft и Apple могут получить, заставляя приложения Swift работать на Android и Windows? Я чувствую, что Windows более вероятна, так как Microsoft была неожиданно открыта для идей в последнее время.
Если вы счастливы пока игнорировать «нативный» аспект, то есть варианты для написания Swift, которые будут работать на Mac OS X, Windows, iOS и Android. Это Fire / Silver от Elements Compiler и CLion от JetBrains, которые поддерживают Swift (с плагином) и код C ++ / C. Эти IDE компилируют код на родной язык целевой платформы, который никогда не был наиболее эффективной стратегией, но этот вариант работает, и я его протестировал.
Если вы хотите использовать другой подход, то подкрепление Swift C / C ++ может помочь. Если на вашей платформе есть компилятор C (включая Android NDK ), то теоретически можно просто заставить проект Swift компилировать на любой платформе. Я наткнулся на этот многообещающий пост в блоге, в котором рассказывалось о запуске Swift на Android, и он показался мне разумным, но процесс перестал работать для меня примерно на полпути. Это было связано с развивающейся природой NDK и Swift, но шаги примерно следуют этому процессу:
- Скомпилируйте объектный файл из кода Swift.
- Свяжите объект с соответствующей архитектурой процессора и определениями библиотеки.
- Создайте машинный код из шага 2.
- Упакуйте полученный файл в приложение для Android, используя общие библиотеки, код NDK и C.
- Прибыль?
То же самое относится и к компиляции кода Swift для Windows, но единственная публикация, в которой я обнаружил, что даже была рассмотрена возможность этого, был комментарием о переполнении стека, в котором говорится, что, поскольку вы можете запускать Objective-C в Windows, Swift может быть возможен.
Все это прочно внутри Зачем?
территория, но как разработчики мы часто любим экспериментировать и раздвигать границы, чтобы посмотреть, возможно ли это. Официально ли поддерживаются Windows и Android, пока неизвестно, но пока что сходите с ума и посмотрите, что вы можете получить, работая.
Вывод
Надеюсь, вам понравилась эта поездка, и вы наткнулись на полосу памяти, чтобы осмотреть текущий пейзаж Свифта и посмотреть на бурный горизонт. После обсуждения нескольких тематических вопросов самое время вспомнить, почему я считаю Swift классным и почему вы должны попробовать его. У Swift есть заинтересованный покровитель с глубокими карманами и восторженное, отзывчивое сообщество. Swift дружественен к разработчикам, с современными парадигмами и соображениями и частично кроссплатформенен.
Если вы пользователь Linux или Mac, разрабатываете для iOS или нет, посетите swift.org, чтобы начать.