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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Swift
Swift logo with text.svg
Класс языка мультипарадигмальный ( протоколо-ориентированный, объектно-ориентированный, функциональный, императивный)
Появился в 2014
Автор Крис Латтнер[d]
Разработчик Крис Латтнер[d] и Apple
Расширение файлов .swift
Выпуск 4.1[1] (2018-03-29; 233 дня тому назад)
Основные реализации: 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])
ОС macOS, iOS, tvOS, watchOS, Linux
Сайт swift.org

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].

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

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

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

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

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

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

Описание[править | править код]

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

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

Код, написанный на 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 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. Inc., Apple. Swift 4.1 Released! (англ.), Swift.org (29 March 2018). Проверено 30 марта 2018.
  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 (June 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. The Swift Programming Language. — Apple, 02 June 2014.
  11. Swift 2.0 будет с открытым кодом в конце года. (рус.). Habrahabr (9 июня 2015). Проверено 9 июня 2015.
  12. Apple открыла исходный код своего «языка будущего». (рус.). CNews (4 декабря 2015). Проверено 5 декабря 2015.
  13. About Swift — Официальный сайт.
  14. https://thenextweb.com/dd/2016/04/07/google-facebook-uber-swift/
  15. http://romain.goyet.com/articles/running_swift_code_on_android/
  16. https://academy.realm.io/posts/swift-on-android/
  17. https://github.com/apple/swift/blob/master/docs/Android.md
  18. iOS 12: взгляд разработчика, AppTractor (13.09.2018). Проверено 7 ноября 2018.
  19. How can Swift be so much faster than Objective-C in these comparisons?. programmers.stackexchange.com. Проверено 18 мая 2016.
  20. Swanner, Nate. Google may be considering Swift for use on Android (англ.), The Next Web (7 апреля 2016). Проверено 10 марта 2017.

Ссылки[править | править код]