Программист – профессия, которая пользуется спросом в 21 веке. Это человек, который создает программное обеспечение для различных платформ. Огромным спросом пользуется нативная разработка для мобильных устройств. Именно ей будет посвящена информация ниже.
Речь зайдет о Swift. Предстоит выяснить, что он собой представляет, для чего используется. Расскажем про преимущества и недостатки, а также перспективы. Эти данные вместе с Google помогут понять, стоит ли вообще учить Свифт.
Программирование или разработка
Но сначала предстоит разобраться в двух схожих между собой понятиях. Речь идет о программировании и разработке. Те, кто решил использовать свои знания для создания приложений и игр, должны хорошо понимать разницу между соответствующими понятиями.
Программирование, согласно Google – это решение через коддинг строго обозначенных задач. Программист будет использовать знания и навыки для того, чтобы написать софт или какой-то алгоритм.
Разработка – более широкое понятие. В Google указано, что при разработке необходимо сопровождать проект «с нуля». Разработчик не только разбирается в коддинге, но и знает архитектуру утилит, умеет составлять ТЗ. Он отвечает за слаженность работы в пределах всей команды.
Натив или кроссплатформенность
Те, кто работают с кодом, должны также разбираться в разнице между кроссплатформенной разработкой, а также нативным программированием. Первый вариант – универсален. Кроссплатформенность позволяет переносить ПО с одного устройства на другое без существенных проблем. Пример – это когда игра будет одинаково хорошо работать на:
- смартфонах;
- планшетах;
- консолях;
- компьютерах.
Обычно пишется такое приложение на кроссплатформенных языках программирования. В Google указано, что к ним относят C++, Питон, JavaScript и другие.
Нативная разработка – узкоспециализированный подход. Предусматривает создание приложений, согласно Google, для конкретной площадки. Пример – только под Windows или Android. Этот вариант требует более вдумчивого подхода, а также определенного багажа знаний. Особенно – заучивания native programming language.
Swift – это…
Swift – это новый нативный язык программирования. Google указывает на то, что он подходит для коддинга под «яблочные» девайсы – от компании Apple. Обладает открытым исходным кодом (open source), а также общим типом назначения.
Это значит, что Swift применяют при коддинге как офисных приложений, так и бизнес-задач. Можно составить развлекательный софт или выпустить собственную игру.
Google указывает и на то, что Swift – это мультипарадигменный объектно-ориентированный язык. Его создателем выступила корпорация Apple. На данный момент ведется его активное совершенствование и обновление.
Историческая справка
Google ссылается на то, что разработка Swift как языка программирования началась в 2010 году. Ранее, в 90-х годах прошлого века, этот programming language уже использовался, но особую популярность не обрел. Над проектом работал Крис Латтнер. Он занялся созданием нативного Swift вместе с другими сотрудниками Apple.
Вместе с первым приложением Свифт был представлен лишь в 2014 году – на конференции WWDC. Бета-версия была показана зрителям, но компания не говорила о том, что предложенный вариант является окончательным. И никто не говорил о совместимости с полным релизом.
Первый официальный выпуск состоялся в сентябре 2014 года. Тогда же пользователи смогли увидеть, если верить Google, руководство по Свифту, рассчитанное на 500 страничек. Оно оказалось доступным через iBooks Store.
Летом 2015 вышла 2 версия Swift. Сейчас юзеры могут насладиться новым релизом – 5.4, который появился в конце 2021 года. Предположительно именно она будет совершенствоваться в ближайшее время.
Преимущества и недостатки
В Google полно информации о том, какие сильные и слабые стороны имеет рассматриваемый ЯП. Зная их, юзер сможет понять, стоит ли ему направлять силы на нативную «яблочную» разработку вместе с инновационным языком коддинга.
Сильные стороны
У Swift, по Google, выделяют следующие плюсы:
- Небольшой размер кодификации для приложения. Основы Свифта – это лаконичность и краткость. Вся кодификация разбита на блоки и обладает понятной даже новичкам структурой.
- Высокий уровень читаемости. Выступает в виде главного преимущества любого ЯП. Разобраться даже в чужом коде будет достаточно легко.
- Функциональность. Если сравнивать Swift с Objective-C, стоит отметить большое количество новых возможностей. Пример – управление памятью.
- Хорошее взаимодействие. Swift, как говорит Google, был придуман для того, чтобы заменить Objective-C. Так и получилось. В итоге юзеры получают кодификации, совместимые с ЯП-предшественником.
- Высокий уровень безопасности. Им могут похвастаться все продукты от компании Apple.
Swift – удобный язык, который сможет выучить каждый. Большинство приложений для «яблочной» продукции переписывается на нем.
Также стоит отметить высокую производительность кода. Она подойдет для создания достаточно крупных проектов. Objective-C работает более медленно.
Здесь также присутствует:
- Явная обработка «пустоты». Null будет обрабатываться так, чтобы кодификация оказалась максимально безопасной.
- Автоматическое управление памятью.
- Высокая скорость работы. Особенно если сравнивать Свист с Питоном или Objective-C.
Google предписывает Свифту свойства и преимущества быстрого и функционального способа коддинга. Юзеры при написании своего первого приложения сможет насладиться всеми преимуществами оного.
Слабые стороны
Программировать на Swift легко, но этот процесс тоже имеет свои недостатки. К ним относят:
- Появление необычных ошибок в компиляторе. Некоторые из них способны вызвать недоумение у опытного разраба.
- Относительная молодость языка. Из-за этого ему доверяют не все программеры.
- Небольшое комьюнити. Связано это с тем же недавним выпуском ЯП.
Google указывает и на то, что у Swift относительно небольшое количество встроенных библиотек. Их количество растет, но пока данный момент оставляет желать лучшего.
А для того, чтобы хорошо освоиться в Свифте, программисту придется подучить Objective-C. «С нуля» разобраться с ним можно, но это потребует намного больше времени и сил.
Специализация у ЯП, согласно Google, не слишком широкая. Для того, чтобы работать и тестить приложения на Свифте, нужно подготовить «яблочную» продукцию. Swift обладает плохой поддержкой старых версий. На iOS и MacOS, существовавших до 2014 года, запустить соответствующий софт не получится. Часто возникает проблема с обратной совместимостью.
Характеристики
Swift – ЯП, который обладает рядом уникальных параметров. Зная о них, можно понять, насколько этот вариант коддинга сгодится для конкретного проекта под продукцию Apple:
- Мультипарадигменность. Здесь есть сочетание императивного, объектно-ориентированного и иных методов программирования. Отличный способ обеспечения функциональности и логики.
- Статическая типизация. Переменная получит тип на все время существования. Число останется числом. Произвести туда запись строки или массива не представится возможным.
- Необязательное объявление типов. Переменная здесь может не иметь непосредственного указания типа. Компилятор будет самостоятельно его определять. Для этого он считывает данные, которые записываются в оную.
Это – ключевые характеристики, которыми Свифт выделяется из общей массы. Основы данного языка выучить можно как самостоятельно через Google, так и на специализированных курсах.
Сферы применения
Google ссылается на то, что Swift – это относительно узкоспециализированный язык коддинга. Подобное свойство имеет место у всех нативных способов программирования.
Используется Свифт в следующих направлениях:
- Создание контентна для систем MacOS и iOS. В основном программы запускаются на Apple.
- Совместное использование с Objective-C и C. Пример – перенос программы с одного ЯП на другой.
- Серверная разработка. Особенно это касается поддержки ПО.
- Веб-коддинг. Некоторые программеры пишут web content, а также сайты. Такая область применения встречается не слишком часто. Она становится возможной за счет наличия специализированных встроенных библиотек.
Задействовать Свифт можно и для программирования утилит на Windows, но пока что подобное решение не выступает в качестве основополагающего. Это – редкая, единичная практика. Разработчик на Swift – это apple-программер.
Поводы для изучения
Современные любители коддить, особенно для мобильных платформ, должны выучить Свифт. На то существуют различные причины:
- Полная и идеальная совместимость с Apple-девайсами. На них люди зарабатывают немалые денежные средства.
- Быстрое и стремительное развитие. Google указывает на то, что Swift совершенствуется и дорабатывается в кратчайшие сроки. Создан в виде замены Objective-C. И сейчас ЯП отлично справляется с соответствующей задачей. Он оснащен простым синтаксисом и лаконичностью.
- Сведение сбоев и неполадок в кодификации к минимуму при работе приложений. А еще система имеет собственный отладчик, который или укажет на баг, или сможет откорректировать его без постороннего вмешательства.
Swift востребован для площадок Apple. Экосистема постоянно совершенствуется, предлагая юзерам новые возможности. Они предназначаются для того, чтобы облегчить жизнь клиентов. Статья частью подобного процесса – огромное достижение. Оно будет приятно вознаграждено.
Что знать о фреймворках
Библиотеки и фреймворки Swift, если верить Google, в два-три раза быстрее осваиваются новичками, чем остальные вариации коддинга. Фреймворков тут не слишком много. Основная их часть ориентирована на клиент-серверную разработку. Вот самые распространенные варианты:
- Perfect. Один из самых распространенных фреймворков. Он имеет поддержку ORM и WebSocket.
- Vapor. Упрощенная вариация предыдущего «пакета кодов». Выделяется весьма мощным функционалом. Подходит для веб-разработки. Выделяется обширной документацией.
- Zewo. Один из наименее популярных фреймворков. Сейчас выступает в качестве устаревшего. Из-за этого Zewo почти не встречается на практике.
- Kitura. Инструмент, который широко распространен и обладает поддержкой от компании IBM. Оснащен мощным функционалом и документацией, а также туториалами. П дизайну напоминает JavaScript.
Swift – то, на чем сегодня происходит выпуск основной массы программного обеспечения для приложений от Apple. Почти все продукты в AppStore перенесены на Свифт. Google указывает на то, что соответствующая тенденция по сей день сохранена.
База
Основы Swift – это не так трудно, как кажется. Командой здесь выступает то или иное утверждение, а текстовый документ предусматривает строки теста. Разрывы, согласно Google и установленного синтаксиса, обладают определенным значением.
Для того, чтобы пользователь мог увидеть результат в консоли Xcode, необходимо воспользоваться командой под названием print. Операторы в пределах одной и той же строчки подлежат комбинированию. Для этого программер должен поставить между ними знак «точка с запятой». Это – своеобразный разделитель.
Также стоит запомнить следующие данные о Swift (их можно посмотреть в Google):
- Операторы могут быть разбиты на несколько строк.
- Лучше разделение вводить после открывающейся скобки. Это поможет не запутать компилятор.
- Комментарии – то, что будет идти после двух слэшей. Их компилятор будет игнорировать при обработке кодификации.
- Многострочные комментарии у Свифта допускаются. Они заключаются между /* и */.
- Некоторые конструкции ЯП применяют фигурные скобки в качестве своеобразных разделителей.
- То, что написано в фигурных скобках, сопровождается разрывами строк. Такая запись имеет отступы. Это необходимо для большей ясности и повышения читаемости кодификации.
Сообщения об ошибках здесь варьируются – от четких и лаконичных до непонятных и немного «странных». Поэтому стоит задуматься над тем, чтобы писать утилиты максимально просто, без особо сложных конструкций.
Объекты
Google предписывает, что в Swift «все выступает в качестве объекта». Object – это то, чему можно при коддинге отправить определенную команду. В рассматриваемом ЯП команды будут формироваться и отправляться через символ «точка».
Даже примитивные объекты здесь сможет отправлять сообщения. Тип соответствующих элементов поддерживает расширение. Это указывает на то, что программер способен определять собственные команды для каждого установленного типа данных.
В Swift отсутствуют скаляры. Все типы – это типы объектов. Можно выделить несколько objects в ЯП:
- классы;
- перечисления (списки);
- структуры.
Это – только начало. То, что поможет начать грамотное изучение ЯП.
Как узнать о Swift больше
Google указывает на то, что Swift достаточно легко освоить. Это действительно так. Особенно данный момент касается тех, кто имел опыт в разработке и коддинге.
Получить специализированное образование по Свифту некоторые пытаются при помощи высшего учебного заведения. Сейчас в ВУЗах обучают базе коддинга, но Swift там встречается редко. То же самое касается техникумов. Эти способы получения образования дадут «базу», которая в будущем окажется не лишней для разработки под Apple.
Часто Свифт рассматривают самостоятельно в рамках самообразования. Тут на помощь приходят туториалы и видео, а также специализированная литература. Этот подход базируется преимущественно на практике. Подтвердить навыки документально не получится. Останется лишь собирать портфолио.
Но можно язык программирования Swift выучить при помощи дистанционных онлайн курсов. Здесь будет не только практика, но и грамотно составленная программа. В конце пользователи получат электронный сертификат установленной формы.
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>Программирование на Свифт: что нужно учесть OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="Программист – профессия, которая пользуется спросом в 21 веке. Это человек, который создает программное обеспечение для различных платформ. Огромным спросом пользуется нативная разработка для мобильных устройств. Именно ей будет посвящена информация ниже. Речь зайдет о Swift. Предстоит выяснить, что он собой представляет, для чего используется. Расскажем про преимущества и недостатки, а также перспективы. Эти данные" />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/programmirovanie-na-svift-chto-nuzhno-uchest/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/programmirovanie-na-svift-chto-nuzhno-uchest\/#article","name":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0421\u0432\u0438\u0444\u0442: \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0435\u0441\u0442\u044c OTUS","headline":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0421\u0432\u0438\u0444\u0442: \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0435\u0441\u0442\u044c","author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2022\/07\/oj-1080x720-14.png","width":1080,"height":720},"datePublished":"2022-07-11T17:28:32+00:00","dateModified":"2022-07-11T17:28:34+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/programmirovanie-na-svift-chto-nuzhno-uchest\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/programmirovanie-na-svift-chto-nuzhno-uchest\/#webpage"},"articleSection":"\u041f\u0440\u043e IT, iOS, swift"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/programmirovanie-na-svift-chto-nuzhno-uchest\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/programmirovanie-na-svift-chto-nuzhno-uchest\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/programmirovanie-na-svift-chto-nuzhno-uchest\/#listItem","position":2,"name":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0421\u0432\u0438\u0444\u0442: \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0435\u0441\u0442\u044c","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author","url":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/","name":"A. Pavlenko","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/programmirovanie-na-svift-chto-nuzhno-uchest\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d4c499a104d7c2522fa41f89e6819499?s=96&d=mm&r=g","width":96,"height":96,"caption":"A. Pavlenko"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/programmirovanie-na-svift-chto-nuzhno-uchest\/#webpage","url":"https:\/\/otus.ru\/journal\/programmirovanie-na-svift-chto-nuzhno-uchest\/","name":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0421\u0432\u0438\u0444\u0442: \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0435\u0441\u0442\u044c OTUS","description":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u2013 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043f\u0440\u043e\u0441\u043e\u043c \u0432 21 \u0432\u0435\u043a\u0435. \u042d\u0442\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c. \u041e\u0433\u0440\u043e\u043c\u043d\u044b\u043c \u0441\u043f\u0440\u043e\u0441\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0418\u043c\u0435\u043d\u043d\u043e \u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043d\u0438\u0436\u0435. \u0420\u0435\u0447\u044c \u0437\u0430\u0439\u0434\u0435\u0442 \u043e Swift. \u041f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u043d \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u043f\u0440\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u044b. \u042d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/programmirovanie-na-svift-chto-nuzhno-uchest\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2022\/07\/oj-1080x720-14.png","@id":"https:\/\/otus.ru\/journal\/programmirovanie-na-svift-chto-nuzhno-uchest\/#mainImage","width":1080,"height":720},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/programmirovanie-na-svift-chto-nuzhno-uchest\/#mainImage"},"datePublished":"2022-07-11T17:28:32+00:00","dateModified":"2022-07-11T17:28:34+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/3983" /><link rel='shortlink' href='https://otus.ru/journal/?p=3983' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprogrammirovanie-na-svift-chto-nuzhno-uchest%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprogrammirovanie-na-svift-chto-nuzhno-uchest%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-3983 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-3983" class="the-post post-3983 post type-post status-publish format-standard has-post-thumbnail category-pro-it tag-ios tag-swift">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/pro-it/" class="category" data-wpel-link="internal">Про IT</a>
</span>
<h1 class="post-title">
Программирование на Свифт: что нужно учесть
</h1>
<a href="https://otus.ru/journal/programmirovanie-na-svift-chto-nuzhno-uchest/" class="date-link" data-wpel-link="internal"><time class="post-date">11 июля, 2022</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-14.png" class="image-link" data-wpel-link="internal"><img width="770" height="515" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20770%20515%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-contentberg-main size-contentberg-main lazyload wp-post-image" alt="Программирование на Свифт: что нужно учесть" title="Программирование на Свифт: что нужно учесть" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-14-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-14-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-14-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-14-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-14-270x180.png 270w" data-src="https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-14-770x515.png" data-sizes="(max-width: 770px) 100vw, 770px" /> </a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%BB%D0%B8_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0" title="Программирование или разработка">Программирование или разработка</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="#%D0%9D%D0%B0%D1%82%D0%B8%D0%B2_%D0%B8%D0%BB%D0%B8_%D0%BA%D1%80%D0%BE%D1%81%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C" title="Натив или кроссплатформенность">Натив или кроссплатформенность</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="#Swift_%E2%80%93_%D1%8D%D1%82%D0%BE%E2%80%A6" title="Swift – это…">Swift – это…</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-4" href="#%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0" title="Историческая справка">Историческая справка</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-5" href="#%D0%9F%D1%80%D0%B5%D0%B8%D0%BC%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%B8_%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8" title="Преимущества и недостатки">Преимущества и недостатки</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-6" href="#%D0%A1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D1%8B" title="Сильные стороны">Сильные стороны</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-7" href="#%D0%A1%D0%BB%D0%B0%D0%B1%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D1%8B" title="Слабые стороны">Слабые стороны</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-8" href="#%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8" title="Характеристики">Характеристики</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-9" href="#%D0%A1%D1%84%D0%B5%D1%80%D1%8B_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F" title="Сферы применения">Сферы применения</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-10" href="#%D0%9F%D0%BE%D0%B2%D0%BE%D0%B4%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%B8%D0%B7%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F" title="Поводы для изучения">Поводы для изучения</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-11" href="#%D0%A7%D1%82%D0%BE_%D0%B7%D0%BD%D0%B0%D1%82%D1%8C_%D0%BE_%D1%84%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA%D0%B0%D1%85" title="Что знать о фреймворках">Что знать о фреймворках</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-12" href="#%D0%91%D0%B0%D0%B7%D0%B0" title="База">База</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-13" href="#%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B" title="Объекты">Объекты</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-14" href="#%D0%9A%D0%B0%D0%BA_%D1%83%D0%B7%D0%BD%D0%B0%D1%82%D1%8C_%D0%BE_Swift_%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B5" title="Как узнать о Swift больше">Как узнать о Swift больше</a></li></ul></nav></div>
<p>Программист – профессия, которая пользуется спросом в 21 веке. Это человек, который создает программное обеспечение для различных платформ. Огромным спросом пользуется нативная разработка для мобильных устройств. Именно ей будет посвящена информация ниже.</p>
<p>Речь зайдет о Swift. Предстоит выяснить, что он собой представляет, для чего используется. Расскажем про преимущества и недостатки, а также перспективы. Эти данные вместе с Google помогут понять, стоит ли вообще учить Свифт.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%BB%D0%B8_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0"></span>Программирование или разработка<span class="ez-toc-section-end"></span></h2>
<p>Но сначала предстоит разобраться в двух схожих между собой понятиях. Речь идет о программировании и разработке. Те, кто решил использовать свои знания для создания приложений и игр, должны хорошо понимать разницу между соответствующими понятиями.</p>
<p>Программирование, согласно Google – это решение через коддинг строго обозначенных задач. Программист будет использовать знания и навыки для того, чтобы написать софт или какой-то алгоритм.</p>
<p>Разработка – более широкое понятие. В Google указано, что при разработке необходимо сопровождать проект «с нуля». Разработчик не только разбирается в коддинге, но и знает архитектуру утилит, умеет составлять ТЗ. Он отвечает за слаженность работы в пределах всей команды.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B0%D1%82%D0%B8%D0%B2_%D0%B8%D0%BB%D0%B8_%D0%BA%D1%80%D0%BE%D1%81%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C"></span>Натив или кроссплатформенность<span class="ez-toc-section-end"></span></h2>
<p>Те, кто работают с кодом, должны также разбираться в разнице между кроссплатформенной разработкой, а также нативным программированием. Первый вариант – универсален. Кроссплатформенность позволяет переносить ПО с одного устройства на другое без существенных проблем. Пример – это когда игра будет одинаково хорошо работать на:</p>
<ul><li>смартфонах;</li><li>планшетах;</li><li>консолях;</li><li>компьютерах.</li></ul>
<p>Обычно пишется такое приложение на кроссплатформенных языках программирования. В Google указано, что к ним относят C++, Питон, JavaScript и другие.</p>
<p>Нативная разработка – узкоспециализированный подход. Предусматривает создание приложений, согласно Google, для конкретной площадки. Пример – только под Windows или Android. Этот вариант требует более вдумчивого подхода, а также определенного багажа знаний. Особенно – заучивания native programming language.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Swift_%E2%80%93_%D1%8D%D1%82%D0%BE%E2%80%A6"></span>Swift – это…<span class="ez-toc-section-end"></span></h2>
<p>Swift – это новый нативный язык программирования. Google указывает на то, что он подходит для коддинга под «яблочные» девайсы – от компании Apple. Обладает открытым исходным кодом (open source), а также общим типом назначения.</p>
<p>Это значит, что Swift применяют при коддинге как офисных приложений, так и бизнес-задач. Можно составить развлекательный софт или выпустить собственную игру.</p>
<p>Google указывает и на то, что Swift – это мультипарадигменный объектно-ориентированный язык. Его создателем выступила корпорация Apple. На данный момент ведется его активное совершенствование и обновление.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0"></span>Историческая справка<span class="ez-toc-section-end"></span></h2>
<p>Google ссылается на то, что разработка Swift как языка программирования началась в 2010 году. Ранее, в 90-х годах прошлого века, этот programming language уже использовался, но особую популярность не обрел. Над проектом работал Крис Латтнер. Он занялся созданием нативного Swift вместе с другими сотрудниками Apple.</p>
<p>Вместе с первым приложением Свифт был представлен лишь в 2014 году – на конференции WWDC. Бета-версия была показана зрителям, но компания не говорила о том, что предложенный вариант является окончательным. И никто не говорил о совместимости с полным релизом.</p>
<p>Первый официальный выпуск состоялся в сентябре 2014 года. Тогда же пользователи смогли увидеть, если верить Google, руководство по Свифту, рассчитанное на 500 страничек. Оно оказалось доступным через iBooks Store.</p>
<p>Летом 2015 вышла 2 версия Swift. Сейчас юзеры могут насладиться новым релизом – 5.4, который появился в конце 2021 года. Предположительно именно она будет совершенствоваться в ближайшее время.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B5%D0%B8%D0%BC%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%B8_%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8"></span>Преимущества и недостатки<span class="ez-toc-section-end"></span></h2>
<p>В Google полно информации о том, какие сильные и слабые стороны имеет рассматриваемый ЯП. Зная их, юзер сможет понять, стоит ли ему направлять силы на нативную «яблочную» разработку вместе с инновационным языком коддинга.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D1%8B"></span>Сильные стороны<span class="ez-toc-section-end"></span></h2>
<p>У Swift, по Google, выделяют следующие плюсы:</p>
<ol type="1"><li>Небольшой размер кодификации для приложения. Основы Свифта – это лаконичность и краткость. Вся кодификация разбита на блоки и обладает понятной даже новичкам структурой.</li><li>Высокий уровень читаемости. Выступает в виде главного преимущества любого ЯП. Разобраться даже в чужом коде будет достаточно легко.</li><li>Функциональность. Если сравнивать Swift с Objective-C, стоит отметить большое количество новых возможностей. Пример – управление памятью.</li><li>Хорошее взаимодействие. Swift, как говорит Google, был придуман для того, чтобы заменить Objective-C. Так и получилось. В итоге юзеры получают кодификации, совместимые с ЯП-предшественником.</li><li>Высокий уровень безопасности. Им могут похвастаться все продукты от компании Apple.</li></ol>
<p>Swift – удобный язык, который сможет выучить каждый. Большинство приложений для «яблочной» продукции переписывается на нем.</p>
<p>Также стоит отметить высокую производительность кода. Она подойдет для создания достаточно крупных проектов. Objective-C работает более медленно.</p>
<p>Здесь также присутствует:</p>
<ol type="1"><li>Явная обработка «пустоты». Null будет обрабатываться так, чтобы кодификация оказалась максимально безопасной.</li><li>Автоматическое управление памятью.</li><li>Высокая скорость работы. Особенно если сравнивать Свист с Питоном или Objective-C.</li></ol>
<p>Google предписывает Свифту свойства и преимущества быстрого и функционального способа коддинга. Юзеры при написании своего первого приложения сможет насладиться всеми преимуществами оного.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%BB%D0%B0%D0%B1%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D1%8B"></span>Слабые стороны<span class="ez-toc-section-end"></span></h2>
<p>Программировать на Swift легко, но этот процесс тоже имеет свои недостатки. К ним относят:</p>
<ol type="1"><li>Появление необычных ошибок в компиляторе. Некоторые из них способны вызвать недоумение у опытного разраба.</li><li>Относительная молодость языка. Из-за этого ему доверяют не все программеры.</li><li>Небольшое комьюнити. Связано это с тем же недавним выпуском ЯП.</li></ol>
<p>Google указывает и на то, что у Swift относительно небольшое количество встроенных библиотек. Их количество растет, но пока данный момент оставляет желать лучшего.</p>
<p>А для того, чтобы хорошо освоиться в Свифте, программисту придется подучить Objective-C. «С нуля» разобраться с ним можно, но это потребует намного больше времени и сил.</p>
<p>Специализация у ЯП, согласно Google, не слишком широкая. Для того, чтобы работать и тестить приложения на Свифте, нужно подготовить «яблочную» продукцию. Swift обладает плохой поддержкой старых версий. На iOS и MacOS, существовавших до 2014 года, запустить соответствующий софт не получится. Часто возникает проблема с обратной совместимостью.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8"></span>Характеристики<span class="ez-toc-section-end"></span></h2>
<p>Swift – ЯП, который обладает рядом уникальных параметров. Зная о них, можно понять, насколько этот вариант коддинга сгодится для конкретного проекта под продукцию Apple:</p>
<ol type="1"><li>Мультипарадигменность. Здесь есть сочетание императивного, объектно-ориентированного и иных методов программирования. Отличный способ обеспечения функциональности и логики.</li><li>Статическая типизация. Переменная получит тип на все время существования. Число останется числом. Произвести туда запись строки или массива не представится возможным.</li><li>Необязательное объявление типов. Переменная здесь может не иметь непосредственного указания типа. Компилятор будет самостоятельно его определять. Для этого он считывает данные, которые записываются в оную.</li></ol>
<p>Это – ключевые характеристики, которыми Свифт выделяется из общей массы. Основы данного языка выучить можно как самостоятельно через Google, так и на специализированных курсах.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D1%84%D0%B5%D1%80%D1%8B_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F"></span>Сферы применения<span class="ez-toc-section-end"></span></h2>
<p>Google ссылается на то, что Swift – это относительно узкоспециализированный язык коддинга. Подобное свойство имеет место у всех нативных способов программирования.</p>
<p>Используется Свифт в следующих направлениях:</p>
<ol type="1"><li>Создание контентна для систем MacOS и iOS. В основном программы запускаются на Apple.</li><li>Совместное использование с Objective-C и C. Пример – перенос программы с одного ЯП на другой.</li><li>Серверная разработка. Особенно это касается поддержки ПО.</li><li>Веб-коддинг. Некоторые программеры пишут web content, а также сайты. Такая область применения встречается не слишком часто. Она становится возможной за счет наличия специализированных встроенных библиотек.</li></ol>
<p>Задействовать Свифт можно и для программирования утилит на Windows, но пока что подобное решение не выступает в качестве основополагающего. Это – редкая, единичная практика. Разработчик на Swift – это apple-программер.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D0%BE%D0%B2%D0%BE%D0%B4%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%B8%D0%B7%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F"></span>Поводы для изучения<span class="ez-toc-section-end"></span></h2>
<p>Современные любители коддить, особенно для мобильных платформ, должны выучить Свифт. На то существуют различные причины:</p>
<ol type="1"><li>Полная и идеальная совместимость с Apple-девайсами. На них люди зарабатывают немалые денежные средства.</li><li>Быстрое и стремительное развитие. Google указывает на то, что Swift совершенствуется и дорабатывается в кратчайшие сроки. Создан в виде замены Objective-C. И сейчас ЯП отлично справляется с соответствующей задачей. Он оснащен простым синтаксисом и лаконичностью.</li><li>Сведение сбоев и неполадок в кодификации к минимуму при работе приложений. А еще система имеет собственный отладчик, который или укажет на баг, или сможет откорректировать его без постороннего вмешательства.</li></ol>
<p>Swift востребован для площадок Apple. Экосистема постоянно совершенствуется, предлагая юзерам новые возможности. Они предназначаются для того, чтобы облегчить жизнь клиентов. Статья частью подобного процесса – огромное достижение. Оно будет приятно вознаграждено.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A7%D1%82%D0%BE_%D0%B7%D0%BD%D0%B0%D1%82%D1%8C_%D0%BE_%D1%84%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA%D0%B0%D1%85"></span>Что знать о фреймворках<span class="ez-toc-section-end"></span></h2>
<p>Библиотеки и фреймворки Swift, если верить Google, в два-три раза быстрее осваиваются новичками, чем остальные вариации коддинга. Фреймворков тут не слишком много. Основная их часть ориентирована на клиент-серверную разработку. Вот самые распространенные варианты:</p>
<ol type="1"><li>Perfect. Один из самых распространенных фреймворков. Он имеет поддержку ORM и WebSocket.</li><li>Vapor. Упрощенная вариация предыдущего «пакета кодов». Выделяется весьма мощным функционалом. Подходит для веб-разработки. Выделяется обширной документацией.</li><li>Zewo. Один из наименее популярных фреймворков. Сейчас выступает в качестве устаревшего. Из-за этого Zewo почти не встречается на практике.</li><li>Kitura. Инструмент, который широко распространен и обладает поддержкой от компании IBM. Оснащен мощным функционалом и документацией, а также туториалами. П дизайну напоминает JavaScript.</li></ol>
<p>Swift – то, на чем сегодня происходит выпуск основной массы программного обеспечения для приложений от Apple. Почти все продукты в AppStore перенесены на Свифт. Google указывает на то, что соответствующая тенденция по сей день сохранена.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%91%D0%B0%D0%B7%D0%B0"></span>База<span class="ez-toc-section-end"></span></h2>
<p>Основы Swift – это не так трудно, как кажется. Командой здесь выступает то или иное утверждение, а текстовый документ предусматривает строки теста. Разрывы, согласно Google и установленного синтаксиса, обладают определенным значением.</p>
<p>Для того, чтобы пользователь мог увидеть результат в консоли Xcode, необходимо воспользоваться командой под названием print. Операторы в пределах одной и той же строчки подлежат комбинированию. Для этого программер должен поставить между ними знак «точка с запятой». Это – своеобразный разделитель.</p>
<p>Также стоит запомнить следующие данные о Swift (их можно посмотреть в Google):</p>
<ol type="1"><li>Операторы могут быть разбиты на несколько строк.</li><li>Лучше разделение вводить после открывающейся скобки. Это поможет не запутать компилятор.</li><li>Комментарии – то, что будет идти после двух слэшей. Их компилятор будет игнорировать при обработке кодификации.</li><li>Многострочные комментарии у Свифта допускаются. Они заключаются между /* и */.</li><li>Некоторые конструкции ЯП применяют фигурные скобки в качестве своеобразных разделителей.</li><li>То, что написано в фигурных скобках, сопровождается разрывами строк. Такая запись имеет отступы. Это необходимо для большей ясности и повышения читаемости кодификации.</li></ol>
<p>Сообщения об ошибках здесь варьируются – от четких и лаконичных до непонятных и немного «странных». Поэтому стоит задуматься над тем, чтобы писать утилиты максимально просто, без особо сложных конструкций.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B"></span>Объекты<span class="ez-toc-section-end"></span></h2>
<p>Google предписывает, что в Swift «все выступает в качестве объекта». Object – это то, чему можно при коддинге отправить определенную команду. В рассматриваемом ЯП команды будут формироваться и отправляться через символ «точка».</p>
<p>Даже примитивные объекты здесь сможет отправлять сообщения. Тип соответствующих элементов поддерживает расширение. Это указывает на то, что программер способен определять собственные команды для каждого установленного типа данных.</p>
<p>В Swift отсутствуют скаляры. Все типы – это типы объектов. Можно выделить несколько objects в ЯП:</p>
<ul><li>классы;</li><li>перечисления (списки);</li><li>структуры.</li></ul>
<p>Это – только начало. То, что поможет начать грамотное изучение ЯП.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D1%83%D0%B7%D0%BD%D0%B0%D1%82%D1%8C_%D0%BE_Swift_%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B5"></span>Как узнать о Swift больше<span class="ez-toc-section-end"></span></h2>
<p>Google указывает на то, что Swift достаточно легко освоить. Это действительно так. Особенно данный момент касается тех, кто имел опыт в разработке и коддинге.</p>
<p>Получить специализированное образование по Свифту некоторые пытаются при помощи высшего учебного заведения. Сейчас в ВУЗах обучают базе коддинга, но Swift там встречается редко. То же самое касается техникумов. Эти способы получения образования дадут «базу», которая в будущем окажется не лишней для разработки под Apple.</p>
<p>Часто Свифт рассматривают самостоятельно в рамках самообразования. Тут на помощь приходят <a href="https://www.youtube.com/watch?v=ZJcVUSfdVyo" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">туториалы<span class="wpel-icon wpel-image wpel-icon-6"></span></a> и <a href="https://www.youtube.com/playlist?list=PLo6puixMwuSN48TxS4UNCmf6xKXZyQpYX" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">видео<span class="wpel-icon wpel-image wpel-icon-6"></span></a>, а также специализированная литература. Этот подход базируется преимущественно на практике. Подтвердить навыки документально не получится. Останется лишь собирать портфолио.</p>
<p>Но можно язык программирования Swift выучить при помощи дистанционных онлайн курсов. Здесь будет не только практика, но и грамотно составленная программа. В конце пользователи получат электронный сертификат установленной формы.</p>
<figure class="wp-block-image size-large"><a href="https://otus.ru/lessons/advanced-ios/?utm_source=oj&utm_medium=affilate&utm_campaign=ios" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><img decoding="async" width="970" height="90" src="https://otus.ru/journal/wp-content/uploads/2022/07/iOS_970x90-1.jpg" alt="Программирование на Свифт: что нужно учесть" class="wp-image-3984" srcset="https://otus.ru/journal/wp-content/uploads/2022/07/iOS_970x90-1.jpg 970w, https://otus.ru/journal/wp-content/uploads/2022/07/iOS_970x90-1-300x28.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/07/iOS_970x90-1-150x14.jpg 150w, https://otus.ru/journal/wp-content/uploads/2022/07/iOS_970x90-1-768x71.jpg 768w" sizes="(max-width: 970px) 100vw, 970px" /></a></figure>
<p></p>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/ios/" rel="tag" data-wpel-link="internal">iOS</a><a href="https://otus.ru/journal/tag/swift/" rel="tag" data-wpel-link="internal">swift</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Fprogrammirovanie-na-svift-chto-nuzhno-uchest%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprogrammirovanie-na-svift-chto-nuzhno-uchest%2F&text=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%20%D0%A1%D0%B2%D0%B8%D1%84%D1%82%3A%20%D1%87%D1%82%D0%BE%20%D0%BD%D1%83%D0%B6%D0%BD%D0%BE%20%D1%83%D1%87%D0%B5%D1%81%D1%82%D1%8C" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprogrammirovanie-na-svift-chto-nuzhno-uchest%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprogrammirovanie-na-svift-chto-nuzhno-uchest%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2022%2F07%2Foj-1080x720-14.png&description=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%20%D0%A1%D0%B2%D0%B8%D1%84%D1%82%3A%20%D1%87%D1%82%D0%BE%20%D0%BD%D1%83%D0%B6%D0%BD%D0%BE%20%D1%83%D1%87%D0%B5%D1%81%D1%82%D1%8C" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/chto-nuzhno-znat-o-swift/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/chto-nuzhno-znat-o-swift/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="100" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20100%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Что нужно знать о Swift" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-13-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-13-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-13-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-13-768x512.png 768w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-13-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-13-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-13-370x245.png 370w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-13.png 1080w" data-src="https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-13-150x100.png" data-sizes="(max-width: 150px) 100vw, 150px" title="Что нужно знать о Swift" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/chto-nuzhno-znat-o-swift/" data-wpel-link="internal">Что нужно знать о Swift</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/chto-nuzhno-znat-o-swift/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2022-07-11T17:19:02+00:00">11 июля, 2022</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">7 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/testirovanie-i-trymyui/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/testirovanie-i-trymyui/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="100" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20100%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Тестирование и TryMyUI" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-15-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-15-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-15-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-15-768x512.png 768w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-15-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-15-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-15-370x245.png 370w, https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-15.png 1080w" data-src="https://otus.ru/journal/wp-content/uploads/2022/07/oj-1080x720-15-150x100.png" data-sizes="(max-width: 150px) 100vw, 150px" title="Тестирование и TryMyUI" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/testirovanie-i-trymyui/" data-wpel-link="internal">Тестирование и TryMyUI</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/testirovanie-i-trymyui/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2022-07-11T17:49:54+00:00">11 июля, 2022</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">6 Mins Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/proekt-tg-autoposter-na-nest-js/" title="Проект «TG Autoposter на Nest.JS»" class="image-link" data-wpel-link="internal">
</a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/proekt-tg-autoposter-na-nest-js/" class="post-link" data-wpel-link="internal">Проект «TG Autoposter на Nest.JS»</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-12-23T00:44:53+00:00">23 декабря, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/langtrainee-razrabotka-mvp-ai-platformy-dlya-personalizirovannogo-izucheniya-yazykov/" title="LangTrainee: разработка MVP AI-платформы для персонализированного изучения языков" class="image-link" data-wpel-link="internal">
</a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/langtrainee-razrabotka-mvp-ai-platformy-dlya-personalizirovannogo-izucheniya-yazykov/" class="post-link" data-wpel-link="internal">LangTrainee: разработка MVP AI-платформы для персонализированного изучения языков</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-12T04:39:47+00:00">12 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/pochemu-my-ne-uhodim-iz-it-dazhe-kogda-hochetsya/" title="Почему мы не уходим из IT даже когда хочется" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Почему мы не уходим из IT даже когда хочется" title="Почему мы не уходим из IT даже когда хочется" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-1-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-1-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-1-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-1-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/pochemu-my-ne-uhodim-iz-it-dazhe-kogda-hochetsya/" class="post-link" data-wpel-link="internal">Почему мы не уходим из IT даже когда хочется</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-04T12:29:53+00:00">4 ноября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/programmirovanie-na-svift-chto-nuzhno-uchest\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Tue, 10 Mar 2026 14:53:48 GMT -->