C чего начать изучать Swift?
Бэкргаунд:
В школе программировал на Pascal, программировал очень даже неплохо, участвовал в олимпиадах. Т.к. в школе С++ не изучают, то дальше не пошло.
В институте программировали на Visual.
Информация о программировании в институте практически отсутствует в голове))) наверно сказались бурные студенческие годы))) Что странно — паскаль помню, помню какие программы писал, помню синтаксис языка и т.д.
Собственно вопрос. С какой стороны подойти к разработке на ios? Swift — это Object C? A Object C — это С++?
Правильно ли я понимаю? Все советуют начать с С++, так ли это?
Объясню почему очень не хочется тратить на это время. В дальнейшем он мне не пригодится, можно ли как-то познать синтаксис + какие-то базовые вещи и перейти сразу к разработке на ios?
Посоветуйте пжлста любые книги, видео, сайты на данную тематику. Желательно на русском.
Спасибо
- Вопрос задан более трёх лет назад
- 62559 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 6
Если вы хотите начать программировать именно на Swift — то карты вам в руки ) Ничто не мешает начать именно с него, как с первого вашего языка для iOS. На iTunеs U есть хороший курс на русском языке, который читает Сергей Пронин. Я его сам смотрел, мне очень понравилось, что очень мало воды — все четко и ясно. Второй позитивный момент это то, что в для Swift в Xcode не надо создавать проект, вы открываете Playground и начинаете кодить прям сразу, чтобы изучить язык и его конструкции.
Для начала этих двух ссылок вам должно хватить
Это перевод официальной книги по Swift — swiftbook.ru/doc
Это тот самый курс — https://itunes.apple.com/ru/course/razrabotka-ios-.
Теперь о плохом 🙂 Swift очень молодой язык и постоянно меняющийся, вам как новичку может быть не понятно, почему синтаксис так быстро и сильно меняется от версии 1 до 1.2 и затем до 2.0. Второй момент, скажу вам как человек, который уже полгода пишет большой проект на Swift — это порой сложно даже для меня: довольно медленная компиляция, плохое описание ошибок, различные сложности работы с 3rd party объектами И так далее итп. Не даром все ведущие разработчики сегодня пока еще открещиваются от перевода своих проектов в продакшене на Swift. Но если у вас есть уже какая-то своя задумка несложного первого приложения, то я думаю — стоит начать )
Язык программирования Swift

Swift — относительно молодой язык программирования, созданный сотрудниками компании Apple лишь в 2014 году. По сути, Свифт является переработанной и улучшенной версией языка ObjectiveC, ранее активно применявшегося для разработки программного обеспечения под операционную систему iOS.
Swift — объектно-ориентированный, компилируемый язык. В нем есть наследуемые классы и объекты. Чтобы запустить программу на Свифт, устройство должно перевести ее в машинный код с помощью компилятора.
Сферы применения языка
- Разработка нативных приложений для iOS и macOS.
Не менее 90% ПО для iPhone, iPad и iMac сейчас пишется на Swift. Приложения на этом языке быстро запускаются и стабильно работают в рамках операционных систем от Apple. - Доработка ПО, написанного на ObjectiveC.
Так как Objective С — прародитель Swift, приложения на этом языке легко переносятся на новую платформу. - Back-end для web-приложений.
Специальные фреймворки, например, Perfect и Vapor, позволяют использовать Свифт для программирования серверной части сайтов и мобильных приложений. Но такое использование языка — скорее исключение, чем правило.
Плюсы и минусы Swift

- Высокая производительность.
По скорости обработки данных Swift в несколько раз обходит не только ObjectiveС и Python, но некоторых случаях и C++. Функциональность кода при этом не страдает. В Свифт есть все необходимые для ОПП элементы — кортежи, дженерики, шаблоны ФП и пр. - Понятный синтаксис.
Swift — высокоуровневый язык. Команды в нем ближе к простой человеческой речи, чем к машинному коду. Даже сложный код в Свифт выглядит структурировано и компактно. За счет этого язык легко понимают как опытные программисты, так и новички. - Безопасность кода.
Разработчики Swift свели возможность возникновения критических ошибок в коде к минимуму. Среда разработки предполагает автоматизацию поиска и исправления фатальных багов. Утечка данных предотвращается за счет особого подхода к обработке частей памяти. - Открытость.
Swift — платформа с открытым кодом. Разработчики и студенты могут использовать ее бесплатно по лицензии. Такой подход помогает быстро и эффективно развивать продукт. Пользователи сами делают язык таким, каким хотят его видеть — разрабатывают фреймворки, находят и устраняют уязвимости, адаптируют код для разных операционных систем. Так что можно смело утверждать, что для Apple изменение ее общей политики закрытости стало удачным решением. - Удобная рабочая среда.
Xcode — это единая среда для создания приложений под iOS и macOS. Она включает в себя необходимые компиляторы, официальную документацию от Apple, инструмент для создания интерфейсов и даже “песочницу” для обучения языку. - Динамические библиотеки.
Готовые приложения на Swift можно редактировать и улучшать в любой момент за счет динамического, адаптируемого формата библиотек. Релиза новой версии операционной системы ждать не обязательно. - Автоматизированная работа с памятью.
Система сама заботится о распределении и очистке памяти, без участия программиста.
Назвав положительные стороны Swift, упомянем и его недостатки.
- Ограниченность применения.
Использование Swift за пределами “яблочных” устройств все еще считается чем-то экзотичным. По сути, этот язык замкнут в экосистеме Apple. - Недостаток библиотек.
Свифт — относительно новая среда разработки. За 8 лет он просто не успел обзавестись таким количеством библиотек и фреймворков, как “старые” языки. Но постепенно проблема решается, и библиотек становится больше. - Плохая совместимость со старыми версиями.
При выходе глобальных обновлений разработчикам на Swift приходится значительно дорабатывать код программ, чтобы они продолжали корректно работать. К тому же старые, “досфивтовые” версии iOS и MacOS совсем не поддерживают язык. - Небольшое комьюнити разработчиков.
Этот минус также связан с возрастом языка, и также постепенно решается. Но сейчас новичкам, особенно в ру-сегменте, бывает сложно найти наставников и получить дельный совет. Остается только изучать официальные гайды от Apple, которых, к счастью, достаточно много.
Основные понятия

Рассмотрим кратко главные составляющие языка.
Переменные и константы
В Swift есть два способа задать значение для переменной.
- Var — для непостоянных переменных, значение которых может измениться в будущем. Если мы напишем var a: int = 5, далее в коде мы можем написать var a: int = 10, и это не вызовет вопросов у компилятора.
- Let — для констант. После записи let a: int = 5 значение переменной a изменить нельзя. При попытке это сделать (let a: int = 10), компилятор выдаст ошибку.
Типы данных
Свифт поддерживает следующие стандартные типы данных:
- int — целые числа;
- float, double — дробные числа;
- string — строки;
- array — массивы чисел;
- dictionary — словари, то есть списки из слов и определений;
- set — массивы из слов.
Есть в Swift и свои, особые типы данных.
- Any — массив, объединяющий числовые и строчные данные. Например let arr1 = [1, 2, 3, “один”, “два”, “три”].
- AnyObject — коллекция из различных классов и структур.
Наличие особых типов, по сути, нарушающих строготипизированность языка, вызвано преемственностью Swift от Objective C, где есть аналогичный смешанный тип id.
Классы и структуры
Класс — одно из ключевых понятий в объектно-ориентированном программировании. По сути, класс служит для описания однородных объектов, имеющих сходные характеристики.
Допустим, мы хотим создать класс “Прямоугольник”, определяющий конкретную геометрическую фигуру и способ нахождения ее площади.
class Rectangle < var height: Int = 0 var length: Int = 0 func Recsquare(_ height: Int, _ length: Int) ->Int < let recsquare = height*length return recsquare >> var rectangle = Rectangle() rectangle.height = 3 rectangle.length = 6 print ("Высота прямоугольника: \(rectangle.height)\nДлинна прямоугольника: \(rectangle.length)\nПлощадь прямоугольника: \(rectangle.Recsquare(3,6)) " )
Здесь мы выводим на экран заданные параметры высоты и длинны, и рассчитанный через функцию параметр площади фигуры.

Структура задается похожим образом.
struct Rectangle < >var height: Int = 0 var length: Int = 0 func Recsquare(_ hight: Int, _ length: Int) -> Int
Главное отличие классов и структур — в наследовании. Классы передаются по ссылке вместе со значениями. Если мы приравняем один объект класса к другому — например, rectangle2 = rectangle1 — и присвоим объекту rectangle2 любое значение длины, он все равно сохранит значение длины объекта rectangle1.
Объекты в структурах не наследуют значения.
Опциональные типы
Такой подтип данных используется, если нам нужна переменная, в которой может не быть никакого значения.
На практике подобная ситуация возможна, например, при переводе строчных данных в числовые. У нас может быть переменная let thatString = «123». При попытке присвоить ее значение числовой переменной let thatNumber = Int(thatString) ошибки не произойдет, так как изначально в thatString содержалось число. Но там могло быть и слово. В таком случае программа обрушится. Исправить ошибку можно использовав опциональную переменную Int?. При отсутствии реального значения ей будет присвоено нулевое значение nil. До специальной проверки никакие операции с опциональной переменной совершать будет нельзя.
Такой подход повышает устойчивость программы и снижает вероятность ошибок.
Синтаксис опциональных переменных очень прост.
varSample: Int? = 10
Проверка опционала происходит следующим образом.
var strSample: String? strSample = «Test» if strSample != nil < print(strSample!) >else
Выражение != означает “не равно”. Через него мы проверяем, не записано ли в strSample значение “nil”. Знак восклицания после имени переменной strSample! возвращает ей ее действительное значение, если оно имеется.

Другие особенности Swift
- Отсутствие точки с запятой.
Как было видно в примере, синтаксис в Свифт заметно упрощен. Программисту не нужно следить за тем, как бы не упустить разделительный знак в конце строки. - Дженерики.
Это универсальные гибкие функции, исполнение которых не зависит от типа используемых переменных. Они делают код компактным и быстро исполняемым. - Кортежи.
Тип переменных, описывающий свойства одного объекта — конкретного пользователя, компании или, например, книги. Кортежи можно использовать в функциях, что довольно удобно.
Заключение
Swift — простой и практичный язык, предназначенный для написания программного обеспечения под устройства Apple. Он базируется на принципах объектно-ориентированного программирования и включает в себя классы, структуры и объекты для управления данными. Главные положительные стороны языка — быстрая обработка информации и повышенный уровень безопасности кода.
На Свифт можно создать любое приложение — от небольшой игры до крупного корпоративного портала.
ДОРОЖНАЯ КАРТА IOS-РАЗРАБОТЧИКА

Решили стать разработчиком под iOS или macOS? Решили стать частью сообщества? Не знаете с чего начать изучение языка программирования Swift? Интернет полон рекламы курсов, книг, статей и другого материала, а вы не знаете что выбрать? Тогда эта статья именно для вас!
Расскажем вам о первых шагах, которые предстоит пройти, прежде, чем вы научитесь реализовывать свои идеи в виде первоклассных (и безусловно популярных в будущем) приложений для «яблочной» платформы, будь то iOS, iPadOS, watchOS, tvOS или macOS. Путь от мысли до ее реализации может быть вовсе не долгим, и при этом очень интересным. Правда это возможно только в случае, если вы четко знаете куда идти, представляете конечную цель и у вас есть план ее достижения.
Ваша ближайшая задача — получить весь объем необходимых знаний и опыта, чтобы гордо носить звание Junior Swift Developer.
10 главных конструкций языка Swift
Чтобы быстро начать программировать на языке, достаточно знать несколько основных конструкций и общих правил написания кода. Со временем вы освоите все нюансы, а на старте можно использовать что-то попроще.
Мы уже писали про Swift — что умеет этот язык и для чего он нужен. Теперь посмотрим, из чего он состоит и как можно быстро вникнуть в код на Свифте.
О чём пойдёт речь
Мы обещали 10 конструкций, но в итоге получилось 12. Простите 🙂
Переменные
В Swift используют две основных команды:
- var — для обозначения переменной;
- let — для того, чтобы задать константу.
Тип данных можно не указывать, язык сам разберётся, что к чему:
var myVar = 42
let myConst = 42
Если нужно указать, что переменная должна иметь дробную часть, то делают так:
var myVar: Double = 40
Обратите внимание — Свифт не требует точки с запятой после каждой команды (и не считает ошибкой, если вы их поставите). Но если вы захотите написать несколько команд на одной строке, то точка с запятой понадобится, чтобы отделить одну команду от другой:
var s = 20; let q = ‘string’
Комментарии
Комментарии оформляются так же, как и в JavaScript — двойным слешем:
// привет, это комментарий
Ввод данных с клавиатуры
Чтобы ввести данные с клавиатуры, применяют команду readLine(). С её помощью можно ввести любые значения в какую угодно переменную, если ей подойдёт то, что мы написали.
// запрашиваем число у пользователя print("Введите число: ") // вводим число с клавиатуры var num = readLine() // теперь в переменной num хранится то, что мы ввели
Вывод данных в терминал
Для стандартного вывода данных можно использовать команду print() или println(). Они отличаются тем, что в первой команде курсор остаётся на той же строке, а во второй курсор после вывода перейдёт на новую строчку.
// После вывода «Привет» курсор останется на этой же строке, сразу после буквы «т» print("Привет") // а после этой команды курсор перейдёт на новую строку println("Это журнал Код") // в итоге у нас получится надпись «ПриветЭто журнал Код»
Присваивание и сравнение
Присваивание обозначается одним знаком равно, а проверка на равенство — двумя:
// это присваивание var s = 2 s = 5 // а это — сравнение s == 1
Ещё есть другие, тоже привычные всем операторы сравнения:
- равно (a == b)
- не равно (a != b)
- больше (a > b)
- меньше (a < b)
- больше или равно (a >= b)
- меньше или равно (a
Команды сравнения чаще всего используются в циклах и условных операторах.
Условный оператор if
Этот условный оператор работает так же, как и в других языках программирования: проверяет значение выражения и если оно истинно, то выполняет что-то одно, а если нет, то может выполнить что-то другое.
// если условие выполняется — выводим сообщение if team > 50 < print("Вы превысили допустимое число команд") // в противном случае увеличиваем групповой счёт на единицу >else
Условные операторы можно вкладывать друг в друга сколько угодно раз, а внутри писать сколько угодно команд. Иногда для упрощения кода используют оператор множественного выбора.
Оператор множественного выбора case
Допустим, мы показали пользователю меню с выбором действий, и теперь ему нужно ввести номер команды из меню. В зависимости от того, что введёт пользователь, мы должны выполнить разные команды. В Swift для этого используют оператор case:
let menu = readLine() switch menu < // если введена единица case 1: visibleComment = "Пользователь добавлен в список" // если пользователь ввёл 2 или 3 case 2, 3: accessLevel = true // если ввёл 4 case 4: print("Не хватает прав доступа") // если ввёл любое другое значение default: print("Такой команды нет в меню") accessCounr += 1 >
Цикл с предусловием for-in
Чтобы работать с циклом, где точно известно число повторений, используют последовательность с нужным числом элементов. Это очень похоже на то, что есть в Python:
// переменная цикла var i = 0; // делаем цикл от 1 до 5, включая 1 и 5 for i in 1. 5 < // выводим текущее значение переменной цикла println(i) >
Ещё вариант — использовать команду where, которая определяет условия выборки из последовательности:
// берём последовательность от 0 до 10 и используем для цикла только те числа, которые делятся на 2 без остатка for i in 0. 10 where i % 2 == 0 < // получается, что на экране будут только чётные числа println(i) >
Циклы с постусловием while и repeat-while
Если мы не знаем, сколько раз будет выполняться наш цикл, но знаем, что пока условие верное, цикл должен работать, — то в этом случае используют цикл while:
// переменная цикла var i = 10 // пока переменная больше ноля — цикл выполняется while i > 0 < // выводим текущее значение переменной print(i) // уменьшаем значение переменной на единицу i -= 1 >
С этим циклом есть один нюанс: если условие сразу не выполняется, то цикл вообще не запустится и то, что написано внутри, тоже ни разу не сработает. Если же нам нужно, чтобы цикл выполнился как минимум один раз, а потом уже запускал все проверки, используют цикл repeat-while. Он как бы переворачивает цикл вверх ногами: сначала команды, а потом проверка:
// переменная цикла var i = 10 // сразу запускаем цикл, на первом шаге без проверки repeat < // выводим текущее значение переменной print(i) // уменьшаем значение переменной на единицу i -= 1 // пока переменная больше ноля — цикл продолжает выполняться >while i > 0
Функции
Как и в большинстве языков программирования, в Swift функция может возвращать какое-то значение, а может и работать сама по себе. Самая простая функция выглядит так:
func hello() print(«Привет, это журнал Код»)
>
Эта функция ничего не возвращает, а при вызове hello() просто выводит на экран нужную фразу.
Если мы хотим передать в функцию какие-то параметры, то их нужно прописать в круглых скобках при объявлении:
func hello(name: String) < print("Привет, \(name) ; , это журнал Код") >// вызываем функцию hello(name: "Миша") // Привет, Миша, это журнал Код
Чтобы функция возвращала какое-то значение, мы должны указать тип этого значения, например, что функция вернёт строку или число:
func hello(name: String) -> String < // возвращаем новую строку с именем внутри return("Привет, \(name) ; , это журнал Код") >// вызываем функцию с помощью команды вывода на экран print(hello(name: "Миша")) // Привет, Миша, это журнал Код
Классы
Классы определяются так, как это принято в ООП — сначала идёт название класса, потом переменные (свойства класса) и функции (методы класса, если они нужны):
// объявляем новый класс class User < // определяем возраст пользователя по умолчанию var age: Int = 18 // переменная для хранения имени пользователя var name: String = "" // метод внутри класса func newUser()< print("Это новый клиент, предложите ему бонусную карту") >>
Объекты
Чтобы создать новый объект на основе класса, берут переменную и присваивают ей значение этого класса. После этого можно работать с любыми свойствами объекта, прописанного в классе, и вызывать любые методы:
// создаём объект класса User // теперь клиент mike — это наш новый объект со всеми свойствами класса var mike: User = User() // задаём возраст клиента mike.age = 22 // и его имя mike.name = "Миша" // выводим имя клиента на экран print(mike.name) // вызываем метод класса mike.new() // на экране появится надпись "Это новый клиент, предложите ему бонусную карту"
Если пока не знаете, зачем нужны классы и объекты, прочитайте наш цикл статей про объектно-ориентированное программирование.
Что ещё
Или оставайтесь у нас, мы будем рассказывать про технологии и программирование на русском 🙂