На этом уроке вы узнаете о происхождении Swift и некоторых его основных синтаксических элементах.
Чему Ты Научишься
- Почему Swift - отличный язык для изучения
- Как использовать Xcode playgrounds для запуска Swift-кода
Словарь
Связанные Ресурсы
Руководство по языку программирования Swift: О Swift на русском языке
Немного истории
На Всемирной конференции разработчиков Apple 2014 Apple представила Swift как современный язык для написания приложений для iOS и macOS. Теперь у Apple есть новые платформы, включая watchOS и tvOS, которые также используют Swift в качестве основного языка программирования.
С 1990-х годов большинство разработчиков писали приложения для платформ Apple на Objective-C, языке, построенном поверх языка программирования C. Objective-C более 30 лет, а C - более 40 лет. Оба языка хорошо послужили сообществу разработчиков программного обеспечения. Они не исчезнут в обозримом будущем.
Однако Objective-C может быть сложным в освоении. Поскольку в последние годы технологии развивались так быстро, Apple увидела возможность создать более современный язык, который было бы легче выучить и легче читать, писать и поддерживать.
По мере изучения Swift вы можете увидеть влияние на него наследия C и Objective-C.
Современный язык
Что такое современный язык? Это тот, который безопасен, быстр и выразителен. Когда Apple разрабатывала Swift, эти три основные цели лежали в основе каждого решения. Изучая концепции программирования в Swift, вы поймете, как каждое решение указывает на безопасность, скорость и ясность.
Некоторые из особенностей, которые делают Swift современным языком, включают:
- Чистый синтаксис, который делает код читаемым и более удобным для работы.
- Опционалы, новый способ выражения, когда значение может отсутствовать.
- Вывод типов, который ускоряет разработку и позволяет компилятору помогать выявлять общие проблемы.
- Безопасность типов, которая обеспечивает код, менее подверженный аварийным сбоям программы.
- Автоматический подсчет ссылок (ARC) для управления памятью, который автоматически решает некоторые из более сложных технических задач нативного программирования.
- Кортежи и множественные возвращаемые значения, которые позволяют небольшим блокам кода выполнять больше задач.
- Дженерики, которые помогают разработчикам писать код, применимый в различных сценариях.
- Быстрая и лаконичная итерация по коллекциям, делающая Swift быстрым языком.
- Структуры, поддерживающие методы, расширения и протоколы, которые позволяют Swift оптимизировать использование памяти и скорость, обеспечивая при этом гибкость для разработчиков.
- Функции map, filter, reduce и другие функциональные программные паттерны, которые упрощают код и оптимизируют выполнение общих действий, ранее требовавших нескольких строк кода.
- Мощная обработка ошибок, которая помогает разработчику писать меньше ошибок и лучше обрабатывать сценарии, которые могли бы вызвать сбои приложений или непредсказуемую работу.
На данный момент вы, вероятно, не знакомы с большинством концепций из списка. Все в порядке. А пока просто осознайте, что они делают Swift отличным языком для создания приложений. По мере прохождения этого курса вы узнаете, что означает каждая из этих функций и какое отношение она имеет к написанию безопасного, быстрого и выразительного кода.
Безопасный язык
Ряд уже упомянутых особенностей делает Swift безопасным языком, помогая вам писать код, который с меньшей вероятностью приведет к сбою вашего приложения. Компьютерные программы очень буквальны, и поэтому код, написанный для одного, может не справляться с другим. Безопасность типов заставляет вас явно указывать «тип» каждого объекта, который вы создаете, манипулируете и назначаете, и позволяет писать только тот код, который данный объект может обработать. Это предотвращает написание кода, который может привести к сбою, если он не предназначен для работы с «типами» объектов, на которые вы ссылаетесь. Вывод типов аналогичным образом позволяет компилятору выводить тип объекта, экономя ваше время и снова обеспечивая, что компилятор может применять правильные правила относительно того, какие операции и функции могут быть выполнены с каждым типом.
Опционалы несколько уникальны для Swift и позволяют лучше выражать, когда значение может отсутствовать. Это помогает вам обеспечить, что ваш код может справиться как со сценариями, когда значения существуют, так и с теми, когда их нет. Swift также обеспечивает сложную обработку ошибок, что, как следует из названия, позволяет вам писать код, который может элегантно и просто обрабатывать ошибки.
Открытый исходный код
В декабре 2015 года Apple выпустила язык Swift и вспомогательные ресурсы на GitHub в качестве проекта с открытым исходным кодом. Открытый исходный код может означать многое. Самый важный момент, который нужно понять, - это то, что язык с открытым исходным кодом разрабатывается открыто, при участии и поддержке сообщества. Каждый желающий может внести свой вклад или просто следовать за нами.
Открытая разработка означает, что Swift развивается и совершенствуется. Со временем синтаксис может измениться, и будет добавлена поддержка для большего количества платформ, в том числе для обеспечения более быстрой технологии в Linux. Теперь, когда вы изучаете Swift, вы можете быть уверены, что ваши знания будут становиться все более и более ценными по мере дальнейшего совершенствования языка и расширения его использования на платформах Apple и за ее пределами.
Для получения дополнительной информации о том, как следовать или участвовать в создании языка Swift, посетите домашнюю страницу проекта по адресу Swift.org.
Привет, Мир
Когда вы начинаете с нового языка программирования, это освященная веками традиция - создавать приложение "Hello, world!", одну из самых простых программ, которые вы можете написать на любом языке. Все, что делает эта программа, - это выводит на экран "Hello, world!".
Код Swift записывается в виде обычных текстовых файлов с расширением .swift. Каждая строка в файле представляет собой инструкцию, а программа состоит из одной или нескольких инструкций. Это инструкции, которые вы хотите, чтобы ваше приложение запускалось. Как правило, код выполняется, начиная с верхней части файла, и продвигается к нижней части файла.
Как вы узнаете, вы можете контролировать, выполняются ли определенные разделы кода с помощью инструкций потока управления (if, else), сколько раз они выполняются с использованием циклов (for-in, while) и как использовать данные, которые могут быть переданы в разные инструкции.
Некоторые программы состоят из миллионов инструкций, разбросанных по тысячам и тысячам файлов. Компилятор делает код исполняемым, объединяя все файлы в программу.
Но пока давайте не будем усложнять.
В Swift файл по умолчанию называется main.swift. Любой Swift-код, включенный в main.swift, будет выполняться сверху вниз.
Итак, как бы вы написали приложение “Hello, world!” на Swift?
print(”Hello, world!”)
Как вы могли догадаться из приведенного выше кода, print() - это функция (меньшая единица кода, выполняющая определенную задачу), которая принимает немного текста, называемый строкой (String), и выводит его на консоль.
Консоль - это средство ввода текста и отображения для системного администрирования. Десятилетия назад все компьютерные взаимодействия осуществлялись через консоли или интерфейсы командной строки. Сегодня у нас есть графические пользовательские интерфейсы для большинства задач, но разработчики по-прежнему используют консоль для выполнения многих задач программирования или администрирования. Фактически, почти в каждой используемой вами системе есть скрытая консоль, доступ к которой вы можете получить даже при использовании графического интерфейса.
Терминал
Как вы получаете доступ к консоли? macOS поставляется с консольным приложением Terminal, а Swift поставляется с инструментом REPL, который расшифровывается как Read, Eval, Print Loop. REPL позволяет вводить простые команды, оценивать их и выводить результат.
Используйте Swift REPL в консоли, чтобы написать свою первую программу “Hello, world!”.
- Откройте приложение терминала на вашем компьютере Mac. Вы можете выполнить поиск “Терминал” в Spotlight или найти приложение в папке system Applications/Utilities.
- Войдите в Swift REPL, набрав swift и нажав Return.
- Введите команду print(”Hello, world!”) и нажмите Return, чтобы выполнить ее.
Обратите внимание, что “Hello, world!” было напечатано на экране прямо под вашей командой print. Если вы совершенно новичок в программировании, возможно, это первый раз, когда вы когда-либо предоставляли компьютеру письменные инструкции для его выполнения. Поздравляю!
Теперь вы можете выйти из Swift REPL и терминала, выполнив следующие действия:
- Введите :quit и нажмите Return, чтобы выйти из Swift REPL.
- Выйдите из терминала.
Песочница (Playground)
Одним из самых важных новшеств, анонсированных вместе с Swift, стали песочницы (playgrounds), особый тип документа в Xcode, который выполняет код Swift в простом формате с легко видимыми результатами.
Работа в песочницах предпочтительнее работы в REPL по многим причинам. Для начала, они делают написание кода Swift веселым и простым. Используя более привычный интерфейс, вы можете ввести строку кода, и результаты сразу появятся в боковой панели. Если ваш код выполняется в течение некоторого времени, вы можете наблюдать за его прогрессом на временной шкале.
Песочницы также могут быть чрезвычайно полезными для разработчиков Swift. Они позволяют легко управлять большим количеством кода в одном месте и видеть несколько результатов в боковой панели результатов. Разработчики часто используют песочницы для прототипирования своего кода Swift, а затем перемещают его в проект Xcode после тестирования. На техническом уровне песочница представляет собой файл-оболочку вокруг основного файла main.swift. Каждый раз, когда вы редактируете код, песочница запускает результаты. Вы можете включать дополнительные файлы и ресурсы, что вы и сделаете в будущей деятельности.
Чтобы просмотреть результаты, напечатанные вашим кодом на Swift, вы можете открыть область отладки консоли в песочнице. 1
Помните, что каждый раз, когда вы редактируете код Swift, код выполняется сверху вниз. Для каждого выражения результаты отображаются в правой части. 2
Чтобы просмотреть результаты, которые “богаче”, чем обычный текст, который вы видите на боковой панели или в области отладки, вы можете использовать инструмент быстрого просмотра Quick Look.
Чтобы просмотреть более подробную информацию в строке, 1 вы можете использовать кнопку "Показать результаты" 2
Теперь приступим к созданию вашего первого "Hello, world!" с использованием песочницы Xcode.
- Откройте Xcode.
- Создайте новый файл playground, выбрав в строке меню File > New > Playground.
- Выберите платформу iOS и шаблон Blank.
- Назовите свою песочницу “Hello, world!” и сохраните её в папку с ресурсами курса.
Вы заметили, что playground по умолчанию поставляется с инструкцией import и переменной var greeting = “Hello, playground”? Откройте боковую панель результатов (если она еще не отображается) и обратите внимание, что строковое значение печатается на боковой панели.
Инструкция import UIKit позволяет вам использовать что-либо из фреймворка UIKit. Это станет более важным по мере того, как вы будете проходить лабораторные работы в этом курсе. Обычно вы должны оставлять инструкцию import во всех своих playground.
5. Ранее, используя Swift REPL, вы написали print("Hello, world!"), чтобы вывести "Hello, world!" на консоль. Попробуйте сделать это в песочнице. Начните новую строку и введите print("Hello, world!"). Теперь вы должны увидеть "Hello, world!" в боковой панели результатов и в отладочной консоли.
Что происходит в этой песочнице? Код var greeting = "Hello, playground" в шаблоне файла песочницы создал переменную с именем greeting и присвоил ей строку текста, содержащую "Hello, playground". Поскольку значение greeting является строкой (String), вы можете передать это значение в функцию print, так же как вы сделали с "Hello, world!".
6. Обновите ваш код, чтобы вывести переменную greeting вместо текста "Hello, world!", заменив "Hello, world!" на greeting.
Пауза на мгновение и подумайте, почему это работает. Функция print принимает параметр типа String и выводит его на консоль. Оба этих примера работают, потому что "Hello, world!" является строкой, и greeting — это переменная, которая содержит строку.
В следующем уроке вы узнаете больше о строках и переменных.
Отрывок из книги
Develop in Swift Fundamentals
Apple Education
https://books.apple.com/ru/book/develop-in-swift-fundamentals/id1581182804