Язык программирования Swift используют, чтобы писать приложения и программы для устройств Apple: айфонов, айпадов, умных часов, телевизоров, макбуков и стационарных компьютеров с macOS. В iOS-разработке этот язык считается стандартом.
Инструменты и библиотеки Swift позволяют писать на нём сайты и веб-сервисы. Такие задачи встречаются в компаниях, где разрабатывают приложения для iOS и нужны их веб-версии.
На Swift полностью или частично написано множество мобильных версий приложений и сервисов для iOS, например Firefox, YouTube, WordPress, Uber.
Objective-C обладал достаточно громоздким и сложным синтаксисом. Это было приемлемо, когда программистов требовалось мало, но когда спрос на них вырос, пришлось обучать их достаточно быстро. Apple нужен был новый язык — более современный и простой в освоении. Поэтому в 2010 году программисты этой компании занялись созданием Swift для iOS-разработки. Многое взяли как из Objective-C, так и из Rust, Haskell, Ruby, Python, C#, CLU и множества других языков.
В 2014 году Swift официально представили миру, в 2015 уже разработали его вторую, улучшенную версию. После язык регулярно обновляли — сейчас все пользуются Swift 5, созданным в 2019 году и обновляемым в среднем каждые полгода.
Сейчас Swift считается стандартом для разработки приложений для iOS и macOS. Некоторые компании ещё разрабатывают приложения на Objective-C, но в основном это поддержка старого кода. Большинство стараются переписать старый код на Objective-C, а весь новый писать на Swift.
1. Поддерживает и объектно-ориентированное, и функциональное программирование. Swift поддерживает все необходимые инструменты ООП, которые позволяют работать с элементами кода как с проектами. Swift был разработан как язык с поддержкой функционального программирования и имеет более богатый набор инструментов функционального программирования, чем Objective-C. Это позволяет применять Swift для создания приложений для iOS и других задач с разными требованиями.
2. Защищён от ошибок. В большинстве старых языков программирования не предусмотрена защита от некоторых проблем, например контроль за типами переменных, которого не было в Objective-C. В Swift с этим всё в порядке, что помогает избежать ошибок при написании кода.
3. Наследник Objective-C. Swift позволяет использовать конструкции и библиотеки своего предшественника. Это упрощает разработку для тех, кто переходит с Objective-C на Swift.
4. Поддерживает управление памятью. Когда объект кода перестаёт быть нужным, Swift автоматически освобождает память, которая использовалась для этого объекта. Никаких специальных манипуляций для этого не нужно. Это делает Swift удобным для мобильных приложений, где ограничения памяти обычно довольно серьёзные.
Swift был создан простым и удобным для изучения. Однако при его освоении придётся столкнуться с некоторыми сложностями, к которым лучше подготовиться:
● Надо изучать основы программирования. Swift на первый взгляд может показаться простым, но если изучить его поверхностно, то ничего серьёзного разработать не получится. Придётся разобраться в принципах объектно-ориентированного и функционального программирования, освоить алгоритмы, типы и структуры данных.
● Процесс обучения никогда не закончится. Из-за регулярных обновлений знания придётся актуализировать постоянно. Во многом это касается и других языков и технологий в IT, но в случае со Swift изменения происходят часто, язык развивается, появляется новый функционал для оптимизации приложений и облегчения работы разработчиков. В 2019 году выпустили стабильную версию Swift 5. Новые версии полностью совместимы с предыдущими.
● Многое придётся писать самостоятельно. У популярных языков много готовых библиотек и инструментов. Они позволяют не программировать какие-то вещи с нуля, а сразу встраивать в свой код. У Swift такие инструменты тоже есть, но их существенно меньше. Эти инструменты не придётся осваивать, но писать функции с нуля нужно будет чаще.
Осваивать новый язык всегда проще под контролем преподавателя и с максимумом практики. На курсе «iOS-разработчик» студенты изучают теоретические основы, а затем выполняют практические задания, чтобы закрепить навыки. Профессиональные разработчики проверяют работы студентов и отвечают на вопросы.
// Объявление переменной
var myVariable = "Hello, world!"
// Вывод сообщения на консоль
print(myVariable)
// Объявление константы
let myConstant = 10
// Условный оператор if
if myConstant < 20 {
print("Less than 20")
} else {
print("Greater than or equal to 20")
}
// Цикл for–in
for i in 0..<5 {
print("\(i) times 2 is \(i*2)")
}
Код можно запустить в песочнице Playground в Xcode, создав File → New → Playground → Blank.
import Foundation
// Функция для получения случайного жеста от компьютера
func getComputerGesture() -> String {
let gestures = ["Rock", "Paper", "Scissors"]
return gestures.randomElement()!
}
// Функция, которая принимает два жеста и возвращает победителя
func getWinner(playerGesture: String, computerGesture: String) -> String {
// Ничья
if playerGesture == computerGesture {
return "Ничья!"
}
// Игрок при выборе камня побеждает, если компьютер выбрал ножницы
if playerGesture == "Rock" && computerGesture == "Scissors" {
return "Вы победили!"
}
// Игрок при выборе ножниц побеждает, если компьютер выбрал бумагу
if playerGesture == "Scissors" && computerGesture == "Paper" {
return "Вы победили!"
}
// Игрок при выборе бумаги побеждает, если компьютер выбрал камень
if playerGesture == "Paper" && computerGesture == "Rock" {
return "Вы победили!"
}
// Если всё иное, компьютер выиграл
return "Вы проиграли..."
}
// Функция для получения жеста от пользователя
func getPlayerGesture() -> String {
print("Choose your move: (R)ock, (P)aper, or (S)cissors?")
while true {
if let playerChoice = readLine(strippingNewline: true) {
// Обработка выбора игрока
switch playerChoice.lowercased() {
case "r", "rock":
return "Rock"
case "p", "paper":
return "Paper"
case "s", "scissors":
return "Scissors"
default:
print("Выберите жест корректно: (R)ock, (P)aper, or (S)cissors?")
}
}
}
}
// Основной цикл игры
while true {
let playerGesture = getPlayerGesture()
let computerGesture = getComputerGesture()
let winner = getWinner(playerGesture: playerGesture, computerGesture: computerGesture)
print("Вы выбрали \(playerGesture), компьютер выбрал \(computerGesture). \(winner)")
// Запрашиваем у пользователя, хочет ли он играть ещё раз
print("Сыграем ещё раз? (Y)es or (N)o")
if let playAgain = readLine(strippingNewline: true)?.lowercased() {
if playAgain == "n" {
break
}
}
}
Код можно запустить в проекте для macOS в Xcode. Для этого нужно открыть File → New → Project → macOS → Command Line Tool.
import UIKit
class ViewController: UIViewController {
// Объекты интерфейса пользователя
@IBOutlet weak var myTextField: UITextField!
@IBOutlet weak var myButton: UIButton!
@IBOutlet weak var myLabel: UILabel!
// Функция обработки нажатия кнопки
@IBAction func myButtonTapped(_ sender: Any) {
guard let enteredText = myTextField.text else {
return
}
// Отправка текста на сервер
MyServer.sendTextToServer(text: enteredText) { (serverResponse) in
DispatchQueue.main.async {
self.myLabel.text = serverResponse.responseText
}
}
}
}
class MyServer {
// Отправка текста на сервер
static func sendTextToServer(text: String, completion: @escaping (ServerResponse) -> Void) {
// Обработка ответа сервера
let serverResponse = ServerResponse(responseCode: 200, responseText: "Your text was successfully sent to the server!")
completion(serverResponse)
}
}
struct ServerResponse {
let responseCode: Int
let responseText: String
}
Код из примера можно запустить в проекте для macOS в Xcode. Для этого нужно создать File → New → Project → iOS → App.
Чтобы начать программировать на Swift, нужно освоить:
1. Синтаксис Swift. Операторы, циклы, переменные, функции.
2. Общие знания о программировании. Понимание типов данных и структур данных понадобится, чтобы писать программы самостоятельно, а не просто опираться на готовые примеры и знакомый синтаксис.
3. Разработку мобильных приложений. В основном на Swift пишут для iOS, watchOS и tvOS, поэтому нужно знать их специфику и освоить нужные для этого инструменты, например UIKit, Core Data, MapKit.
Для старта этого вполне достаточно. Дальше придётся углубляться в тему: изучать UI/UX, работу с базами данных, больше узнавать о возможностях языка. И конечно, больше практиковаться, потому что одних теоретических знаний для работы недостаточно.
Анастасия Кудашева
Если вы решили начать свой путь в iOS-разработке, помните, что никому не было легко в новом деле. Если сейчас сложно — это хороший знак, который говорит о том, что вы на верном пути. Полученные знания стоит закрепить на собственном проекте. Например, сделать личный рандомайзер, приложение-помощник для любимой игры или другое приложение, которое может понадобиться в повседневной жизни.
Не забывайте поддерживать свою мотивацию. Обязательно отмечайте свои успехи и анализируйте ошибки. Извлекайте из этого уроки и используйте их для дальнейшего улучшения своих навыков, чтобы стать настоящим экспертом в iOS-разработке.
Читать также: