Урок 1.2 Введение в Swift и Песочница

Урок 1.2 Введение в Swift и Песочница

На этом уроке вы узнаете о происхождении 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!”.

  1. Откройте приложение терминала на вашем компьютере Mac. Вы можете выполнить поиск “Терминал” в Spotlight или найти приложение в папке system Applications/Utilities.
  2. Введите Swift REPL, набрав swift и нажав Return.
  3. Введите команду print(”Hello, world!”) и нажмите Return, чтобы выполнить ее.

Обратите внимание, что “Hello, world!” было напечатано на экране прямо под вашей командой print. Если вы совершенно новичок в программировании, возможно, это первый раз, когда вы когда-либо предоставляли компьютеру письменные инструкции для его выполнения. Поздравляю!

Теперь вы можете выйти из Swift REPL и терминала, выполнив следующие действия:

  1. Введите :quit и нажмите Return, чтобы выйти из Swift REPL.
  2. Выйти из терминала.

Песочница

Одной из самых важных вещей, анонсированных в Swift, является playgrounds, специальный тип документа кода, который запускает код Swift в простом формате с легко видимыми результатами.

Работа на playgrounds предпочтительнее работы в REPL по многим причинам. Во-первых, они делают написание кода Swift увлекательным и простым. Используя более знакомый интерфейс, вы можете ввести строку кода, и результаты сразу же появятся на боковой панели. Если ваш код выполняется в течение определенного периода времени, вы можете следить за ходом выполнения на временной шкале.

Playgrounds также могут быть чрезвычайно полезны для разработчиков Swift. Они позволяют легко управлять большим количеством кода в одном месте и просматривать несколько результатов на боковой панели результатов. Разработчики часто используют playgrounds для создания прототипов своего кода Swift, а затем после тестирования переносят его в проект Xcode.


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


Чтобы просмотреть распечатанные результаты вашего кода Swift, вы можете открыть область консоли отладки на playground.   1  
Помните, что каждый раз, когда вы редактируете код Swift, код выполняется сверху вниз. Для каждого выражения результаты отображаются в правой части.   


Чтобы просмотреть результаты, которые “богаче”, чем обычный текст, который вы видите на боковой панели или в области отладки, вы можете использовать инструмент быстрого просмотра.


Чтобы просмотреть более подробную информацию в строке,   1   вы можете использовать кнопку "Показать результаты"   


Теперь идите и создайте свой первый “Hello, world!”, используя игровую площадку Xcode.

  1. Откройте Xcode.
  2. Создайте новый файл playground, выбрав в строке меню File > New > Playground.
  3. Выберите платформу iOS и пустой шаблон.
  4. Назовите свою игровую площадку “Hello, world!” и сохраните ее в папке ресурсов вашего курса.

Вы заметили, что playground по умолчанию поставляется с инструкцией import и переменной var greeting = “Hello, playground”? Откройте боковую панель результатов (если она еще не отображается) и обратите внимание, что строковое значение печатается на боковой панели.

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

5. Ранее, используя Swift REPL, вы написали print(”Hello, world!”), чтобы вывести “Hello, world!” на консоль. Попробуйте сделать это сейчас на playground. Начните новую строку и введите print(”Hello, world!”).

Теперь вы должны увидеть “Hello, world!” на боковой панели результатов и в консоли отладки.

Что происходит на этой playground? Код var greeting = “Hello, playground” в шаблоне файла playground создал переменную с именем greeting и установил ее равной строке текста, содержащей “Hello, playground”. Поскольку значение приветствия представляет собой строку, вы можете передать это значение функции печати точно так же, как вы это сделали с “Hello, world!”. Поскольку значение greeting представляет собой строку (String), вы можете передать это значение функции печати (print) точно так же, как вы это сделали с “Hello, world!”

6. Обновите свой код, чтобы напечатать переменную greeting вместо текста “Hello, world!”, заменив на “Hello, world!” с greeting.

Остановитесь на мгновение и подумайте, почему это работает. Функция print принимает строковый параметр String и выводит его на консоль. Оба этих примера работают, потому что “Hello, world!” - это String, а greeting - это переменная, содержащая строку String.

Вы узнаете больше о строках и переменных в следующем уроке.


Отрывок из книги
Develop in Swift Fundamentals
Apple Education
https://books.apple.com/ru/book/develop-in-swift-fundamentals/id1581182804

Information

Apple, the Apple logo, Apple Books, Apple TV, Apple Watch, Cocoa, Cocoa Touch, Finder, Handoff, HealthKit, iPad, iPad Pro, iPhone, iPod touch, Keynote, Mac, macOS, Numbers, Objective-C, Pages, Photo Booth, Safari, Siri, Spotlight, Swift, tvOS, watchOS, and Xcode are trademarks of Apple Inc., registered in the U.S. and other countries. App Store and iBooks Store are service marks of Apple Inc., registered in the U.S. and other countries. ​
The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by Apple is under license. ​
IOS is a trademark or registered trademark of Cisco in the U.S. and other countries and is used under license. ​
Other product and company names mentioned herein may be trademarks of their respective companies.