Swift (язык программирования)

Swiftоткрытый мультипарадигмальный компилируемый язык программирования общего назначения. Создан компанией Apple в первую очередь для разработчиков iOS и macOS (в настоящий момент вышел за рамки этих ОС). Swift работает с фреймворками Cocoa и Cocoa Touch и совместим с основной кодовой базой Apple, написанной на Objective-C. Swift задумывался как более лёгкий для чтения и устойчивый к ошибкам программиста язык, нежели предшествовавший ему Objective-C[7]. Программы на Swift компилируются при помощи LLVM, входящей в интегрированную среду разработки Xcode 6 и выше. Swift может использовать рантайм Objective-C, что делает возможным использование обоих языков (а также С) в рамках одной программы.

Swift
Класс языка мультипарадигмальный (протоколо-ориентированный, объектно-ориентированный, функциональный, императивный)
Появился в 2014
Автор Крис Латтнер[d]
Разработчик Крис Латтнер[d] и Apple
Расширение файлов .swift
Выпуск 5.5[1] (20 сентября 2021 (2021-09-20))
Основные реализации LLVM
Испытал влияние Objective-C, C++, Java[2], Rust, Scala, Python, Ruby, Smalltalk, Groovy[3], язык D[4]
Лицензия с версии 2.2 Open Source (Apache 2.0 with a Runtime Library Exception[5][6])
Сайт swift.org
ОС
 Медиафайлы на Викискладе


История

Старший вице-президент по разработке программного обеспечения Apple Крейг Федериги во время анонса этого продукта заявил, что язык программирования Swift был заложен ещё в платформе NeXT (ОС NeXTSTEP выпускалась в 19891995 годах), которая стала основой для современной macOS, а затем и iOS[8].

Разработка текущего варианта языка Swift была начата в 2010 году Крисом Латтнером, руководителем отдела разработки инструментов для создания программного обеспечения Apple и одним из основных разработчиков LLVM. Swift заимствовал идеи из «Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, и ещё из стольких многих языков, что сложно перечислить»[9]. Первоначально для нового языка использовали название Shiny[10].

2 июня 2014 года на конференции WWDC Swift был официально представлен вместе с бесплатным руководством по использованию языка объёмом в 500 страниц, доступным на сервисе «iBook Store»[11].

8 июня 2015 года компания Apple объявила о выпуске новой версии Swift 2.0, которая получила более высокую производительность, новое API обработки ошибок, улучшения синтаксиса языка, а также функцию проверки доступности функций Swift для целевых ОС[12].

3 декабря 2015 года была выпущена бета версия Swift 3.0 с поддержкой операционных систем OS X, iOS и Linux и лицензированная под открытой лицензией Apache 2.0 license with a Runtime Library Exception[13][14]. Версия 3.0 обратно не совместима с более ранними версиями языка; начиная с нативной среды разработки XCode версии 9 более версии языка Swift-2 и ранее не поддерживаются.

В начале апреля 2016 неназванный источник СМИ в корпорации Google сообщил, что компания рассматривает возможность перевода языка Swift в язык «первого класса» для платформы Android[15]. Ранее уже предъявлялись прототипы Swift компилятора для Android[16][17][18].

19 сентября 2017 года была выпущена версия Swift 4.0.

В сентябре 2018 года, вместе с новой версией iOS 12, была выпущена новая стабильная версия языка Swift 4.2, и появилась бета-версия Swift 5.0. В версии 5.0 заявлена, наконец, стабильная работа ABI со стандартными библиотеками (Swift Dynamic Library), поддержка регулярных выражений и первоклассное решение для параллельной обработки данных с асинхронным режимом обработки async/await[19].

20 сентября 2019 Swift 5.1 — это следующий крупный релиз Swift, и его задача наконец обеспечить стабильность ABI.

Описание

Swift заимствовал довольно многое из Objective-C, однако он определяется не указателями, а типами переменных, которые обрабатывает компилятор. По аналогичному принципу работают многие скриптовые языки. В то же время, он предоставляет разработчикам многие функции, которые прежде были доступны в C++ и Java, такие как определяемые наименования, обобщения и перегрузка операторов.

Часть функций языка выполняется быстрее по сравнению с другими языками программирования. Например, сортировка комплексных объектов выполняется в 3,9 раз быстрее, чем в Python, и почти в 1,5 раза быстрее, чем в Objective-C[20][21].

Код, написанный на Swift, может работать вместе с кодом, написанным на языках программирования C и Objective-C в рамках одного и того же проекта[2].

Репозитории Swift

Apple разделила код Swift на несколько открытых репозиториев.

  • Компилятор и стандартная библиотека:
    • Swift: основной Swift репозиторий, который содержит исходный код для компилятора Swift, стандартная библиотека и SourceKit;
    • Swift-Evolution: документы, относящиеся к продолжающемуся развитию Swift, включая цели для предстоящих выпусков, предложения для изменений и расширений Swift;
  • Библиотеки ядра:
    • Swift corelibs-foundation: исходный код для Foundation, который предоставляет общую функциональность для всех приложений;
    • Swift corelibs-libdispatch: исходный код для libdispatch, который предоставляет примитивы параллелизма для работы на многоядерном аппаратном обеспечении;
    • Swift corelibs-xctest: исходный код для XCTest, который обеспечивает фундаментальную инфраструктуру тестирования для Swift-приложений и библиотек;
  • Менеджер пакетов:
    • Swift package-manager: исходный код для менеджера пакетов Swift;
    • Swift llbuild: исходный код для llbuild, система низкого уровня, который использует Swift package-manager;
  • Клонированные репозитории:
    • Swift опирается на несколько других проектов с открытым кодом, особенно на компилятор LLVM.
    • Swift llvm: исходный код LLVM, с кусочками Swift-дополнений;
    • Swift clang: исходный код для Clang, с кусочками Swift дополнений;
    • Swift lldb: исходный код Swift-версии LLDB, для отладки Swift программ;

Пример кода

// Переменные
var implicitInteger = 70
var implicitDouble = 70.0
var explicitDouble: Double = 70
// Константы
let speedOfLight = 299_792_458
let numberOfApples = 345
let numberOfOranges = 5
let appleSummary = "I have \(numberOfApples) apples."
let fruitSummary = "I have \(numberOfApples + numberOfOranges) pieces of fruit."
print("Hello, world")

let people = ["Anna": 67, "Beto": 8, "Jack": 33, "Sam": 25]
for (name, age) in people {
    print("\(name) is \(age) years old.")
}

См. также

Примечания

  1. Swift 5.5 Released!.
  2. Apple анонсировала новый язык программирования Swift. Sotovik.ru (5 июня 2014). Дата обращения: 5 июня 2014.
  3. Laforge, Guillaume. Apple's Swift programming language inspired by Groovy (англ.) (2 июня 2014). Дата обращения: 3 июня 2014.
  4. Building assert() in Swift, Part 2: __FILE__ and __LINE__ - Swift Blog -. Apple Developer. — «Swift borrows a clever feature from the D language: these identifiers expand to the location of the caller when evaluated in a default argument list.». Дата обращения: 26 сентября 2014.
  5. swift/LICENSE.txt at master · apple/swift · GitHub
  6. Apple (Россия) - Информация для прессы - Apple открывает исходный код языка Swift
  7. Главные задачи нового языка программирования Apple Swift — скорость и простота разработки. 3DNews (3 июня 2014). Дата обращения: 3 июня 2014.
  8. Главные задачи нового языка программирования Apple Swift — скорость и простота разработки. 3DNews (3 июня 2014). Дата обращения: 3 июня 2014.
  9. Chris Lattner's Homepage (3 июня 2014). — «I started work on the Swift Programming Language in July of 2010. I implemented much of the basic language structure, with only a few people knowing of its existence. A few other (amazing) people started contributing in earnest late in 2011, and it became a major focus for the Apple Developer Tools group in July 2013 [...] drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.». Дата обращения: 3 июня 2014.
  10. Chris Lattner on the origins of Swift – Ole Begemann
  11. The Swift Programming Language (неопр.). — Apple, 2014.
  12. Swift 2.0 будет с открытым кодом в конце года.. Habrahabr (9 июня 2015). Дата обращения: 9 июня 2015.
  13. Apple открыла исходный код своего «языка будущего».. CNews (4 декабря 2015). Дата обращения: 5 декабря 2015.
  14. About Swift — Официальный сайт.
  15. Google may be considering Swift for use on Android
  16. Running Swift code on Android
  17. Swift on Android: The Future of Cross-Platform Programming?
  18. swift/Android.md at master · apple/swift · GitHub
  19. iOS 12: взгляд разработчика, AppTractor (13 сентября 2018). Дата обращения 7 ноября 2018.
  20. How can Swift be so much faster than Objective-C in these comparisons?. programmers.stackexchange.com. Дата обращения: 18 мая 2016.
  21. Swanner, Nate. Google may be considering Swift for use on Android (англ.), The Next Web (7 April 2016). Дата обращения 10 марта 2017.

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.