Статьи

Прошлое, настоящее и будущее Swift

Эта статья была рецензирована Адрианом Санду и Марком Таулером . Спасибо всем рецензентам 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 была страшной .

Mac OS X 10.0

Остатки 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 появилось несколько инструментов, в том числе:

  • swiftenv : менеджер среды Swift, как pyenv .
  • swifter : базовый HTTP-сервер, написанный на 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, но шаги примерно следуют этому процессу:

  1. Скомпилируйте объектный файл из кода Swift.
  2. Свяжите объект с соответствующей архитектурой процессора и определениями библиотеки.
  3. Создайте машинный код из шага 2.
  4. Упакуйте полученный файл в приложение для Android, используя общие библиотеки, код NDK и C.
  5. Прибыль?

То же самое относится и к компиляции кода Swift для Windows, но единственная публикация, в которой я обнаружил, что даже была рассмотрена возможность этого, был комментарием о переполнении стека, в котором говорится, что, поскольку вы можете запускать Objective-C в Windows, Swift может быть возможен.

Все это прочно внутри Зачем? территория, но как разработчики мы часто любим экспериментировать и раздвигать границы, чтобы посмотреть, возможно ли это. Официально ли поддерживаются Windows и Android, пока неизвестно, но пока что сходите с ума и посмотрите, что вы можете получить, работая.

Вывод

Надеюсь, вам понравилась эта поездка, и вы наткнулись на полосу памяти, чтобы осмотреть текущий пейзаж Свифта и посмотреть на бурный горизонт. После обсуждения нескольких тематических вопросов самое время вспомнить, почему я считаю Swift классным и почему вы должны попробовать его. У Swift есть заинтересованный покровитель с глубокими карманами и восторженное, отзывчивое сообщество. Swift дружественен к разработчикам, с современными парадигмами и соображениями и частично кроссплатформенен.

Если вы пользователь Linux или Mac, разрабатываете для iOS или нет, посетите swift.org, чтобы начать.