1 added
1 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>8 июл 2024</li>
2
<ul><li>8 июл 2024</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>На чём разрабатывают приложения для iPhone и как этому научиться.</p>
4
</ul><p>На чём разрабатывают приложения для iPhone и как этому научиться.</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6
<p>Автор статей о программировании, технологиях и гаджетах. Пишет код на JavaScript и Python. Любит веб-технологии, модные приложения и магию Apple.</p>
6
<p>Автор статей о программировании, технологиях и гаджетах. Пишет код на JavaScript и Python. Любит веб-технологии, модные приложения и магию Apple.</p>
7
<p>Приложения для всех устройств Apple разрабатывают в основном на Swift. Это молодой, но мощный язык программирования. Его синтаксис прост, как у Python, но под капотом скрывается сила Objective-C. В этой статье разберёмся с особенностями Swift и напишем на нём первые программы.</p>
7
<p>Приложения для всех устройств Apple разрабатывают в основном на Swift. Это молодой, но мощный язык программирования. Его синтаксис прост, как у Python, но под капотом скрывается сила Objective-C. В этой статье разберёмся с особенностями Swift и напишем на нём первые программы.</p>
8
<p><strong>Содержание</strong></p>
8
<p><strong>Содержание</strong></p>
9
<ul><li><a>Где и для чего используется Swift</a></li>
9
<ul><li><a>Где и для чего используется Swift</a></li>
10
<li><a>Что было до Swift</a></li>
10
<li><a>Что было до Swift</a></li>
11
<li><a>В чём сила Swift</a></li>
11
<li><a>В чём сила Swift</a></li>
12
<li><a>Плюсы и минусы</a></li>
12
<li><a>Плюсы и минусы</a></li>
13
<li><a>Пишем код</a></li>
13
<li><a>Пишем код</a></li>
14
<li><a>Салют, Swift: пишем первый проект</a></li>
14
<li><a>Салют, Swift: пишем первый проект</a></li>
15
<li><a>Что нужно новичку</a></li>
15
<li><a>Что нужно новичку</a></li>
16
</ul><p><strong>Swift</strong> - язык программирования для разработки приложений под iOS, iPadOS, macOS, watchOS и tvOS. С недавнего времени в экосистеме Apple появилась VR-гарнитура Vision Pro - приложения для неё также пишут на Swift.</p>
16
</ul><p><strong>Swift</strong> - язык программирования для разработки приложений под iOS, iPadOS, macOS, watchOS и tvOS. С недавнего времени в экосистеме Apple появилась VR-гарнитура Vision Pro - приложения для неё также пишут на Swift.</p>
17
<p>Большинство популярных приложений в App Store написаны на Swift. Этот язык программирования даёт максимально возможный контроль над устройствами Apple, поэтому в сообществе разработчиков считается стандартом.</p>
17
<p>Большинство популярных приложений в App Store написаны на Swift. Этот язык программирования даёт максимально возможный контроль над устройствами Apple, поэтому в сообществе разработчиков считается стандартом.</p>
18
<p>Инженеры компании поняли, что язык получился мощным и быстрым, а потому постепенно расширяют область применения. Например, уже сейчас на Swift можно писать бэкенд приложений или<a>игры</a>для консоли Playdate, а во время WWDC24<a>анонсировали</a>использование языка для программирования IoT-устройств.</p>
18
<p>Инженеры компании поняли, что язык получился мощным и быстрым, а потому постепенно расширяют область применения. Например, уже сейчас на Swift можно писать бэкенд приложений или<a>игры</a>для консоли Playdate, а во время WWDC24<a>анонсировали</a>использование языка для программирования IoT-устройств.</p>
19
<p>Swift представили в 2014 году во время очередной летней презентации WWDC. Тогда вице-президент по разработке программного обеспечения Apple Крейг Федериги анонсировал современный язык программирования. Новинку приняли скептически - разработчики не понимали, зачем им менять привычный стек.</p>
19
<p>Swift представили в 2014 году во время очередной летней презентации WWDC. Тогда вице-президент по разработке программного обеспечения Apple Крейг Федериги анонсировал современный язык программирования. Новинку приняли скептически - разработчики не понимали, зачем им менять привычный стек.</p>
20
Крейг Федериги презентует Swift в 2014 году<em>Кадр:<a>TWiT Tech Podcast Network</a>/ YouTube</em><p>До этого приложения для экосистемы Apple разрабатывались на Objective-C - языке программирования от Apple родом из 1983 года. Его разработали на базе популярного в то время C, а архитектуру сделали максимально подходящей под macOS. Время шло, в мире появились iPhone и iPad, а на Objective-C разрабатывать приложения становилось всё сложнее.</p>
20
Крейг Федериги презентует Swift в 2014 году<em>Кадр:<a>TWiT Tech Podcast Network</a>/ YouTube</em><p>До этого приложения для экосистемы Apple разрабатывались на Objective-C - языке программирования от Apple родом из 1983 года. Его разработали на базе популярного в то время C, а архитектуру сделали максимально подходящей под macOS. Время шло, в мире появились iPhone и iPad, а на Objective-C разрабатывать приложения становилось всё сложнее.</p>
21
<p>Objective-C унаследовал все плюсы и минусы C. Он был быстрым и давал программистам возможность работы с памятью, однако и без того громоздкий синтаксис с каждым годом становился всё сложнее. Сторонним компаниям нужны были разработчики под iOS, но обучать кадры работе с Objective-C было сложно и дорого.</p>
21
<p>Objective-C унаследовал все плюсы и минусы C. Он был быстрым и давал программистам возможность работы с памятью, однако и без того громоздкий синтаксис с каждым годом становился всё сложнее. Сторонним компаниям нужны были разработчики под iOS, но обучать кадры работе с Objective-C было сложно и дорого.</p>
22
<p>Именно поэтому в 2010 году в Apple решили изобрести новый язык программирования. Во время работы над Swift инженеры компании позаимствовали лучшие решения из Objective-C, Python, Rust, C#, Ruby и других языков программирования.</p>
22
<p>Именно поэтому в 2010 году в Apple решили изобрести новый язык программирования. Во время работы над Swift инженеры компании позаимствовали лучшие решения из Objective-C, Python, Rust, C#, Ruby и других языков программирования.</p>
23
<p>Первая версия языка стала доступна в 2014 году, а уже спустя год представили обновление с доработками, которые предложило сообщество. Актуальная версия языка на момент выхода статьи -<a>Swift 5.10</a>, однако в феврале 2024 года Apple<a>анонсировала</a>Swift 6.0.</p>
23
<p>Первая версия языка стала доступна в 2014 году, а уже спустя год представили обновление с доработками, которые предложило сообщество. Актуальная версия языка на момент выхода статьи -<a>Swift 5.10</a>, однако в феврале 2024 года Apple<a>анонсировала</a>Swift 6.0.</p>
24
<p>У Swift, как и у любого другого языка, есть отличительные характеристики:</p>
24
<p>У Swift, как и у любого другого языка, есть отличительные характеристики:</p>
25
<ul><li><strong>Открытый.</strong>Код самого языка программирования и всех необходимых инструментов для компиляции, отладки и сборки проектов открыт. Исходники опубликованы на <a>GitHub</a>, а это значит, что любой разработчик может изучить архитектуру Swift и предложить изменения. Если они окажутся полезными, то сообщество проголосует за включение их в основную версию.</li>
25
<ul><li><strong>Открытый.</strong>Код самого языка программирования и всех необходимых инструментов для компиляции, отладки и сборки проектов открыт. Исходники опубликованы на <a>GitHub</a>, а это значит, что любой разработчик может изучить архитектуру Swift и предложить изменения. Если они окажутся полезными, то сообщество проголосует за включение их в основную версию.</li>
26
</ul>Организация разработчиков языка Swift на GitHub<em>Скриншот:<a>SwiftLang</a>/ GitHub / Skillbox Media</em><ul><li><strong>Компилируемый.</strong>Исходный код проектов на Swift компилируется в машинный код. Это повышает скорость работы и позволяет по максимуму использовать вычислительные возможности устройств Apple. При этом есть песочница, в которой можно писать код и не компилировать проект при каждом запуске.</li>
26
</ul>Организация разработчиков языка Swift на GitHub<em>Скриншот:<a>SwiftLang</a>/ GitHub / Skillbox Media</em><ul><li><strong>Компилируемый.</strong>Исходный код проектов на Swift компилируется в машинный код. Это повышает скорость работы и позволяет по максимуму использовать вычислительные возможности устройств Apple. При этом есть песочница, в которой можно писать код и не компилировать проект при каждом запуске.</li>
27
</ul><ul><li><strong>Мультипарадигменный.</strong>В Swift есть всё необходимое как для функционального программирования, так и для объектно-ориентированного. Это даёт разработчикам возможность не привязываться к определённому подходу и использовать язык для решения разных задач.</li>
27
</ul><ul><li><strong>Мультипарадигменный.</strong>В Swift есть всё необходимое как для функционального программирования, так и для объектно-ориентированного. Это даёт разработчикам возможность не привязываться к определённому подходу и использовать язык для решения разных задач.</li>
28
<li><strong>Безопасный.</strong>Swift умеет обрабатывать большинство распространённых ошибок. Например, если использовать неправильные типы данных для переменных, то компилятор предупредит об этом программиста.</li>
28
<li><strong>Безопасный.</strong>Swift умеет обрабатывать большинство распространённых ошибок. Например, если использовать неправильные типы данных для переменных, то компилятор предупредит об этом программиста.</li>
29
<li><strong>Дружелюбный для новичков.</strong>Синтаксис Swift получился довольно простым для начинающих. В философии языка заложено, что лучший вариант кода для решения задачи - самый простой и очевидный.</li>
29
<li><strong>Дружелюбный для новичков.</strong>Синтаксис Swift получился довольно простым для начинающих. В философии языка заложено, что лучший вариант кода для решения задачи - самый простой и очевидный.</li>
30
</ul><ul><li><strong>Производительность.</strong>Инженеры Apple разрабатывали новый язык на основе C-подобного предшественника. Большое внимание уделяли производительности и экономии ресурсов. Этого удалось добиться благодаря компилируемому коду.</li>
30
</ul><ul><li><strong>Производительность.</strong>Инженеры Apple разрабатывали новый язык на основе C-подобного предшественника. Большое внимание уделяли производительности и экономии ресурсов. Этого удалось добиться благодаря компилируемому коду.</li>
31
<li><strong>Совместимость с Objective-C.</strong>У Swift есть обратная совместимость с Objective-C, а это значит, что в современных проектах можно использовать устаревшие, но надёжные библиотеки. А ещё это упрощает миграцию на новый язык программирования.</li>
31
<li><strong>Совместимость с Objective-C.</strong>У Swift есть обратная совместимость с Objective-C, а это значит, что в современных проектах можно использовать устаревшие, но надёжные библиотеки. А ещё это упрощает миграцию на новый язык программирования.</li>
32
<li><strong>Активное развитие.</strong>Каждый год разработчики Apple выпускают обновления, добавляют новые возможности и поддерживаемые платформы.</li>
32
<li><strong>Активное развитие.</strong>Каждый год разработчики Apple выпускают обновления, добавляют новые возможности и поддерживаемые платформы.</li>
33
</ul><ul><li><strong>Молодой язык.</strong>Каждый год для Swift появляются новые инструменты, библиотеки и API. Нюанс в том, что программистам надо постоянно следить за обновлениями и учиться, чтобы поддерживать необходимый уровень знаний для разработки современных приложений.</li>
33
</ul><ul><li><strong>Молодой язык.</strong>Каждый год для Swift появляются новые инструменты, библиотеки и API. Нюанс в том, что программистам надо постоянно следить за обновлениями и учиться, чтобы поддерживать необходимый уровень знаний для разработки современных приложений.</li>
34
<li><strong>Меньше библиотек.</strong>В экосистеме Swift всё ещё мало инструментов и библиотек, поэтому многие решения приходится писать с нуля. Таких проблем нет при использовании более популярных Python и JavaScript.</li>
34
<li><strong>Меньше библиотек.</strong>В экосистеме Swift всё ещё мало инструментов и библиотек, поэтому многие решения приходится писать с нуля. Таких проблем нет при использовании более популярных Python и JavaScript.</li>
35
<li><strong>Фокус на Apple.</strong>Инженеры Apple пытаются вывести язык на новый уровень и найти ему применение в новых областях. Несмотря на это, Swift всё ещё востребован исключительно в разработке под "яблочную" экосистему. Пока сложно представить, что крупная компания откажется, например, от Java на бэкенде и перейдёт на Swift.</li>
35
<li><strong>Фокус на Apple.</strong>Инженеры Apple пытаются вывести язык на новый уровень и найти ему применение в новых областях. Несмотря на это, Swift всё ещё востребован исключительно в разработке под "яблочную" экосистему. Пока сложно представить, что крупная компания откажется, например, от Java на бэкенде и перейдёт на Swift.</li>
36
<li><strong>Маленькое сообщество.</strong>Программистов, пишущих на Swift, довольно мало, поэтому иногда в Сети бывает сложно найти ответы на специфические вопросы.</li>
36
<li><strong>Маленькое сообщество.</strong>Программистов, пишущих на Swift, довольно мало, поэтому иногда в Сети бывает сложно найти ответы на специфические вопросы.</li>
37
<li><strong>Высокий порог входа.</strong>Для программирования на языке от Apple нужен компьютер от Apple. Это усложняет вход в разработку на Swift.</li>
37
<li><strong>Высокий порог входа.</strong>Для программирования на языке от Apple нужен компьютер от Apple. Это усложняет вход в разработку на Swift.</li>
38
</ul><p>Рассмотрим несколько примеров кода на Swift, чтобы оценить синтаксис языка и его возможности. Если вы знаете, к примеру, Python, то быстро разберётесь с простыми программами на Swift.</p>
38
</ul><p>Рассмотрим несколько примеров кода на Swift, чтобы оценить синтаксис языка и его возможности. Если вы знаете, к примеру, Python, то быстро разберётесь с простыми программами на Swift.</p>
39
<p><strong>?️ Технические детали</strong></p>
39
<p><strong>?️ Технические детали</strong></p>
40
<p>Если вы захотите запустить примеры кода из статьи, но у вас нет компьютера на macOS, то используйте для этого онлайн-компилятор<a>Programiz</a>. А чтобы запустить код в Xcode, надо создать "Инструмент командной строки":</p>
40
<p>Если вы захотите запустить примеры кода из статьи, но у вас нет компьютера на macOS, то используйте для этого онлайн-компилятор<a>Programiz</a>. А чтобы запустить код в Xcode, надо создать "Инструмент командной строки":</p>
41
<ul><li>Запустите Xcode и в приветственном меню выберите пункт Create New Project.</li>
41
<ul><li>Запустите Xcode и в приветственном меню выберите пункт Create New Project.</li>
42
</ul><em>Скриншот:<a>Xcode</a>/ Skillbox Media</em><ul><li>В открывшемся окне переключитесь на вкладку macOS и в разделе Applications выберите Command Line Tool. Нажмите Next.</li>
42
</ul><em>Скриншот:<a>Xcode</a>/ Skillbox Media</em><ul><li>В открывшемся окне переключитесь на вкладку macOS и в разделе Applications выберите Command Line Tool. Нажмите Next.</li>
43
</ul><em>Скриншот:<a>Xcode</a>/ Skillbox Media</em><ul><li>Введите имя проекта и снова нажмите<em>Next</em>.</li>
43
</ul><em>Скриншот:<a>Xcode</a>/ Skillbox Media</em><ul><li>Введите имя проекта и снова нажмите<em>Next</em>.</li>
44
</ul><em>Скриншот:<a>Xcode</a>/ Skillbox Media</em><ul><li>Переключитесь на файл main.swift - в нём мы и будем писать код. Проект запускается с помощью кнопки Start в левом верхнем углу, а терминал открывается по нажатию иконки в правом нижнем углу.</li>
44
</ul><em>Скриншот:<a>Xcode</a>/ Skillbox Media</em><ul><li>Переключитесь на файл main.swift - в нём мы и будем писать код. Проект запускается с помощью кнопки Start в левом верхнем углу, а терминал открывается по нажатию иконки в правом нижнем углу.</li>
45
</ul><em>Скриншот:<a>Xcode</a>/ Skillbox Media</em><p>По традиции выведем в консоль фразу Hello, World!. Для этого вызовем функцию print(), а в качестве аргумента передадим строку с нашей фразой, перед этим обязательно обернув её в кавычки:</p>
45
</ul><em>Скриншот:<a>Xcode</a>/ Skillbox Media</em><p>По традиции выведем в консоль фразу Hello, World!. Для этого вызовем функцию print(), а в качестве аргумента передадим строку с нашей фразой, перед этим обязательно обернув её в кавычки:</p>
46
// С помощью функции print() можно выводить текст в консоль print("Hello, World!") // В данном случае Swift напечатает следующую фразу: >>> Hello, World!<p>Со всем миром поздоровались, теперь поприветствуем каждого пользователя лично. Для этого напишем функцию, которая будет получать имя пользователя и выводить персональное сообщение:</p>
46
// С помощью функции print() можно выводить текст в консоль print("Hello, World!") // В данном случае Swift напечатает следующую фразу: >>> Hello, World!<p>Со всем миром поздоровались, теперь поприветствуем каждого пользователя лично. Для этого напишем функцию, которая будет получать имя пользователя и выводить персональное сообщение:</p>
47
// Определяем функцию greetUser func greetUser() { // Выводим на экран сообщение "Как тебя зовут?" print("Как тебя зовут?") // Считываем из консоли имя пользователя if let name = readLine() { // Выводим приветствие print("Привет, \(name).") } } // Вызываем функцию greetUser greetUser()<p>Результат работы программы выглядит следующим образом:</p>
47
// Определяем функцию greetUser func greetUser() { // Выводим на экран сообщение "Как тебя зовут?" print("Как тебя зовут?") // Считываем из консоли имя пользователя if let name = readLine() { // Выводим приветствие print("Привет, \(name).") } } // Вызываем функцию greetUser greetUser()<p>Результат работы программы выглядит следующим образом:</p>
48
<em>Скриншот:<a>Xcode</a>/ Skillbox Media</em><p>Теперь поупражняемся с числами - разработаем функцию, которая принимает на вход пользовательское число и определяет, чётное оно или нет.</p>
48
<em>Скриншот:<a>Xcode</a>/ Skillbox Media</em><p>Теперь поупражняемся с числами - разработаем функцию, которая принимает на вход пользовательское число и определяет, чётное оно или нет.</p>
49
// Определяем функцию checkEven func checkEven() { // Считываем число из консоли print("Введите число:") if let input = readLine(), let number = Int(input) { // Проверяем чётность числа if number % 2 == 0 { // Выводим сообщение, если число чётное print("\(number) - чётное число") } else { // Выводим сообщение, если число нечётное print("\(number) - нечётное число") } } else { // Выводим сообщение, если пользователь ввёл не число print("Ошибка: Введите число ") } } // Вызываем функцию checkEven checkEven()<p>Так функция работает на разных типах данных:</p>
49
// Определяем функцию checkEven func checkEven() { // Считываем число из консоли print("Введите число:") if let input = readLine(), let number = Int(input) { // Проверяем чётность числа if number % 2 == 0 { // Выводим сообщение, если число чётное print("\(number) - чётное число") } else { // Выводим сообщение, если число нечётное print("\(number) - нечётное число") } } else { // Выводим сообщение, если пользователь ввёл не число print("Ошибка: Введите число ") } } // Вызываем функцию checkEven checkEven()<p>Так функция работает на разных типах данных:</p>
50
<em>Скриншот:<a>Xcode</a>/ Skillbox Media</em><p>Пришло время создать первый проект на Swift - напишем полноценную игру "Угадай число" для терминала. Компьютер будет загадывать случайное число от 1 до 100, а пользователь - пытаться угадать. Игра завершится, как только в терминале появится правильный ответ.</p>
50
<em>Скриншот:<a>Xcode</a>/ Skillbox Media</em><p>Пришло время создать первый проект на Swift - напишем полноценную игру "Угадай число" для терминала. Компьютер будет загадывать случайное число от 1 до 100, а пользователь - пытаться угадать. Игра завершится, как только в терминале появится правильный ответ.</p>
51
<p>Для начала импортируем модуль Foundation, без которого не будут работать функции стандартной библиотеки Swift. После этого объявим функцию guessNumberGame - в ней реализуем игровой цикл:</p>
51
<p>Для начала импортируем модуль Foundation, без которого не будут работать функции стандартной библиотеки Swift. После этого объявим функцию guessNumberGame - в ней реализуем игровой цикл:</p>
52
import Foundation func guessNumberGame() { }<p>Объявим константу targetNumber, в которую запишем случайное число от 1 до 100. После выведем в терминал сообщение для пользователя с правилами игры и создадим переменную guess, в которой будем хранить текущую попытку игрока:</p>
52
import Foundation func guessNumberGame() { }<p>Объявим константу targetNumber, в которую запишем случайное число от 1 до 100. После выведем в терминал сообщение для пользователя с правилами игры и создадим переменную guess, в которой будем хранить текущую попытку игрока:</p>
53
let targetNumber = Int.random(in: 1...100) print("Добро пожаловать в игру 'Угадай число'!") print("Я загадал число от 1 до 100. Попробуй угадать его.") var guess: Int? = nil<p>В главном цикле будем считывать ввод пользователя из терминала и сравнивать со сгенерированным числом. Если число не подходит, то выводим подсказку, а если всё правильно - поздравление и выходим из цикла. В конце обязательно делаем проверку, чтобы игрок вводил именно числа, а не слова:</p>
53
let targetNumber = Int.random(in: 1...100) print("Добро пожаловать в игру 'Угадай число'!") print("Я загадал число от 1 до 100. Попробуй угадать его.") var guess: Int? = nil<p>В главном цикле будем считывать ввод пользователя из терминала и сравнивать со сгенерированным числом. Если число не подходит, то выводим подсказку, а если всё правильно - поздравление и выходим из цикла. В конце обязательно делаем проверку, чтобы игрок вводил именно числа, а не слова:</p>
54
while true { print("Введите ваше предположение:", terminator: " ") if let input = readLine() { guess = Int(input) if let guess = guess { if guess < targetNumber { print("Моё число больше. Попробуйте ещё раз.") } else if guess > targetNumber { print("Моё число меньше. Попробуйте ещё раз.") } else { print("Поздравляю! Вы угадали число \(targetNumber)!") break } } else { print("Пожалуйста, введите корректное число.") } } }<p>В конце вызываем функцию guessNumberGame:</p>
54
while true { print("Введите ваше предположение:", terminator: " ") if let input = readLine() { guess = Int(input) if let guess = guess { if guess < targetNumber { print("Моё число больше. Попробуйте ещё раз.") } else if guess > targetNumber { print("Моё число меньше. Попробуйте ещё раз.") } else { print("Поздравляю! Вы угадали число \(targetNumber)!") break } } else { print("Пожалуйста, введите корректное число.") } } }<p>В конце вызываем функцию guessNumberGame:</p>
55
guessNumberGame()<p>Полностью код игры выглядит следующим образом:</p>
55
guessNumberGame()<p>Полностью код игры выглядит следующим образом:</p>
56
// Импортируем модуль Foundation для использования функций стандартной библиотеки import Foundation // Главная функция игры func guessNumberGame() { // Генерируем случайное число от 1 до 100 включительно let targetNumber = Int.random(in: 1...100) // Выводим приветственное сообщение и правила игры print("Добро пожаловать в игру 'Угадай число'!") print("Я загадал число от 1 до 100. Попробуй угадать его.") // Переменная для хранения текущей попытки пользователя var guess: Int? = nil while true { // Просим пользователя ввести число print("Введите ваше предположение:", terminator: " ") // Читаем ввод из консоли if let input = readLine() { // Преобразуем полученные данные в целое число guess = Int(input) // Проверяем, ввёл ли пользователь число if let guess = guess { // Сравниваем число пользователя с загаданным и, если необходимо, просим попробовать ещё раз if guess < targetNumber { print("Моё число больше. Попробуйте ещё раз.") } else if guess > targetNumber { print("Моё число меньше. Попробуйте ещё раз.") } else { // Выводим поздравление, если пользователь угадал число print("Поздравляю! Вы угадали число \(targetNumber)!") break } } else { // Выводим сообщение, если пользователь ввёл не число print("Пожалуйста, введите корректное число.") } } } } // Вызываем главную функцию игры guessNumberGame()<p>А так игра работает в терминале:</p>
56
// Импортируем модуль Foundation для использования функций стандартной библиотеки import Foundation // Главная функция игры func guessNumberGame() { // Генерируем случайное число от 1 до 100 включительно let targetNumber = Int.random(in: 1...100) // Выводим приветственное сообщение и правила игры print("Добро пожаловать в игру 'Угадай число'!") print("Я загадал число от 1 до 100. Попробуй угадать его.") // Переменная для хранения текущей попытки пользователя var guess: Int? = nil while true { // Просим пользователя ввести число print("Введите ваше предположение:", terminator: " ") // Читаем ввод из консоли if let input = readLine() { // Преобразуем полученные данные в целое число guess = Int(input) // Проверяем, ввёл ли пользователь число if let guess = guess { // Сравниваем число пользователя с загаданным и, если необходимо, просим попробовать ещё раз if guess < targetNumber { print("Моё число больше. Попробуйте ещё раз.") } else if guess > targetNumber { print("Моё число меньше. Попробуйте ещё раз.") } else { // Выводим поздравление, если пользователь угадал число print("Поздравляю! Вы угадали число \(targetNumber)!") break } } else { // Выводим сообщение, если пользователь ввёл не число print("Пожалуйста, введите корректное число.") } } } } // Вызываем главную функцию игры guessNumberGame()<p>А так игра работает в терминале:</p>
57
<em>Скриншот:<a>Xcode</a>/ Skillbox Media</em><p>Для поэтапного изучения лучше воспользоваться готовым гайдом, книгой или планом. Например, подойдёт<a>дорожная карта</a>iOS-разработчика от авторов проекта Roadmap.sh.</p>
57
<em>Скриншот:<a>Xcode</a>/ Skillbox Media</em><p>Для поэтапного изучения лучше воспользоваться готовым гайдом, книгой или планом. Например, подойдёт<a>дорожная карта</a>iOS-разработчика от авторов проекта Roadmap.sh.</p>
58
<p>Для разработки на Swift надо обзавестись компьютером от Apple. Во время обучения сгодится простой MacBook со вторичного рынка, но лучше обратить внимание на модели 2020 года и новее. Этого хватит, чтобы познакомиться с основами языка и поработать над первыми проектами. Для серьёзной разработки надо будет обновить устройство на более производительное - желательно на процессоре M1, с минимум 16 ГБ оперативной памяти и 512 ГБ постоянной. Среда разработки для Swift очень "прожорливая", поэтому лучше заранее позаботиться о вычислительных ресурсах.</p>
58
<p>Для разработки на Swift надо обзавестись компьютером от Apple. Во время обучения сгодится простой MacBook со вторичного рынка, но лучше обратить внимание на модели 2020 года и новее. Этого хватит, чтобы познакомиться с основами языка и поработать над первыми проектами. Для серьёзной разработки надо будет обновить устройство на более производительное - желательно на процессоре M1, с минимум 16 ГБ оперативной памяти и 512 ГБ постоянной. Среда разработки для Swift очень "прожорливая", поэтому лучше заранее позаботиться о вычислительных ресурсах.</p>
59
<p>Если хочется сэкономить, то стоит присмотреться к <a>Mac mini</a>. Это компактные настольные компьютеры Apple, которые продаются без монитора, клавиатуры и мышки. Их можно докупить отдельно, выбирая бюджетные варианты. Благодаря этому Mac mini обходится дешевле сопоставимого по мощности MacBook. Главный минус такого решения - отсутствие мобильности. Уйти поработать, скажем, в кафе с таким сетапом будет весьма проблематично :)</p>
59
<p>Если хочется сэкономить, то стоит присмотреться к <a>Mac mini</a>. Это компактные настольные компьютеры Apple, которые продаются без монитора, клавиатуры и мышки. Их можно докупить отдельно, выбирая бюджетные варианты. Благодаря этому Mac mini обходится дешевле сопоставимого по мощности MacBook. Главный минус такого решения - отсутствие мобильности. Уйти поработать, скажем, в кафе с таким сетапом будет весьма проблематично :)</p>
60
<p>Если вы пока не знаете, подходит ли вам Swift, можно попробовать его в онлайн-компиляторе. Такое решение не подойдёт для разработки полноценных приложений, но им можно воспользоваться для знакомства с синтаксисом. Есть бесплатные сервисы<a>Programiz</a>и <a>SwiftFiddle</a>.</p>
60
<p>Если вы пока не знаете, подходит ли вам Swift, можно попробовать его в онлайн-компиляторе. Такое решение не подойдёт для разработки полноценных приложений, но им можно воспользоваться для знакомства с синтаксисом. Есть бесплатные сервисы<a>Programiz</a>и <a>SwiftFiddle</a>.</p>
61
<p><strong>Xcode</strong> - интегрированная среда разработки на Swift. В ней программисты пишут код, тестируют и собирают проекты. На данный момент альтернатив нет, хотя раньше компания JetBrains поддерживала среду AppCode. Проект закрыли спустя некоторое время из-за низкой популярности среди сообщества.</p>
61
<p><strong>Xcode</strong> - интегрированная среда разработки на Swift. В ней программисты пишут код, тестируют и собирают проекты. На данный момент альтернатив нет, хотя раньше компания JetBrains поддерживала среду AppCode. Проект закрыли спустя некоторое время из-за низкой популярности среди сообщества.</p>
62
<p>Xcode можно<a>скачать</a>в App Store. Будьте готовы к тому, что IDE может выдавать ошибки или странно себя вести. Не пугайтесь, что в App Store у официальной среды разработки на Swift низкий рейтинг. Это также связано с ошибками и часто непредсказуемым результатом работы.</p>
62
<p>Xcode можно<a>скачать</a>в App Store. Будьте готовы к тому, что IDE может выдавать ошибки или странно себя вести. Не пугайтесь, что в App Store у официальной среды разработки на Swift низкий рейтинг. Это также связано с ошибками и часто непредсказуемым результатом работы.</p>
63
Да, у официальной среды разработки от Apple рейтинг всего 2,5 балла<em>Скриншот:<a>App Store</a>/ Skillbox Media</em><p><a>Swift Playgrounds</a> - приложение для iPad и Mac, предназначенное для изучения Swift и разработки под iOS. В программе обучения есть модули по основам языка программирования, работе с данными, сетью и популярными библиотеками.</p>
63
Да, у официальной среды разработки от Apple рейтинг всего 2,5 балла<em>Скриншот:<a>App Store</a>/ Skillbox Media</em><p><a>Swift Playgrounds</a> - приложение для iPad и Mac, предназначенное для изучения Swift и разработки под iOS. В программе обучения есть модули по основам языка программирования, работе с данными, сетью и популярными библиотеками.</p>
64
Swift Playgrounds для Mac в App Store<em>Скриншот:<a>App Store</a>/ Skillbox Media</em><p>Весь процесс обучения подаётся в игровой форме, чтобы материал легче усваивался. А ещё все уроки бесплатные, но на английском языке.</p>
64
Swift Playgrounds для Mac в App Store<em>Скриншот:<a>App Store</a>/ Skillbox Media</em><p>Весь процесс обучения подаётся в игровой форме, чтобы материал легче усваивался. А ещё все уроки бесплатные, но на английском языке.</p>
65
<p>Главный плюс Swift Playgrounds в том, что в приложении есть редактор кода и компилятор, который запускается на iPad. Поэтому научиться разработке под iOS можно даже на недорогом планшете от Apple.</p>
65
<p>Главный плюс Swift Playgrounds в том, что в приложении есть редактор кода и компилятор, который запускается на iPad. Поэтому научиться разработке под iOS можно даже на недорогом планшете от Apple.</p>
66
<p>Первый и самый важный источник знаний каждого разработчика на Swift -<a>официальная документация</a>от инженеров Apple. В ней максимально подробно описаны все особенности языка и функции библиотек. Для разработчиков, которые знают другие языки программирования, есть<a>быстрый экскурс</a>в особенности Swift. У документации есть<a>русскоязычный перевод</a>, но он актуален для Swift 5.5. Некоторые конструкции языка могут отличаться, поэтому надо сверяться с официальной документацией.</p>
66
<p>Первый и самый важный источник знаний каждого разработчика на Swift -<a>официальная документация</a>от инженеров Apple. В ней максимально подробно описаны все особенности языка и функции библиотек. Для разработчиков, которые знают другие языки программирования, есть<a>быстрый экскурс</a>в особенности Swift. У документации есть<a>русскоязычный перевод</a>, но он актуален для Swift 5.5. Некоторые конструкции языка могут отличаться, поэтому надо сверяться с официальной документацией.</p>
67
<p>Также разработчики Apple подготовили<a>специальную страницу</a>для тех, кто изучает Swift. На ней собрали ссылки на все материалы, которые могут пригодиться: от кода до дизайна интерфейсов.</p>
67
<p>Также разработчики Apple подготовили<a>специальную страницу</a>для тех, кто изучает Swift. На ней собрали ссылки на все материалы, которые могут пригодиться: от кода до дизайна интерфейсов.</p>
68
<p>Для любителей челленджей в Сети есть бесплатная программа обучения<a>100 days of Swift</a>. Каждый день предлагается изучать одну тему, решать по ней задачки и тратить на это всего час свободного времени. Главное условие: делиться результатами в социальных сетях. Автор курса считает, что даже самый занятой человек сможет найти один час на программирование, а необходимость ежедневного постинга будет мотивировать не бросать изучение.</p>
68
<p>Для любителей челленджей в Сети есть бесплатная программа обучения<a>100 days of Swift</a>. Каждый день предлагается изучать одну тему, решать по ней задачки и тратить на это всего час свободного времени. Главное условие: делиться результатами в социальных сетях. Автор курса считает, что даже самый занятой человек сможет найти один час на программирование, а необходимость ежедневного постинга будет мотивировать не бросать изучение.</p>
69
<p>На ютуб-канале проекта freeCodeCamp есть семичасовой<a>видеокурс</a>для начинающих. В нём разбираются все темы, необходимые для перехода к разработке iOS-приложений.</p>
69
<p>На ютуб-канале проекта freeCodeCamp есть семичасовой<a>видеокурс</a>для начинающих. В нём разбираются все темы, необходимые для перехода к разработке iOS-приложений.</p>
70
<p>Среди русскоязычных авторов чаще всего встречается Василий Усов с уже ставшей классикой книгой "<a>Swift. Основы разработки приложений под iOS, iPadOS и macOS</a>". На сайте книги доступны тесты и задания для самостоятельной проверки пройденного материала.</p>
70
<p>Среди русскоязычных авторов чаще всего встречается Василий Усов с уже ставшей классикой книгой "<a>Swift. Основы разработки приложений под iOS, iPadOS и macOS</a>". На сайте книги доступны тесты и задания для самостоятельной проверки пройденного материала.</p>
71
<p>Если вы твёрдо решили, что хотите стать iOS-разработчиком, то одного Swift будет мало для создания современных приложений для экосистемы Apple. Надо изучать дополнительные библиотеки и инструменты:</p>
71
<p>Если вы твёрдо решили, что хотите стать iOS-разработчиком, то одного Swift будет мало для создания современных приложений для экосистемы Apple. Надо изучать дополнительные библиотеки и инструменты:</p>
72
-
<ul><li><strong>UIKit и SwiftUI.</strong>Для разработки интерфейсов мобильных приложений в экосистеме Swift есть фреймворки UIKit и SwiftUI. Последний актуальнее и востребованнее на рынке, все но��ые приложения сразу пишут на нём. Однако надо уметь работать и с UIKit, так как ещё не все компании успели переехать.</li>
72
+
<ul><li><strong>UIKit и SwiftUI.</strong>Для разработки интерфейсов мобильных приложений в экосистеме Swift есть фреймворки UIKit и SwiftUI. Последний актуальнее и востребованнее на рынке, все новые приложения сразу пишут на нём. Однако надо уметь работать и с UIKit, так как ещё не все компании успели переехать.</li>
73
<li><strong>Figma и Sketch.</strong>Скорее всего, вы будете верстать экраны приложений по макетам дизайнеров, поэтому надо хотя бы базово уметь работать с Figma и Sketch. Это программы, в которых отрисовывают макет приложения и передают его программистам.</li>
73
<li><strong>Figma и Sketch.</strong>Скорее всего, вы будете верстать экраны приложений по макетам дизайнеров, поэтому надо хотя бы базово уметь работать с Figma и Sketch. Это программы, в которых отрисовывают макет приложения и передают его программистам.</li>
74
<li><strong>Core Data и SwiftData</strong> - фреймворки для работы с базами данных на iOS и macOS. SwiftData более современный и пока используется не везде.</li>
74
<li><strong>Core Data и SwiftData</strong> - фреймворки для работы с базами данных на iOS и macOS. SwiftData более современный и пока используется не везде.</li>
75
<li><strong>Системы контроля версий.</strong>Сразу учитесь работать с Git, так как чаще всего именно эту систему контроля версий используют в командах разработки.</li>
75
<li><strong>Системы контроля версий.</strong>Сразу учитесь работать с Git, так как чаще всего именно эту систему контроля версий используют в командах разработки.</li>
76
</ul><ul><li><strong>CocoaPods и Swift Package Manager</strong> - менеджеры зависимостей и сторонних библиотек. Оба инструмента используются одинаково часто, поэтому надо уметь работать с каждым.</li>
76
</ul><ul><li><strong>CocoaPods и Swift Package Manager</strong> - менеджеры зависимостей и сторонних библиотек. Оба инструмента используются одинаково часто, поэтому надо уметь работать с каждым.</li>
77
<li><strong>App Store Connect.</strong>Спустя какое-то время у вас начнут появляться первые приложения, которыми захочется поделиться. Для публикации в магазине приложений Apple надо научиться работать с программой App Store Connect.</li>
77
<li><strong>App Store Connect.</strong>Спустя какое-то время у вас начнут появляться первые приложения, которыми захочется поделиться. Для публикации в магазине приложений Apple надо научиться работать с программой App Store Connect.</li>
78
</ul><ul><li>Swift - открытый, компилируемый, мультипарадигменный язык программирования со строгой типизацией, представленный Apple в 2014 году.</li>
78
</ul><ul><li>Swift - открытый, компилируемый, мультипарадигменный язык программирования со строгой типизацией, представленный Apple в 2014 году.</li>
79
<li>Его используют для разработки приложений под устройства экосистемы Apple, также на нём можно писать бэкенд и прошивки для IoT-устройств.</li>
79
<li>Его используют для разработки приложений под устройства экосистемы Apple, также на нём можно писать бэкенд и прошивки для IoT-устройств.</li>
80
<li>У Swift относительно простой синтаксис, который легко освоить новичку, однако для разработки серьёзных приложений надо знать много фундаментальных вещей, например ООП, способы управления памятью и принципы сборки проектов с большим количеством файлов.</li>
80
<li>У Swift относительно простой синтаксис, который легко освоить новичку, однако для разработки серьёзных приложений надо знать много фундаментальных вещей, например ООП, способы управления памятью и принципы сборки проектов с большим количеством файлов.</li>
81
<li>Xcode - интегрированная среда разработки для Swift. В ней есть все необходимые инструменты для компиляции кода, отладки и сборки приложений.</li>
81
<li>Xcode - интегрированная среда разработки для Swift. В ней есть все необходимые инструменты для компиляции кода, отладки и сборки приложений.</li>
82
<li>Для комфортного программирования на Swift нужен Mac.</li>
82
<li>Для комфортного программирования на Swift нужен Mac.</li>
83
<li>Простые скрипты можно запускать в онлайн-компиляторах или на iPad.</li>
83
<li>Простые скрипты можно запускать в онлайн-компиляторах или на iPad.</li>
84
</ul><a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
84
</ul><a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>