Краткий обзор языка Swift. Самый секретный проект Apple

Подборка курсов, сайтов и рассылок, которые помогут освоить Swift в течение месяца.

Я начал изучать Swift ровно 30 дней назад. Три дня назад моё приложение было утверждено Apple для бета-тестирования. Понятно, что бета ещё далеко не идеал, но для меня это было большим достижением.

У меня нет ни степени в области компьютерных наук, ни опыта работы разработчиком, но последние 5 лет я был продакт-менеджером в команде разработки ПО и писал Ruby on Rails приложения ради забавы. Мне хотелось быть более близким к тем вещам, с которыми я работаю, поэтому я начал кодить.

Почему я выбрал iOS и Swift?

Постоянный рост популярности мобильных приложений

Я хотел работать над тем, что нужно людям, и мне всегда нравилась близость со смартфонами у пользователей. Наши устройства знают о нас всё: когда мы просыпаемся и когда ложимся спать, где мы и как мы туда попали, наше расписание, наше отношение к друзьям и семье и многое другое, о чём не знает даже сам пользователь. Мне это нравится. А ещё, я уже давно являюсь поклонником Apple, так что это было естественно начать именно с iOS. Некоторое время я разбирался с Objective-C, мне не понравилось, и я решил изучать Swift.

Ограничения играют на пользу

Разработка приложений в рамках, заданных Apple, вполне доступна новичку и не сильно ограничивает возможности. Зато у меня не было соблазна отвлекаться на что-либо другое и вынуждало меня больше думать о UX.

Swift - быстроразвивающийся язык.

Мне нравится находиться у истоков, вместе расти и развиваться, по этой причине я предпочитаю работать в стартапах. Так и тут, Swift ещё не настолько популярен, и мне нравится быть вместе с сообществом единомышленников.

Ресурсы для начинающих

Когда я начал изучение, у меня была идея простенького приложения. Это помогло мне сохранить мотивацию и шаг за шагом изучать основы.

Я потратил кучу времени в поиске хороших ресурсов, инструкций и онлайн-курсов. Я нашёл много крутых вещей для начинающих, для тех, кто не видел ни строчки кода, и решил, что это будет слишком медленно. В то же время технические статьи и справочные материалы (в том числе от Apple) оказались рассчитаны на более опытных разработчиков.

В конце концов я нашёл золотую середину, ниже приведены материалы, которые я счёл наиболее полезными:

1. Стэнфордский курс Пола Хегарти «Разработка Swift приложений для iOS 8» .

Доступно бесплатно в iTunes U (в том числе на Windows). На просмотр первых пяти лекций и выполнение домашнего задания у меня ушло около недели. В процессе обучения я столкнулся с трудностями, и мне пришлось перейти к другим ресурсам. Тем не менее скоро я планирую продолжить обучение. А этот сайт поможет вам разобраться с тем, что вы не понимаете.

2. Курс от ВШЭ «Разработка iOS-приложений на языке Swift» .

Курс основан на книге «Swift: Programming Language» . Для обучения потребуется опыт разработки на любом языке программирования (хотя бы на уровне основ). В целом курс даёт хорошую подготовку для начала работы над своими приложениями.

3. RayWenderlich.com

Нет, это не чей-то персональный сайт. Это лучшее, что я когда-либо находил. Если вы только начинаете, советую подписаться на рассылку и воспользоваться учебником, размещённым на сайте. Благодаря ему я впервые узнал о странных вещах и нашёл, как с ними справляться. После прочтения приступайте к поиску идей. Если не получается - погуглите.

Мой тайм-план

Неделя 1. Я погрузился в лекции и задания Стэнфордского курса, параллельно читая книгу , на основе которой был создан курс ВШЭ, и изучая ресурсы RayWenderlich.com . В конце первой недели я решил, что готов к старту работы над приложением.

Недели 2 и 3. В это время я отправился в небольшое путешествие, в пути у меня не было доступа к интернету, и я заранее загрузил более 40 вкладок. Это дало мне возможность работать над приложением, не отвлекаясь. Каждой день я думал о том, как сделать его лучше.

Неделя 4. Я продолжал зачистку ненужного кода, рисовал логотип в Sketch и готовил приложение к отправке Apple на рассмотрение. Я получил ответ меньше, чем через сутки.

Я провел 15 часов, работая в Xcode, 3 часа в iOS эмуляторе, больше 4 часов ушло на чтение учебников и около часа на поиск ответов на Stack Overflow. Ещё кучу времени я был занят изучением материалов с помощью смартфона (это время я не считал).

Apple на открытии конференции разработчиков WWDC 2015 представила обновления своих ключевых платформ iOS 9 и OS X El Capitan. Но для разработчиков одним из самых важных анонсов стала вторая версия языка программирования . Крейг Федериги в ходе презентации продукта заявил, что Apple постаралась создать язык, который был бы избавлен от громоздкого наследия Objective-C. Swift был заложен в платформе NeXt, которая стала основой для OS X, а затем и iOS.

Swift – действительно удобный и мощный язык, который претендует не только на то, чтобы заменить Objective-C в экосистеме Apple, но и посягнуть на всё семейство C в целом. Блогер Антон Мухатаев, изучающий несколько языков программирования, пять преимуществ Apple Swift для начинающих пользователей. Среди них легко читаемый синтаксис, понятные конструкции, безопасность и нехватка опытных программистов на Swift.

1. По-настоящему опытных разработчиков на Swift до сих пор нет

Учиться и переучиваться приходится всем без исключения. Если вы займётесь Swift в 2015-м, то спустя сколько угодно лет будете отставать от самых опытных программистов в худшем случае на год. Преимущество опытных кодеров только в том, что Swift заимствует лучшие элементы других языков - тем, кто их знает, легче его освоить.

2. Это молодой язык программирования

В новых версиях Swift по-прежнему происходят фундаментальные изменения в синтаксисе и типах данных. Язык взрослеет на глазах, и так легче понимать логику перемен - а при желании можно и помочь в его доработке. Конечно, кто-то может назвать это недостатком, учитывая, что проекты, написанные на более старых версиях Swift, не работают на новых - но миграция занимает не так много времени, а синтаксис становится только проще.

3. Это безопасный язык программирования

В основе Swift - желание оставить как можно меньше уязвимостей и максимально обезопасить код от ошибок. Программист не обязан всё держать в голове и следить за всем. Это необходимо в C-подобных языках, и если раньше это было обоснованным, потому что они работали быстрее других, то Swift догоняет по производительности даже C++ - и ведь чем дальше, тем лучше он будет оптимизирован. Программист, который пишет код на Swift, лишён огромного количества головной боли, связанной с менеджментом памяти и другими вещами.

4. Легко читаемый синтаксис, вдохновленный Python и Ruby.

Swift – легко читаемый язык, как и Python. Основное отличие в том, что блоки отделяются не отступами, а фигурными скобками - так привычнее и удобнее.

5. Apple открывает исходный код Swift

Apple объявила на WWDC 2015, что до конца года Swift станет . Это значит не только то, что в его доработке Apple будет ещё сильнее опираться на сообщество разработчиков, но и то, что в потенциале он станет воистину мультиплатформенным, а не будет ограничиваться экосистемой Apple. Иначе говоря, если вы разрабатываете приложение на Swift для iOS, то есть перспектива того, что вы сможете перенести его на Android, и вам не нужно будет учить Java, используемый операционной системой Google.

Наконец, это красивый язык. Очень субъективно, конечно, но код на Swift выглядит красиво - чего не скажешь о том же Objective-C с его бесконечными нагромождениями. А главное, что красота и удобство не сказываются на мощности.

Руководство по языку программирования в iTunes, информация о языке есть и на сайте компании для разработчиков.

Swift - это невероятно мощный и простой язык программирования, представленный Apple в 2014 году, благодаря которому для многих программистов открывается возможность создания приложений для iOS, MacOS, Apple TV и Apple Watch. Данный язык унаследовал идеи от Objective-C, Rust, Haskell, Ruby, Python, C# и CLU. Он использует паттерны безопасного программирования и содержит новые функции, что позволяет сделать процесс программирования увлекательным и интересным. Созданный Крисом Латтнером, он вышел надежным, быстрым и открытым языком, благодаря чему стало еще проще создавать приложения для самого популярного телефона в мире.

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

Философия Swift

Основной философией языка является его простота, быстродействие и защищенность. Порог вхождения изменился в большую сторону, по сравнению с тем же Objective C - даже не зная каких либо других языков программирования или основ, можно смело приступать к изучению языка.

Apple максимально упростила язык для разработчиков: синтаксис стал чище, что повышает читаемость кода как опытного, так и начинающего программиста. Общее количество кода уменьшилось, в следствии чего повысилась производительность. Были полностью переработаны, переосмыслены и переписаны все методы, которые использовались в Objective C. Swift постоянно развивается и обновляется, что говорит о его надежности и нацеленности на будущее.

Где применяется Swift

Данный язык программирования разработчики используют для написания мобильных приложений для телефонов, умных часов и компьютеров компании Apple. Ходил даже слух, что Google хочет перенести Android полностью на Swift, всякое может быть. Это универсальный язык, который можно использовать в любой платформе от компании из Купертино.

Важным моментом является то, что осенью 2016 года Apple способствовала открытию центра обучения студентов, где каждый может учиться программированию приложений для iOS. Но это еще не все, в штатах Swift уже включен в учебную программу многих ведущих учебных учреждений. У этого языка программирования огромный потенциал.

Сложность обучения Swift

Swift является безопасным языком, который позволит огородить вас от большинства ошибок в процессе программирования. Он подскажет, где находится ошибка и почему не компилируется программа. Но с другой стороны, тут кроется жесткая типизация. Язык от Apple не прощает ошибок.

На данный момент существует небольшое количество документации, по сравнению с другими языками. Но это можно обусловить тем, что язык совсем недавно увидел свет и стал Open Source проектом, ведь на момент релиза его могли использовать только те разработчики, у которых была активная подписка Apple Developer Program.

Еще раньше можно было сказать, что Swift не очень популярен и для него существует малое количество сторонних библиотек и расширений, но сейчас это совершенно не так. На GitHub и просторах интернета находятся десятки отличных решений от сторонних разработчиков, которые помогут усовершенствовать Ваш проект.

Плюсы/минусы Swift

У этого современного и мощного языка программирования есть ряд преимуществ, которые выделяют его на фоне других или того же Objective-C. И это новые мощные языковые возможности, предельно строгая типизация данных, более лаконичный синтаксис, существенно более высокая производительность в операциях доступа к коллекциям (сортировка и поиск), поддержка определенного большинства современных синтаксических конструкций, существующих в других высокоуровневых языках программирования. И одной из главных особенностей Swift является то, что он имеет полную обратную совместимость с Objective-C. Таким образом это позволяет постепенно переписывать проекты с одного языка на другой, к тому же дает возможность использовать функционал Objective-C внутри самого Swift.

Одним из приятных моментов является Playground - это своего рода интерактивная песочница, где разработчик может написать код и сразу увидеть результат своих трудов. Это позволяет в несколько раз увеличить скорость написания основного когда, ведь написание отдельных кусков кода или алгоритмов теперь можно проводить в плейграунде с визуальной обратной связью, без рисков совершения ошибок в основном проекте.

Apple переработала множество вещей, благодаря чему мы получили практически новую развитую систему перечисления, эффективное управление аксессорами и оптимизированную автоматическую сборку мусора.

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

Сопутствующие технологии

Apple совершила переход от использования статических библиотек к динамическим и добавила этот функционал в свой язык программирования, что означает его более быстрое развитие, чем самой iOS. Теперь разработчики с легкостью могут представить свое приложение вместе с написанными ими библиотеками. Раньше требовалось ждать нового релиза iOS, но теперь ситуация изменилась. Динамические библиотеки предоставляют возможность для более гибких улучшений и изменений в коде, чем когда-либо.

Swift более функциональный и доступный язык, который как и Objective-C поддерживает официальные фреймворки Cocoa и Cocoa Touch. В сети доступно множество открытых проектов, в том числе от таких крупных компаний как Airbnb, которые позволяют использовать все современные методы и решения при написании кода.

Крис Латтнер потратил полтора года на создание нового языка программирования. В течение этого времени он не рассказывал о своей работе никому, даже в кругу близких друзей. Он начал работать летом 2010 года, посвящая этому делу ночи и выходные дни, и к концу следующего года он выработал основы будущего языка. Только после этого Крис открыл свою тайну внутри компании, топ-менеджеры которой были достаточно впечатлены, чтобы присоединить к проекту нескольких опытных инженеров. Еще через полтора года проект Латтнера попал в список главных направлений компании, а команда разработчиков существенно расширилась. Сегодня новый язык идет к тому, чтобы изменить мир компьютеров. Компания, в которой работает Крис Латтнер, называется Apple, а созданный им язык получил название Swift.

2 июня 2014 года на презентации WWDC язык Swift . Компания выпустила тестовую версию для сторонних разработчиков и программистов, позиционируя язык как более быстрый и эффективный способ создания программ для iPhone, iPad и Mac. Даже после того, как Крис Латтнер начал работу над Swift, информация об этом продукте шокировала всех, кроме ограниченного числа работников Apple. Даже люди, косвенно принимавшие участие в создании языка и помогавшие Крису, были сильно удивлены, узнав этим летом, над чем именно он работал.

Swift захватывает аудиторию

Обычно новому языку требуется несколько лет после появления, для того чтобы набрать какую-то аудиторию. Это правило действует даже для таких крупных компаний, как Apple. Хорошим примером является компания Google с языком Go, представленным еще в 2009 году. Над Go работали самые светлые умы мира разработки ПО, Кен Томпсон и Роб Пайк, однако и по сей день прикладываются немалые усилия, чтобы у языка появились последователи. Но Swift – это зверь другой породы. Ожидается, что после того, как язык будет официально выпущен осенью этого года, он наберет аудиторию с беспрецедентной скоростью и превзойдет по степени поглощения такие языки, как Java и C# в 1990 году и начале 2000-х.

Чем можно объяснить такие оптимистичные предположения? Фактически Swift создан для среднестатистического программиста. На языке можно писать даже самые простые приложения, а наделенный довольно умными инструментами, язык предлагает эффективный способ учиться написанию самостоятельно. Но главная причина будущей популярности языка кроется в другом. Сотни тысяч разработчиков сегодня создают приложения для устройств Apple, используя Objective-C. Устройства Apple пользуются большой популярностью, а значит эти разработчики продолжат создавать для них приложения, но уже на Swift, так как он значительно лучше и эффективнее Objective-C.

«Не было никакого реального стимула использовать Google Go» — говорит Пол Янсен, который отслеживал прогресс различных языков программирования в течение около пятнадцати лет. «Swift отличается наличием стимула».

Сегодня на GitHub, популярном хранилище разработок с открытым исходным кодом, более 2400 проектов используют Swift. Стоит при этом помнить, что на данный момент язык доступен лишь ограниченному числу программистов.

Преимущества перед Objective-C

Чтобы отказаться от языка, на котором уже написано несколько продуктов, и начать учить новый, программистам нужны действительно веские основания. Переобучение требует времени и усилий, и на сегодняшний день Крис Латтнер – единственный человек с четырехлетним опытом программирования на Swift. Однако эти самые веские основания уже представлены.

Не то чтобы Swift значительно привлекательнее других языков, таких как C#, Ruby или Python, Swift значительно привлекательнее Objective-C, который сложно назвать современным языком. Синтаксис Swift более привычный. Также язык содержит несколько инструментов защиты от ошибок и багов. Swift лучше понимает действия автора кода и делает его работу эффективнее, позволяя делать больше за меньшее количество времени. Но самым интересным аспектом языка считаются так называемые Игровые площадки.

Игровые площадки

Игровые площадки призваны сделать программирование более интерактивным и доступным. Смысл в том, что когда программист пишет код на одной половине экрана, на другой половине он видит результат. Таким образом, можно в реальном времени наблюдать за созданием программы. Когда программист вносит изменения в код, они также вносятся в запущенную версию программы, что избавляет от необходимости повторных компиляций и перезапуска.

Такой подход к написанию кода не только облегчит работу программисту, он изменит то, как мы воспринимаем программирование, возведя его на совершенно новый уровень понимания. Крис Латтнер также надеется, что сделав написание кода более понятным и веселым, он поможет пересмотреть метод преподавания информатики сегодня.

Больше чем язык

Крис Латтнер, создатель Swift, курирует все инструменты разработчиков Apple. Все, с помощью чего создаются программы для телефонов, планшетов и компьютеров Apple, как сторонними разработчиками, так и инженерами компании. Будучи аспирантом университета штата Иллинойс, он создал своего рода средства для разработчика под названием LLVM, которые сегодня лежат в основе Xcode.

Apple использовала LLVM для того, чтобы изменить способ использования Objective-C при создании приложений. Это случилось после того, как Латтнер присоединился к Apple в 2005 году, а спустя пять лет он использовал LLVM в качестве основы для Swift. Эти два продукта специально были созданы для работы в тандеме. Другими словами, Swift – это не просто язык, это язык, который тесно связан со всем, что требуется разработчику для работы. Сюда входит не только интегрированная среда разработки, но и многие другие инструменты, которые уже знакомы каждому разработчику Apple, например отладчик. Иными словами, есть причины, по которым десятки тысяч программистов уже должны писать приложения на Swift.

Скорость

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

Apple не первая компания, которая выходит на этот ринг. На нем уже есть , Google и Mozilla. В некоторых смыслах языки этих компаний зашли гораздо дальше, так как уже используются для внутренней работы. Более того, большинство из них с открытым кодом, что делает их распространение проще среди других компаний. Apple известна своим жестким контролем над собственными продуктами, и на данный момент исходный код закрыт, что может, например, затруднять создание кросс-платформенных программ. Однако есть мнение, что в конце концов исходный код Swift будет открыт.

Независимо от того, будет ли исходный код Swift открытым или нет, ему прогнозируют небывалую популярность и скорость распространения. Уникальность языка, а также популярность продукции Apple, вне всяких сомнений, сделают свое дело.

По материалам Wired

Последнее обновление: 25.12.2017

Устройства компании Apple являются признанным лидером в сфере информационных технологий. По последним данным доля iOS среди других мобильных операционных систем колеблется в районе 15-20%, а доля Mac OSX среди настольных систем составляет по разным данным 15-20%. Подобное широкое распространение устройств от компании Apple рождает потребность в программном обеспечении для этих устройств.

Традиционно основным языком программирования под iOS и MacOS был Objective-C, однако 2 июня 2014 года на конференции разработчиков Apple WWDC 2014 был представлен новый и более удобный язык программирования - Swift. По сравнению с Objective-C Swift обладает следующими особенностями:

    Swift является чистым объектно-ориентированным языком программирования

    Простота, ясный и четкий синтаксис

    Строгая типизированность. Каждая переменная имеет определенный тип

    Автоматическое управление памятью

Однако при этом Swift полностью совместим с ранее написанными прикладными интерфейсами Cocoa API, для которых использовались C и Objective-C.

При этом Swift продолжает развиваться. 19 сентября 2017 года вышла версия 4.0, которая добавила новые возможности для разработки под iOS и Mac OS. В принципе каждый год выходят новые версии.

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

Что нужно для разработки для iOS?

В первую очередь необходима соответствующая операционная система Mac OS 10.12 Yosemite или выше. Без Mac OS практически невозможно скомпилировать программу. Данное обстоятельство сильно ограничивает возможности разработки, учитывая тот факт, что Mac OS может гарантированно работать лишь на компьютерах самой компании Apple (iMac, MacBook, MacBook Air, MacBook Pro), а также учитывая высокую стоимость этих самых компьютеров. Однако на обычном PC под управлением ОС Windows или ОС на базе Linux создавать приложения под iOS и Mac OS практически невозможно.

Существуют также варианты с виртуальными машинами, на которые установлена Mac OS, либо использование Хакинтош, однако работоспособность подобных вариантов не гарантирована.

Есть и еще один вариант - написание кода в любой доступной операционной системе и компиляция его с помощью специальных сервисов за определенную плату иди бесплатно. Но, понятное дело, что комфортабельность подобного подхода очень низка.

Непосредственно для самой разработки нам потребуются инструменты языка Swift, текстовый редактор для написания кода, симуляторы iPhone и iPad для отладки приложения. Для всех этих и многих других функций разработки Apple предоставляет бесплатную среду разработки XCode.

Нужны ли реальные устройства iPhone или iPad для тестирования разрабатываемых приложений? По большому счету нет, так как XCode предоставляет симуляторы для тестирования, однако в некоторых отдельных случаях предпочтительнее тестировать на реальном смартфоне.

Регистрация разработчика

И также непосредственно перед тем, как приступить к созданию приложений, необходимо зарегистрироваться в центре Apple для разработчиков. Для этого надо пройти по ссылке https://developer.apple.com/register/ :

Для регистрации надо будет войти на сайт с помощью своего идентификатора Apple ID и пароля. Если вдруг такого идентификатора у вас нет, то можно создать новую учетную запись, перейдя по ссылке Create Apple ID . После регистрации сайт перенаправит на страницу , где можно найти различные материалы по разработке для самых разных аспектов.