Swift: что это за язык программирования
На чём разрабатывают приложения для iPhone и как этому научиться.
Иллюстрация: Оля Ежак для Skillbox Media
Приложения для всех устройств Apple разрабатывают в основном на Swift. Это молодой, но мощный язык программирования. Его синтаксис прост, как у Python, но под капотом скрывается сила Objective-C. В этой статье разберёмся с особенностями Swift и напишем на нём первые программы.
Содержание
Где и для чего используется Swift
Swift — язык программирования для разработки приложений под iOS, iPadOS, macOS, watchOS и tvOS. С недавнего времени в экосистеме Apple появилась VR-гарнитура Vision Pro — приложения для неё также пишут на Swift.
Большинство популярных приложений в App Store написаны на Swift. Этот язык программирования даёт максимально возможный контроль над устройствами Apple, поэтому в сообществе разработчиков считается стандартом.
Инженеры компании поняли, что язык получился мощным и быстрым, а потому постепенно расширяют область применения. Например, уже сейчас на Swift можно писать бэкенд приложений или игры для консоли Playdate, а во время WWDC24 анонсировали использование языка для программирования IoT-устройств.
Что было до Swift
Swift представили в 2014 году во время очередной летней презентации WWDC. Тогда вице-президент по разработке программного обеспечения Apple Крейг Федериги анонсировал современный язык программирования. Новинку приняли скептически — разработчики не понимали, зачем им менять привычный стек.
До этого приложения для экосистемы Apple разрабатывались на Objective-C — языке программирования от Apple родом из 1983 года. Его разработали на базе популярного в то время C, а архитектуру сделали максимально подходящей под macOS. Время шло, в мире появились iPhone и iPad, а на Objective-C разрабатывать приложения становилось всё сложнее.
Objective-C унаследовал все плюсы и минусы C. Он был быстрым и давал программистам возможность работы с памятью, однако и без того громоздкий синтаксис с каждым годом становился всё сложнее. Сторонним компаниям нужны были разработчики под iOS, но обучать кадры работе с Objective-C было сложно и дорого.
Именно поэтому в 2010 году в Apple решили изобрести новый язык программирования. Во время работы над Swift инженеры компании позаимствовали лучшие решения из Objective-C, Python, Rust, C#, Ruby и других языков программирования.
Первая версия языка стала доступна в 2014 году, а уже спустя год представили обновление с доработками, которые предложило сообщество. Актуальная версия языка на момент выхода статьи — Swift 5.10, однако в феврале 2024 года Apple анонсировала Swift 6.0.
В чём сила Swift
У Swift, как и у любого другого языка, есть отличительные характеристики:
- Открытый. Код самого языка программирования и всех необходимых инструментов для компиляции, отладки и сборки проектов открыт. Исходники опубликованы на GitHub, а это значит, что любой разработчик может изучить архитектуру Swift и предложить изменения. Если они окажутся полезными, то сообщество проголосует за включение их в основную версию.
- Компилируемый. Исходный код проектов на Swift компилируется в машинный код. Это повышает скорость работы и позволяет по максимуму использовать вычислительные возможности устройств Apple. При этом есть песочница, в которой можно писать код и не компилировать проект при каждом запуске.
Читайте также:
- Мультипарадигменный. В Swift есть всё необходимое как для функционального программирования, так и для объектно-ориентированного. Это даёт разработчикам возможность не привязываться к определённому подходу и использовать язык для решения разных задач.
- Безопасный. Swift умеет обрабатывать большинство распространённых ошибок. Например, если использовать неправильные типы данных для переменных, то компилятор предупредит об этом программиста.
- Дружелюбный для новичков. Синтаксис Swift получился довольно простым для начинающих. В философии языка заложено, что лучший вариант кода для решения задачи — самый простой и очевидный.
Плюсы и минусы
Плюсы
- Производительность. Инженеры Apple разрабатывали новый язык на основе C-подобного предшественника. Большое внимание уделяли производительности и экономии ресурсов. Этого удалось добиться благодаря компилируемому коду.
- Совместимость с Objective-C. У Swift есть обратная совместимость с Objective-C, а это значит, что в современных проектах можно использовать устаревшие, но надёжные библиотеки. А ещё это упрощает миграцию на новый язык программирования.
- Активное развитие. Каждый год разработчики Apple выпускают обновления, добавляют новые возможности и поддерживаемые платформы.
Минусы
- Молодой язык. Каждый год для Swift появляются новые инструменты, библиотеки и API. Нюанс в том, что программистам надо постоянно следить за обновлениями и учиться, чтобы поддерживать необходимый уровень знаний для разработки современных приложений.
- Меньше библиотек. В экосистеме Swift всё ещё мало инструментов и библиотек, поэтому многие решения приходится писать с нуля. Таких проблем нет при использовании более популярных Python и JavaScript.
- Фокус на Apple. Инженеры Apple пытаются вывести язык на новый уровень и найти ему применение в новых областях. Несмотря на это, Swift всё ещё востребован исключительно в разработке под «яблочную» экосистему. Пока сложно представить, что крупная компания откажется, например, от Java на бэкенде и перейдёт на Swift.
- Маленькое сообщество. Программистов, пишущих на Swift, довольно мало, поэтому иногда в Сети бывает сложно найти ответы на специфические вопросы.
- Высокий порог входа. Для программирования на языке от Apple нужен компьютер от Apple. Это усложняет вход в разработку на Swift.
Пишем код
Рассмотрим несколько примеров кода на Swift, чтобы оценить синтаксис языка и его возможности. Если вы знаете, к примеру, Python, то быстро разберётесь с простыми программами на Swift.
🛠️ Технические детали
Если вы захотите запустить примеры кода из статьи, но у вас нет компьютера на macOS, то используйте для этого онлайн-компилятор Programiz. А чтобы запустить код в Xcode, надо создать «Инструмент командной строки»:
- Запустите Xcode и в приветственном меню выберите пункт Create New Project.
- В открывшемся окне переключитесь на вкладку macOS и в разделе Applications выберите Command Line Tool. Нажмите Next.
- Введите имя проекта и снова нажмите Next.
- Переключитесь на файл main.swift — в нём мы и будем писать код. Проект запускается с помощью кнопки Start в левом верхнем углу, а терминал открывается по нажатию иконки в правом нижнем углу.
Hello, World!
По традиции выведем в консоль фразу Hello, World!. Для этого вызовем функцию print(), а в качестве аргумента передадим строку с нашей фразой, перед этим обязательно обернув её в кавычки:
Персонализированное приветствие
Со всем миром поздоровались, теперь поприветствуем каждого пользователя лично. Для этого напишем функцию, которая будет получать имя пользователя и выводить персональное сообщение:
Результат работы программы выглядит следующим образом:
Проверка на чётность
Теперь поупражняемся с числами — разработаем функцию, которая принимает на вход пользовательское число и определяет, чётное оно или нет.
Так функция работает на разных типах данных:
Салют, Swift: пишем первый проект
Пришло время создать первый проект на Swift — напишем полноценную игру «Угадай число» для терминала. Компьютер будет загадывать случайное число от 1 до 100, а пользователь — пытаться угадать. Игра завершится, как только в терминале появится правильный ответ.
Для начала импортируем модуль Foundation, без которого не будут работать функции стандартной библиотеки Swift. После этого объявим функцию guessNumberGame — в ней реализуем игровой цикл:
Объявим константу targetNumber, в которую запишем случайное число от 1 до 100. После выведем в терминал сообщение для пользователя с правилами игры и создадим переменную guess, в которой будем хранить текущую попытку игрока:
В главном цикле будем считывать ввод пользователя из терминала и сравнивать со сгенерированным числом. Если число не подходит, то выводим подсказку, а если всё правильно — поздравление и выходим из цикла. В конце обязательно делаем проверку, чтобы игрок вводил именно числа, а не слова:
В конце вызываем функцию guessNumberGame:
Полностью код игры выглядит следующим образом:
А так игра работает в терминале:
Что нужно новичку
Для поэтапного изучения лучше воспользоваться готовым гайдом, книгой или планом. Например, подойдёт дорожная карта iOS-разработчика от авторов проекта Roadmap.sh.
Компьютер от Apple
Для разработки на Swift надо обзавестись компьютером от Apple. Во время обучения сгодится простой MacBook со вторичного рынка, но лучше обратить внимание на модели 2020 года и новее. Этого хватит, чтобы познакомиться с основами языка и поработать над первыми проектами. Для серьёзной разработки надо будет обновить устройство на более производительное — желательно на процессоре M1, с минимум 16 ГБ оперативной памяти и 512 ГБ постоянной. Среда разработки для Swift очень «прожорливая», поэтому лучше заранее позаботиться о вычислительных ресурсах.
Если хочется сэкономить, то стоит присмотреться к Mac mini. Это компактные настольные компьютеры Apple, которые продаются без монитора, клавиатуры и мышки. Их можно докупить отдельно, выбирая бюджетные варианты. Благодаря этому Mac mini обходится дешевле сопоставимого по мощности MacBook. Главный минус такого решения — отсутствие мобильности. Уйти поработать, скажем, в кафе с таким сетапом будет весьма проблематично :)
Если вы пока не знаете, подходит ли вам Swift, можно попробовать его в онлайн-компиляторе. Такое решение не подойдёт для разработки полноценных приложений, но им можно воспользоваться для знакомства с синтаксисом. Есть бесплатные сервисы Programiz и SwiftFiddle.
Читайте также:
Xcode
Xcode — интегрированная среда разработки на Swift. В ней программисты пишут код, тестируют и собирают проекты. На данный момент альтернатив нет, хотя раньше компания JetBrains поддерживала среду AppCode. Проект закрыли спустя некоторое время из-за низкой популярности среди сообщества.
Xcode можно скачать в App Store. Будьте готовы к тому, что IDE может выдавать ошибки или странно себя вести. Не пугайтесь, что в App Store у официальной среды разработки на Swift низкий рейтинг. Это также связано с ошибками и часто непредсказуемым результатом работы.
Swift Playgrounds
Swift Playgrounds — приложение для iPad и Mac, предназначенное для изучения Swift и разработки под iOS. В программе обучения есть модули по основам языка программирования, работе с данными, сетью и популярными библиотеками.
Весь процесс обучения подаётся в игровой форме, чтобы материал легче усваивался. А ещё все уроки бесплатные, но на английском языке.
Главный плюс Swift Playgrounds в том, что в приложении есть редактор кода и компилятор, который запускается на iPad. Поэтому научиться разработке под iOS можно даже на недорогом планшете от Apple.
Ресурсы для изучения
Первый и самый важный источник знаний каждого разработчика на Swift — официальная документация от инженеров Apple. В ней максимально подробно описаны все особенности языка и функции библиотек. Для разработчиков, которые знают другие языки программирования, есть быстрый экскурс в особенности Swift. У документации есть русскоязычный перевод, но он актуален для Swift 5.5. Некоторые конструкции языка могут отличаться, поэтому надо сверяться с официальной документацией.
Также разработчики Apple подготовили специальную страницу для тех, кто изучает Swift. На ней собрали ссылки на все материалы, которые могут пригодиться: от кода до дизайна интерфейсов.
Для любителей челленджей в Сети есть бесплатная программа обучения 100 days of Swift. Каждый день предлагается изучать одну тему, решать по ней задачки и тратить на это всего час свободного времени. Главное условие: делиться результатами в социальных сетях. Автор курса считает, что даже самый занятой человек сможет найти один час на программирование, а необходимость ежедневного постинга будет мотивировать не бросать изучение.
На ютуб-канале проекта freeCodeCamp есть семичасовой видеокурс для начинающих. В нём разбираются все темы, необходимые для перехода к разработке iOS-приложений.
Среди русскоязычных авторов чаще всего встречается Василий Усов с уже ставшей классикой книгой «Swift. Основы разработки приложений под iOS, iPadOS и macOS». На сайте книги доступны тесты и задания для самостоятельной проверки пройденного материала.
Дополнительные библиотеки и софт
Если вы твёрдо решили, что хотите стать iOS-разработчиком, то одного Swift будет мало для создания современных приложений для экосистемы Apple. Надо изучать дополнительные библиотеки и инструменты:
- UIKit и SwiftUI. Для разработки интерфейсов мобильных приложений в экосистеме Swift есть фреймворки UIKit и SwiftUI. Последний актуальнее и востребованнее на рынке, все новые приложения сразу пишут на нём. Однако надо уметь работать и с UIKit, так как ещё не все компании успели переехать.
- Figma и Sketch. Скорее всего, вы будете верстать экраны приложений по макетам дизайнеров, поэтому надо хотя бы базово уметь работать с Figma и Sketch. Это программы, в которых отрисовывают макет приложения и передают его программистам.
- Core Data и SwiftData — фреймворки для работы с базами данных на iOS и macOS. SwiftData более современный и пока используется не везде.
- Системы контроля версий. Сразу учитесь работать с Git, так как чаще всего именно эту систему контроля версий используют в командах разработки.
Читайте также:
- CocoaPods и Swift Package Manager — менеджеры зависимостей и сторонних библиотек. Оба инструмента используются одинаково часто, поэтому надо уметь работать с каждым.
- App Store Connect. Спустя какое-то время у вас начнут появляться первые приложения, которыми захочется поделиться. Для публикации в магазине приложений Apple надо научиться работать с программой App Store Connect.
Заключение
- Swift — открытый, компилируемый, мультипарадигменный язык программирования со строгой типизацией, представленный Apple в 2014 году.
- Его используют для разработки приложений под устройства экосистемы Apple, также на нём можно писать бэкенд и прошивки для IoT-устройств.
- У Swift относительно простой синтаксис, который легко освоить новичку, однако для разработки серьёзных приложений надо знать много фундаментальных вещей, например ООП, способы управления памятью и принципы сборки проектов с большим количеством файлов.
- Xcode — интегрированная среда разработки для Swift. В ней есть все необходимые инструменты для компиляции кода, отладки и сборки приложений.
- Для комфортного программирования на Swift нужен Mac.
- Простые скрипты можно запускать в онлайн-компиляторах или на iPad.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!