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

Swift
Класс языка мультипарадигмальный (протоколо-ориентированный, объектно-ориентированный, функциональный, императивный)
Появился в 2014
Автор Крис Латтнер[d]
Разработчик Крис Латтнер[d] и Apple
Расширение файлов .swift
Выпуск 5.4[1] (26 апреля 2021; 49 дней назад (2021-04-26))
Основные реализации 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
ОС
Commons-logo.svg Медиафайлы на Викискладе

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


История[ | ]

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

Разработка текущего варианта языка Swift была начата в 2010 году Крисом Латтнером[en], руководителем отдела разработки инструментов для создания программного обеспечения 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 = 3
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.4 Released! (англ.) (26 April 2021). Дата обращения 26 апреля 2021.
  2. 1 2 Apple анонсировала новый язык программирования Swift. Sotovik.ru (5 июня 2014). Дата обращения: 5 июня 2014.
  3. Laforge, Guillaume. Apple's Swift programming language inspired by Groovy (англ.) (2 June 2014). Дата обращения: 3 июня 2014.
  4. 1 2 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.

Ссылки[ | ]