$ sudo teach IT

Зачем нужен ещё один язык программирования

Если вы никогда раньше не писали код — это нормальное состояние для старта, и весь этот курс рассчитан именно на него. Начнём с главного вопроса: что вообще такое Swift и зачем компания Apple в 2014 году придумала свой язык, если их программисты и так десятилетиями писали на Objective-C.

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

Чем Swift отличается от Objective-C

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

Ключевое отличие — строгая типизация. В Objective-C легко было положить в переменную не то значение и узнать об этом только когда приложение уже упало у пользователя. В Swift компилятор заранее знает тип каждого значения — число это, текст или дата — и не даст скомпилировать код, где типы не совпадают. Это называют type safety, безопасностью типов: множество ошибок находится на этапе сборки программы, а не во время её работы.

Второе отличие — работа с отсутствием значения. В старых языках было классическое понятие «пустого» указателя, обращение к которому роняло программу. В Swift для этого есть отдельный механизм — Optional, значение, которое явно помечено как «может быть, а может и не быть». Подробно об этом поговорим позже, когда дойдём до опционалов, но сама идея — компилятор заставляет вас подумать о пустом случае заранее, а не когда уже поздно — стоит на месте с первого дня.

Где реально работает Swift

Самое известное применение — приложения для устройств Apple: iPhone и iPad (платформа iOS и iPadOS), компьютеры Mac (macOS), умные часы Apple Watch (watchOS) и приставки для телевизора Apple TV (tvOS). Современный интерфейс для всех этих приложений чаще всего строят на SwiftUI — декларативном фреймворке, где вы описываете, как экран должен выглядеть, а не как рисовать его пиксель за пикселем. Здесь мы только называем его: до самого SwiftUI в этом курсе не дойдём, это тема отдельного курса про разработку приложений.

Но применение Swift не ограничено техникой Apple. Есть серверный Swift — на нём пишут веб-серверы и API, которые обрабатывают запросы точно так же, как это делают серверы на других языках, и работают на обычных Linux-машинах в дата-центрах, без единого устройства Apple рядом. А ещё есть Embedded Swift — специальный режим языка для крошечных встраиваемых устройств вроде микроконтроллеров, где ресурсов памяти и процессора в тысячи раз меньше, чем в телефоне.

Такой разброс возможен потому, что сам язык — это набор правил о том, как записывать инструкции для компьютера, а не «привязка» к конкретному экрану или устройству. Всё, что относится именно к экранам и кнопкам iPhone, живёт в отдельных фреймворках поверх языка.

Почему для этого курса Mac не нужен

Здесь важно разделить два разных навыка. Первый — понимать сам язык Swift: переменные, условия, циклы, функции, типы данных. Этому можно учиться на любом компьютере — Windows, Linux, macOS — и даже без установки чего-либо на свой компьютер, прямо в браузере, в песочнице на этом сайте. Компилятор Swift работает и на Linux, поэтому язык как таковой никак не привязан к технике Apple.

Второй навык — собирать настоящие приложения под iPhone, Mac или Apple Watch с их экранами, кнопками и магазином приложений. Вот для этого действительно нужен компьютер Mac и среда разработки Xcode, которая работает только на macOS. Это осознанное ограничение Apple, а не техническая случайность.

Этот курс учит именно языку, поэтому Mac вам не понадобится ни на одном уроке: весь код вы будете писать и запускать в песочнице на сайте. Сборку приложений под устройства Apple мы оставляем отдельному курсу, который выходит позже и рассчитан уже на владельцев Mac.

Какая версия Swift и зачем это знать

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

Частые ошибки

На старте у новичков обычно возникает несколько похожих заблуждений, и лучше сразу их снять.

  • «Swift — это то же самое, что SwiftUI». Нет: Swift — язык программирования, а SwiftUI — один из фреймворков, написанных на этом языке, для построения интерфейса. Язык можно изучать без единой строчки SwiftUI.
  • «Раз Swift от Apple, без Mac и iPhone учить его бессмысленно». Это не так — язык и его стандартная библиотека работают на Linux и в браузерной песочнице, изучать логику языка можно на любом железе.
  • «Swift и Objective-C — это просто два названия одного и того же». Это разные языки с разным синтаксисом; Objective-C старше и менее строг к типам, современные проекты Apple пишут в основном на Swift.
  • «Раз есть строгая типизация, ошибки в коде вообще исключены». Строгая типизация исключает только определённый класс ошибок — несовпадение типов и часть ошибок с пустыми значениями. Логические ошибки — например неверная формула — компилятор не поймает никогда.

Итоги урока

  • Swift — язык программирования общего назначения от Apple, представленный в 2014 году как замена Objective-C.
  • Главное отличие от Objective-C — строгая система типов (type safety): многие ошибки компилятор находит до запуска программы.
  • Swift применяется не только в приложениях для iPhone, iPad, Mac, Apple Watch и Apple TV, но и на сервере, и во встраиваемых устройствах через Embedded Swift.
  • Современный интерфейс приложений Apple обычно строят на SwiftUI — до него в этом курсе доходить не будем.
  • Для изучения самого языка компьютер Mac не нужен: весь код курса выполняется в песочнице на сайте.
  • Сборка приложений под устройства Apple с помощью Xcode требует Mac — это тема отдельного курса, который будет позже.
  • Актуальная версия языка на момент курса — Swift 6.3.

Куда ведёт этот курс

Здесь мы занимаемся самим языком, и Mac для этого не нужен: код вы пишете и запускаете прямо на сайте. Но язык — только половина дела. Приложение с окнами, меню и настройками собирается на SwiftUI, а SwiftUI работает исключительно на Mac.

Если Mac у вас есть, продолжений уже два, и выбирать стоит по тому, что хочется выпустить. Курс Приложения для iPhone и Apple Watch на SwiftUI — 48 уроков про экраны телефона: навигация и вкладки, списки и формы, виджеты и уведомления, приложение-компаньон для часов; сами iPhone и Apple Watch не нужны, всё проходится на симуляторах. Курс Приложения для macOS на SwiftUI — 64 урока про настольное приложение: окна и меню, боковая панель, значок в строке меню, оформление в Liquid Glass и выпуск. Если Mac нет — спокойно проходите этот курс: выученный язык останется с вами и в серверном Swift.

Проверьте себя

4 вопроса