Язык свифт – Немного практики функционального программирования в Swift для начинающих / Habr

Стоит ли изучать Swift?

Если думаете, какой язык программирование изучить, советуем обратить внимание на Swift, и вот почему.

Swift – мощный и интуитивно понятный язык программирования для macOS, iOS, watchOS и tvOS, но отличается от Objective-C более широким набором возможностей, которые ограничивались связью с C. Кроме того, Swift можно назвать безопасным, поскольку язык имеет строгую типизацию: в любой момент времени вы точно знаете, с объектом какого типа вы работаете. Главным его преимуществом является скорость: как в работе над проектом, так и при запуске готового приложения. Именно за это преимущество перед другими языками (по заверениям создателей, он вобрал в себя всё лучшее от других языков программирования) его и назвали Swift (в переводе — быстрый).

Этот вопрос широко обсуждался с момента появления Swift, но как и тогда, аргументов в пользу его изучения больше. Да и сама Apple не раз давала понять, что будущее — за Swift. При этом, его можно использовать параллельно с Objective-C, чтобы не возникало проблем с разными версиями. По этой же причине многие работодателю относятся серьезно к тому, что кто-то отказывается изучать Objective-C, считая, что Swift ещё достаточно сырой.

Apple хвастается тем, что Swift до 2.6 раз быстрее, чем Objective-C, и на 8,4 раза быстрее, чем Python 2.7. Думаем, что вопроса почему нужно заботиться о быстром выполнении кода не возникает — и так должно быть понятно, что более быстрый код работает более эффективно и плавно, что позволяет пользователю получилось удовольствие от взаимодействия с устройством.

Можно сказать, что это так. Swift был разработан, чтобы новички в программировании могли легко начать создавать собственные приложения, поэтому научиться программировать невероятно легко. В Apple сравнивают своё детище с языком сценариев, а программисты с BASIC.

Да!

Вообще говоря, это спорный вопрос. Swift постоянно совершенствуется, поэтому истинными экспертами являются лишь его создатели. Даже если вы сами создали несколько отличных приложений и освоили ряд продвинутых курсов и учебных пособий, вы всё равно не будете одним из лучших, а потому на собеседованиях говорят, что постоянно совершенствуются, а не достигли совершенства уже к этому моменту).

Во всяком случае, когда вы поиграетесь со Swift и прощупаете его, поймёте, нравится вам это или нет и приступите к работе над реальными проектами, тогда можно будет сказать, что вы по крайней мере стремитесь стать профессионалом. А вообще, всё зависит от вас.

Когда-то, Objective-C был основным языком программирования Apple для написания приложений, ещё со времён OS X. Но за это время языки и практика программирования сильно изменились, особенно в области мобильной разработки. Вместо того, чтобы дорабатывать старое, Apple решила пойти другим путём и изменить сам подход разработчиков к работе, сделав процесс более интерактивным.

Ну, не факт, что в ближайшие годы Apple закончит разработку Swift, ведь это будет означать его убийство. Здесь, как и в случае с любым новым языком, существует вероятность ошибок. Но всё постоянно обновляется, потому что это в интересах самой Apple. Кстати, в Google уже подумывают над возможностью запуска Swift-приложений на Apple, так что у него всё ещё впереди.

Вероятнее всего, на Ruby или Python. Хотя здесь можно узнать и синтаксис из C.

Cocoa и Cocoa Touch — это фреймворки, которые работают на OS X и iOS соответственно. Оба они в основном реализованы с Objective-C и интегрированы с Xcode (если вы ещё не в курсе, то это среда разработки). Они состоят из библиотек, API-интерфейсов и рантаймов. Поскольку Swift — это язык для разработки под iOS, он также работает с Cocoa и Cocoa Touch. Если интересно, по ссылке более подробная информация со страницы для разработчиков на сайте Apple.

Ну вот, теперь, когда вы знаете кое-что о Swift, вы можете подумать, стоит ли его изучать. Хотя наш совет — начать изучение как можно скорее, для этого помогут наши статьи:

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

У этого термина существуют и другие значения, см. Swift.
Swift
Класс языка мультипарадигмальный ( протоколо-ориентированный, объектно-ориентированный, функциональный, императивный)
Появился в 2014
Автор Крис Латтнер[d] и Apple
Расширение файлов .swift
Выпуск 4.1[1] (2018-03-29; 210 дней тому назад)
Основные реализации: 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 выпускалась в 1989—1995 годах), которая стала основой для современной 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.

Описание

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

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

[18][неавторитетный источник?][19].

Код, написанный на 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. ↑ How can Swift be so much faster than Objective-C in these comparisons?. programmers.stackexchange.com. Проверено 18 мая 2016.
  19. Swanner, Nate. Google may be considering Swift for use on Android (англ.), The Next Web (7 апреля 2016). Проверено 10 марта 2017.

Ссылки

Архивы Курс: Гид по языку программирования Swift

Описание курса

Язык программирования Swift является новым языком корпорации Apple, который призван заменить собой Objective-C, существующий с середины 80-х годов. В этом курсе вы узнаете все основные моменты языка, что позволит вам без проблем написать свой отлично работающий код. Язык Swift является новейшей разработкой Apple и имеет ряд преимуществ и отличий от языков семейства C, с которыми вы так же познакомитесь и будете работать в этом курсе.

Вам не стоит переживать, что вы чего-то не поймете или что вы не с того языка начинаете свой путь программиста. Совершенно нет. Язык Swift идеален для старта начинающим программистам, так как не имеет запутанного синтаксиса и лишнего багажа, который тащат большинство языков еще с 70-х годов, так как он был представлен только в 2014 году на WWDC (международная конференция разработчиков Apple). С помощью playground (встроенная функциональность Xcode, начиная с версии Xcode 6) вы сможете освоить язык за короткие сроки, так как весь ваш код исполняется моментально и у вас нет необходимости создавать проекты или каждый раз запускать симулятор.

Да, вам придется открыть для себя много нового, но если в вас есть желание изучать, познавать, а затем создавать что-то новое, то это именно для вас!

Содержание курса

Содержание
1. Знакомство с Playground (11:08)
2. Константы и переменные (4:21)
3. Типы данных (8:26)
4. Базовые операторы (13:47)
5. Интерполяция строк (6:21)
6. Массивы (10:33)
7. Словари (7:33)
8. Множества (8:54)
9. Инструкция if (10:31)
10. Инструкция guard (5:30)
11. Инструкция switch (05:22)
12. Цикл for-in (8:17)
13. Циклы while, repeat-while (3:38)
14. Функции (17:52)
15. Замыкания или клоужеры (5:26)
16. Кортежи (6:46)
17. Опционалы (6:13)
18. Классы (9:08)
19. Инициализаторы (6:02)
20. Наследование (9:17)
21. Вычисляемые свойства (10:23)
22. Свойства классов (6:09)
23. Ленивые свойства (2:46)
24. Наблюдатели свойства (5:50)
25. Уровни доступа (7:06)
26. Алиасы типов (4:02)
27. Перечисления или энумы (11:05)
28. Структуры (8:03)
29. Импорт фреймворков или библиотек (5:53)
30. Проверка типов и приведение типов (10:43)
31. Типы AnyObject и Any (3:57)
32. ARC (9:10)
33. ARC в замыканиях (9:04)
34. Опциональные цепочки (6:14)
35. Обработка ошибок и отложенные действия (15:22)
36. Сабскрипты (6:16)
37. Расширения (4:48)
38. Протоколы (10:54)
39. Универсальные шаблоны (9:15)
40. Обновление Swift 4 (8:15)
41. Новые фишки Swift 5 (05:44)
42. Заключение (0:58)

 

Общая продолжительность курса 5 часов 26 минуты 06 секунд.

от Objective C к Swift / Habr

Чтобы отказаться от языка программирования, на котором уже ведется коммерческая разработка, и начать учить новый, программистам нужны серьезные основания. Но история ИТ-индустрии знает много случаев, когда выбор за них делало время, и переход происходил как бы сам по себе.

Что заставило множество разработчиков перейти на Objective C? Что сейчас заставляет отказаться от него и выбрать Swift?

Objective C является расширением языка Си, в который были добавлены новые возможности для объектно-ориентированного подхода программирования. Язык использует объектную модель Smalltalk. Полностью совместим с языком программирования Си. Компания Apple долгое время использовала Objective C как основной язык программирования для разработки своих продуктов.

Создателями Objective C являются Брэд Кокс и Том Лав. Они начали работать над ним в начале1980-х годов, когда еще были сотрудниками телекоммуникационной компании ITT Corporation. Примерно в то же время Кокс и Лав познакомились с языком программирования Smalltalk. Кокса тогда занимали проблемы повторного использования программного кода.

Вследствие увеличения объема кода в проектах и сложностей его поддержки, с 1960х начинает образовываться новая, объектно-ориентированная парадигма программирования, разбившая программы на еще более мелкие составляющие – типы данных.

Каждый объект является переменной определенного программистом типа данных (так называемого класса). Определение такого специального пользовательского типа данных (класса) заключается в двух вещах: определении набора данных (инвариантов, членов) и набора подпрограмм (методов), которые будут их обслуживать.

Основным преимуществом объектно-ориентированного подхода стала возможность создавать новые классы на основе уже написанных (добавлять инварианты и методы, переопределять методы, использовать определенные в базовом классе методы как свои), названное наследованием.

Набор методов представляет собой интерфейс для взаимодействия с инвариантами.


OOPC


Брэд Кокос быстро понял, что Smalltalk не подойдет для решения задач в ITT Corporation: совместимость с языком С для них была критична. Однако Кокс решил модифицировать препроцессор для С в сторону Smalltalk.
Модификация эта состояла в добавлении новых синтаксических конструкций и специальном препроцессоре для них (который, проходя по коду преобразовывал их в обычные вызовы функций С), а также новой библиотеке времени выполнения (эти вызовы обрабатывающей). Таким образом, изначально Objective C воспринимался как надстройка над C. В каком-то смысле это так и до сих пор: можно написать программу на чистом С, а после добавить к ней немного конструкций из Objective C (при необходимости), или же наоборот, свободно пользоваться С в программах на Objective C. Кроме того, все это касается и программ на С++.

То, что получилось, Кокс назвал «OOPC» – Object-Oriented Pre-Compiler. В 1982 году Лав устроился в Schlumberger Research и получил возможность приобрести коммерческую версию Smalltalk-80. Это помогло им в дальнейшей работе над Objective C. В итоге в Objective C была реализована возможность создавать объекты и работать с ними.

Целью Кокса было создание языка, поддерживающего концепцию software IC, подразумевающей возможность собирать программы из готовых компонентов (объектов), подобно тому как сложные электронные устройства могут быть собраны из набора готовых интегральных микросхем. При этом язык должен быть простым и основанным на языке С, чтобы облегчить переход разработчиков на него.

Одной из целей было также создание модели, в которой сами классы являются полноценными объектами, поддерживалась бы интроспекция и динамическая обработка сообщений. Любому объекту можно послать любое сообщение. Объект может вместо обработки сообщения переслать его другому объекту для обработки (делегирование), в частности, так можно реализовать распределённые (то есть находящиеся в различных адресных пространствах и даже на разных компьютерах) объекты.

Привязка сообщения к соответствующей функции происходит на этапе выполнения.

Язык Objective C поддерживает работу с метаинформацией — так, на этапе выполнения можно узнать класс объекта, список его методов (с типами передаваемых аргументов) и instance-переменных, проверить, является ли класс потомком заданного и поддерживает ли он заданный протокол и так далее.

NeXT


В 1986 году Кокс опубликовал книгу Object-Oriented Programming, An Evolutionary Approach, в которой разместил описание своего языка программирования, разобрал проблему повторного использования кода и указал преимущества Objective C при ее решении. Лав и Кокс также создали компанию Productivity Products International (PPI), который должен был помочь монетизировать компилятор Objective C с библиотеками классов. Далее фонд был переименован в StepStone.

В 1988 году компания NeXT Software лицензировала язык Objective C, усовершенствовала его библиотеки и добавила новые – AppKit и Foundation Kit. На их основе позднее была создана среда разработки NEXTSTEP.

В 1992 к усовершенствованию языка и компилятора подключились разработчики проекта GNU в рамках проекта OpenStep. С тех пор GCC поддерживает Objective C.

Не добившись успеха на рынке в качестве производителя компьютеров, компания NeXT переключило все свое внимание на создание и продажу средств разработки ПО.

20 декабря 1996 года компания Apple купила NeXT Software, а среда разработки NEXTSTEP стала основной средой разработки для будущей основной версии операционной системы Apple — OS X.

После покупки NeXT, Apple взяла их SDK (компилятор, библиотеки, IDE) за основу для своих дальнейших разработок. IDE для разработки кода получила название Xcode, а для GUI – Interface Builder. Фреймворк Cocoa для GUI разработок (и не только) на сегодня является наиболее значимой средой разработки программ на Objective C.

В 2007 году компания Apple презентовала обновленную версию языка и назвала его Objective C 2.0, данная версия языка является актуальной в настоящее время. Используется в разработке Apple OS X, iOS.

Swift


В 2014 году компания Apple представила новый язык программирования – Swift. Он стал самым быстрорастущим языком программирования в истории.

«С открытием исходного кода Swift разработчики всего мира могут вносить свой вклад в этот язык программирования и делать его доступным на новых платформах, — сказал тогда Крейг Федериги, старший вице-президент Apple по программному обеспечению. — Эффективность и простота Swift дадут молодым программистам стимулы к обучению, к тому же теперь они смогут распространять свои идеи повсюду: от мобильных устройств до облачных систем».

Создатель языка Swift – Крис Латтнер. Он пришел в Apple в 2005 году. Там он занимался разработкой LLVM. Apple использовала LLVM для того, чтобы изменить способ использования Objective C при создании приложений.

LLVM (Low Level Virtual Machine) — это универсальная система анализа, трансформации и оптимизации программ или, как её называют разработчики, «compiler infrastucture».
Крис Латтнер курирует все инструменты разработчиков Apple: все, с помощью чего создаются программы для телефонов, планшетов и компьютеров Apple, как сторонними разработчиками, так и инженерами компании. Будучи аспирантом университета штата Иллинойс, он создал своего рода средства для разработчика под названием LLVM, которые сегодня лежат в основе Xcode.
Латтнер также использовал LLVM в качестве основы для Swift. Эти два продукта специально были созданы для работы в тандеме.

Над Swift он начал работать летом 2010 года. Латтнер держал это в секрете полтора года. Он создавал Swift в свободное от основной работы время.

Через полтора года он рассказал о проекте топ-менеджерам Apple. Высоко оценив работу Латтнера, они направили ему в помощь нескольких разработчиков. Однако проект был все еще окутан ореолом таинственности. Даже люди, косвенно принимавшие участие в создании языка и помогавшие Крису, были сильно удивлены, над чем именно он работал. Еще через полтора года проект Латтнера попал в список главных направлений компании, а команда разработчиков существенно расширилась.

По мнению Apple, язык Swift имеет все шансы изменить ИТ-индустрию.

2 июня 2014 года компания выпустила тестовую версию для сторонних разработчиков и программистов. Apple позиционирует это язык как более быстрый и эффективный способ создания программ для iPhone, iPad и Mac.

Расширение аудитории


Языку программирования необходимо несколько лет, чтобы стать популярным хотя бы в узких кругах энтузиастов. Достаточно показательна ситуация с языком Go, который компания Google представила еще в 2009 году. Над Go работали лучшие умы (Кен Томпсон и Роб Пайк), однако и по сей день прикладываются немалые усилия для его популяризации. Однако Apple делает все, чтобы Swift стал исключением и последовал примеру языков Java и C# в 1990-х и начале 2000-х соответственно.

Swift создан для среднестатистического программиста. На языке можно писать даже самые простые приложения, а наделенный довольно умными инструментами, язык предлагает эффективный способ учиться написанию самостоятельно. Но главная причина будущей популярности языка кроется в другом. Сотни тысяч разработчиков сегодня создают приложения для устройств Apple, используя Objective C. Устройства Apple пользуются большой популярностью, а значит эти разработчики продолжат создавать для них приложения, но уже на Swift. По мнению Apple, он значительно лучше и эффективнее, чем Objective C.

3 декабря 2015 года компания открыла исходный код Swift. Всемирное сообщество разработчиков — от создателей приложений до компаний и учебных заведений — может развивать Swift и оптимизировать язык, чтобы сделать его доступным на новых вычислительных платформах.

«Не было никакого реального стимула использовать Google Go» — говорит Пол Янсен, который отслеживал прогресс различных языков программирования в течение около пятнадцати лет. «Swift отличается наличием стимула».

В рейтинге TIOBE Swift занимает 14-ю позицию. За год он поднялся на 3 позиции. Язык Go переместился с 95 позиции на 20, что очень впечатляет. А Objective C опустился с 6 места на 15. Таким образом, можно сказать, что Swift технически обошел своего предшественника.

Сегодня на GitHub, популярном хранилище разработок с открытым исходным кодом, более 2500 проектов используют Swift.

Swift – это не просто язык, это язык, который тесно связан со всем, что требуется разработчику для работы. Сюда входит не только интегрированная среда разработки, но и многие другие инструменты (например, отладчик), которые уже знакомы каждому разработчику Apple.

Swift быстр (скорость реализации некоторых алгоритмов в 3,9 раза больше, чем на Python) и лаконичен (разработчики избавились от многословности Objective C). Ещё одно важное нововведение — это возможность писать код и видеть результаты в режиме реального времени.

До этого на протяжении долгого времени процесс создания программного продукта и сам продукт были разделены, и из-за этого программисты должны были тратить много времени на проверку и оптимизацию кода. В Swift они могут вносить поправки и сразу видеть результат. Это значит, что разработчики смогут быстрее проверять в деле свои концепты и в целом быстрее создавать приложения.

P.S. Apple не первая компания, которая выпустила новый язык программирования в недавнем прошлом. Это уже сделали Facebook, Google и Mozilla. К чему это приведет — покажет время.

Почему Swift может стать большим событием в глубинном обучении / Habr

Здравствуй, Хабр! Представляю вашему вниманию перевод заинтересовавшей меня статьи «Why Swift May Be the Next Big Thing in Deep Learning» автора Max Pechyonkin, в которой автор рассуждает о языке на котором будет осуществляться глубокое обучение в ближайшие годы.

Если вы занимаетесь глубинным обучением, то скорее всего вам стоит начать учить Swift

Вступление


Если вы занимаетесь программированием, то скорее всего когда вы слышите Swift, вы думаете о разработке приложений на IOS и MacOS. Если вы занимаетесь глубинным обучением, то вы должно быть слышали о Swift для Tensorflow(S4TF). Тогда вы можете задаться вопросом: «Почему Google создали версию TensorFlow для Swift? Ведь уже есть версии для Python и С++ то зачем еще один язык?» В этом посте, я попытаюсь ответить на этот вопрос и изложить причины почему стоит пристально следить за S4TF, а так же за самим языком Swift. Я не буду пытаться сделать подробный разбор, лишь попытаюсь описать общую картину с большим количеством ссылок, если вас заинтересует — вы можете копнуть глубже.

За Swift стоит очень сильная поддержка


Swift был создан Крисом Латтнером когда он работал в Apple. Сейчас же Крис работает в Google Brain (одной из самых лучших исследовательских команд в сфере искусственного интеллекта в мире). Уже сам факт того, что создатель языка Swift сейчас работает в лаборатории, которая занимается глубинным обучением, говорит о серьезности этого проекта.

Некоторое время назад люди в Гугл осознали, что даже если Пайтон и замечательный язык, в нем все равно есть очень много ограничений которые тяжело преодолеть. Понадобился новый язык для TensorFlow, и после долгого обдумывания Swift был выбран кандидатом. Я не буду вдаваться в детали здесь, но вот документ, который описывает недостатки Python, а так же какие другие языки были рассмотрены и как в итоге это все сошлось на Swift.

Swift для TensorFlow это намного больше чем просто библиотека


Swift для TensorFlow это не просто TF для еще одного языка. Это по сути другая ветвь(в git смысле) языка Swift как такового. Это означает что S4TF это не библиотека; это язык со своими собственными правилами, со своими встроенными функциями которые поддерживают всю функциональность требуемую TensorFlow. Например, в S4TF есть очень мощная система автоматического дифференцирования: она является одной из фундаментальных вещей в глубинном обучении, она нужна для расчетов градиентов. Сравните это с Python, в котором автоматическая дифференциация не является основным компонентом языка. Некоторые функции разработанные первоначально как часть S4TF были позже интегрированы в сам язык Swift.

Swift быстрый


Когда я впервые узнал что Swift настолько же быстрый, как и C, я был изумлен. Я знал что С был высоко оптимизированным и позволял достигнуть очень высокой скорости, но это происходило за счет микро управления памятью, и поэтому у С были проблемы с безопасностью памяти. Кроме того С не так просто и выучить.

Сейчас Swift работает так же быстро как и С в численных расчетах, у него нет проблем с безопасностью памяти, и его намного легче выучить. Компилятор LLVM у Swift очень мощный и у него очень эффективная оптимизация, она обеспечит очень быструю скорость работы кода.

Вы можете использовать Python, C и C++ в Swift


Поскольку Swift для машинного обучения находятся на очень ранней стадии своего развития, то для него не создано столько библиотек для МО. Вы не должны об этом сильно волноваться поскольку у Swift есть удивительная совместимость с Python с Python. Вы просто импортируете любую Python библиотеку в Swift, и она работает. Также вы можете импортировать С и С++ библиотеки в Swift(для С++ вы должны убедиться что заголовочные файлы написаны на чистом С, без функций С++).

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

Swift может идти на очень низком уровне


Если вы когда-то пользовались TensorFlow, скорее всего вы делали это с помощью пакета для Python. Под капотом Python версия библиотеки TensorFlow использует С код на очень низком уровне. Поэтому когда вы вызываете функцию в TensorFlow, на каком-то уровне вы используете немного кода С. Это означает что есть предел того, насколько глубоко вы можете проверить исходный код. Например, если вы хотите посмотреть, как реализованы свертки(convolutions), вы не увидите код Python, потому что они реализованы на С.

В Swift же по другому. Крис Латтнер назвал Swift «синтаксическим сахаром для LLVM[язык ассемблера]». Это означает, что по сути, Swift работает практически напрямую с железом, и между нет никаких других строк кода написанных на С. Это так же означает что Swift очень быстрый, как я и описал выше. Это все приводит к тому, что вы, как разработчик можете проверить код как на очень высоком, так и на очень низком уровнях, без потребности использовать С.

Что дальше?


Swift это только одна часть тех инноваций в глубинном обучении которые готовят в Google. Есть еще один компонент, который так же очень сильно связан: MLIR, что означает многоуровневое промежуточное представление(Multi-level intermediate representation). MLIR будет объединяющей инфраструктурой компилятора, которая позволит писать код на Swift(или любом другом языке) и компилировать его на любом поддерживающем железе. Сейчас существует множество компиляторов для разного целевого оборудования, но MLIR сособен изменить это, позволит не только повторно использовать код, но и писать собственные низкоуровневые компоненты компилятора. Это так же позволит исследователям применять машинное обучение для оптимизации низкоуровневых алгоритмов.

Пока MLIR действует как компилятор для машинного обучения, мы так же видим возможность использования методов машинного обучения в компиляторах. Это особенно важно, так как количество инженеров разрабатывающих числовые библиотеки не растет так же быстро как растет разнообразие моделей или железа для машинного обучения.

Представьте возможность использовать глубинное обучение, чтобы оптимизировать низкоуровневые алгоритмы разбиения памяти на данные(похожую задачу пытается решить Halide). И это только начало, нас ждет еще много других креативных приложений использующих машинное обучение в компиляторах.

Итоги


Если вы в сфере глубинного обучения, тогда вам скорее всего стоит начать учить Swift. Это принесет много преимуществ по сравнению с Python. Google серьезно инвестирует в то чтобы Swift стал главным компонентом их TensorFlow ML инфраструктуры, и скорее всего Swift станет языком глубинного обучения. Если вы уже сейчас начнете учить и использовать Swift, то это даст вам преимущество первопроходца.

Как Swift навсегда изменит мир программирования

Крис Латтнер полтора года создавал новый язык программирования, и за все это время никому об этом не сказал, даже своим близким друзьям и коллегам. Он начал летом 2010 года, работая по ночам и выходным, и к концу года уже наметил основы нового языка. Именно тогда он рассказал о своем проекте топ-менеджерам компании, которые были настолько впечатлены, что подключили к работе еще нескольких опытных инженеров.

Спустя еще полтора года его проект стал основным направлением компании, в котором было задействовано огромное количество специалистов, работающих бок о бок с Латтнером. Это означало лишь одно, что новый язык программирования вскоре должен изменить компьютерный мир. Латтнер, как вы понимаете, работал на Apple.

Новый язык был назван Swift, и Apple представила его на всеобщее обозрение во время WWDC 2 июня. Спустя 4 года после того, как Латтнер приступил к своему детищу, новый язык шокировал всех, за исключением нескольких осведомленных лиц Apple.

Викрам Адве, преподаватель Иллинойского университета, когда-то помогал Латтнеру создавать основы для одной программы, которая затем легла в основу Swift. Но, как и все остальные, он был невероятно удивлен тем, что его студент столько лет создавал новый язык программирования. «Apple настолько скрытная компания, и, похоже, Крис выпил ее волшебного зелья», — сказал, смеясь, Адве. — «Я знал, что он работает над проектом, который занимает все его время, но это все, что я знал».

Как правило, когда из ниоткуда появляется новый язык, ему требуется несколько лет, чтобы завоевать свою аудиторию. Это утверждение справедливо, даже если речь идет о таком гиганте, как Apple.

Apple_Swift_Logo

В 2009 году Google представила язык Go, разработанный известнейшими инженерами Кеном Томпсоном и Робом Пайком, и он до сих пор не завоевал большую популярность в мире. Но Swift — это иной случай. Он может достичь массового использования в кратчайшие сроки, превосходя по скорости освоения Java и C# в конце 90-х и начале 2000-х годов.

Преимущество Swift заключается в том, что он написан для среднего программиста и подойдет для создания самого простого мобильного приложения. А с таким простым инструментом, как Playgrounds, любой разработчик сможет легко изучить этот язык самостоятельно. К тому же, уже сейчас у множества программистов есть ряд причин для использования Swift.

Сегодня сотни тысяч разработчиков пишут приложения для iPhone и iPad, используя Objective-C. И ввиду огромной популярности данной платформы, они, безусловно, продолжат их писать и дальше. Swift содержит в себе значительные улучшения, по сравнению с Objective-C, а это значит, что огромное сообщество разработчиков по всему миру начнет изучать новый язык в ближайшие месяцы.

«Не было никакого реального стимула использовать Google Go», — говорит Пол Йансен, который отслеживал использование различных языков программирования при помощи Tiobe Index в течение последних 15 лет. «Разница заключается в том, что у Swift он есть».

Уже сейчас около 2400 проектов, находящихся на GitHub, популярном хостинге для открытых IT-проектов, используют Swift. А в этом месяце новый язык дебютировал под 16 номером в списке самых обсуждаемых языков по версии Tiobe. Да, почти то же самое происходило с Go в 2009 году, но с тех пор данный язык потерял свое влияние. А Swift со временем должен только усилить свои позиции.

«Люди перейдут на новый язык, потому что на нем проще писать код», — говорит Йансен. — «Они должны выбрать либо Objective-C, либо Swift. И большинство выберет Swift».

DSC_1545-630x354

Крис Латтер курирует инструменты разработчиков Apple, все инструменты, которые используют инженеры Apple и сторонние разработчики, занимающиеся программным обеспечением для персональных компьютеров, ноутбуков, планшетов и смартфонов. Будучи аспирантом Иллинойского университета, под руководством Викрама Адве, он создал систему для разработчиков под названием LLVM, которая сейчас составляет основу Xcode.

После того, как Латтнер присоединился к Apple в 2005 году, компания перешла на LLVM, что повлияло на то, как Objective-C стал использоваться разработчиками для создания приложений. И спустя 5 лет Латтнер внедрил данную систему в качестве основы Swift.

Он отказался давать интервью для данной статьи без одобрения PR-отдела Apple, но он кратко описал эволюцию Swift на своей странице. Даже не вдаваясь в детали, можно сказать, что Латтнер построил Swift в тандеме с существующими инструментами Apple, чтобы разработчики могли легко использовать новый язык наряду с Objective-C.

Другими словами, Swift — это не только язык. Он тесно взаимодейстует с другими инструментами, которые позволяют разработчикам создавать свое программное обеспечение. А они включают в себя не только встроенную среду разработки, но и, в том числе, отладчик, который выявляет все погрешности кода. И большинство из этих инструментов знакомы каждому разработчику Apple. В общем, инженеры Apple создали простой переход для десятков тысяч разработчиков, которые пишут программы под iPhone, iPad и Mac.

Так как разработчики никогда раньше не работали с этим языком, у них должны быть веские причины, чтобы перейти от Objective-C к Swift. «Я первый и единственный на сегодняшний момент человек с опытом работы Swift в течение 4 лет», — написал Латтнер в Twitter.

Для того, чтобы освоить новый язык, нужно время и усердие, что, зачастую, для многих является большой проблемой. Но Латтнер и Apple привели неоспоримые аргументы в пользу Swift. Нельзя сказать, что он намного привлекательнее других языков, таких как C#, Ruby или Python. Но это большой шаг вперед по сравнению с Objective-C, который корнями уходит в середину 80-х годов,  и который не так легок в использовании.

«Множество людей отказывается от Objective-C из-за его необычного синтаксиса», — говорит Майк Эш, инженер Apple, который последние 15 лет занимается разработкой разнообразного программного обеспечения компании, — «У Swift более правильный, стандартный синтаксис, который сможет заинтересовать таких людей». «Он сделан для продуктивного программиста, и позволяет ему делать больше вещей за меньшее время».

Как пишет Латтнер на своей странице, Playgrounds позволяет сделать программирование более интерактивным и доступным. «На него сильно повлияла философия дизайнера Брета Виктора и его интерактивная программная система Light Table. Как и в Light Table, он позволяет вам писать код на одной стороне экрана и смотреть на появляющиеся результаты с другой. Другими словами, вы можете прогонять программу во время того, как ее пишите».

Во время WWDC 2014 Латтнер продемонстрировал некоторые возможности Swift и Playgrounds на примере очень простой игры. Инструменты позволяют добавлять новый код без повторной компиляции и перезапуска всей системы. «Когда вы вносите изменения, они внедряются в уже запущенный процесс, в ту версию программы, которая работает в этот момент», — говорит Крис Грейнджер, один из создателей Light Table.

«Я надеюсь, что программирование станет более доступным и веселым занятием», — написал Латтнер. — «Мы обращаемся к новому поколению программистов и помогаем пересмотреть методику преподавания информатики».

Light Table может совершать то же самое, только с различными языками, такими как Python, Clojure и Javascript. Но, по мнению Грейнджера, Playgrounds может быть особенно полезным инструментом,  потому что Swift был разработан специально для работы с ним. «Поскольку они создали этот язык и его контролируют, они могут делать те вещи, которые мы не можем производить с другими языками».

Playgrounds еще немного подглючивает, но уже сейчас он может сильно сократить время, необходимое для написания кода. «Мгновенная обратная связь Playgrounds может привлечь огромное количество людей в новую область».

swift-interactive-playground-660x375

Традиционно существовала пропасть между компилированными языками программирования, такими как Objective-C и C++, и интерпретируемыми языками, такими как Python, Ruby и PHP. Используя первые, вы сначала должны были написать код, а затем ждать, пока ваш компилятор превратит его в некое программное обеспечение. Но после того, как программа будет собрана, она будет работать очень быстро. Интерпретируемые языки позволяют тестировать программу почти мгновенно, но работают медленно. Swift собрал лучшее из этих двух миров. Он дружественен как по отношению к разработчику, так и по отношению к компьютеру.

Apple — не единственная компания, которая изучает новые области программирования. Facebook пытается создать нечто подобное, разрабатывая языки Hack и D. Google прощупывает данную почву при помощи Go, Mozilla делает то же самое с Rust. Но все эти языки далеки от Swift.

Да, они находятся в свободном доступе, и в теории, они могут быстрее распространиться при помощи  различных устройств и сервисов других компаний. Со Swift — совершенно другая ситуация, его программное и аппаратное обеспечение жестко контролируется. И, скорее всего, его нельзя будет использовать для других платформ.

Но даже если он останется исключительно за Apple, он сможет получить огромное влияние и распространение, не сравнимое ни с одним современным языком программирования. И все благодаря столь популярным iPhone, iPad и Mac.

Да, многие другие языки могут проделывать те же вещи, что и Swift, а некоторые даже лучше, а в том же Light Table есть альтернатива Playgrounds. Но все же, Swift уникален своей простотой и интерактивностью и уже сейчас, спустя всего несколько месяцев после своего представления, он интересен многим десяткам тысяч разработчиков по всему миру.

via Wired

Swift обучение — курс уроков обучения языку Свифт для начинающих на itProger

Представляем вам большой видео урок по изучению языка Swift от переменных и до ООП. За урок вы изучите основы языка Swift и научитесь работать в среде программы Xcode. Вами будут изучены все основные моменты, а также весь синтаксис языка Свифт.

Полезные ссылки:

Информация про Swift

Язык Swift был разработан компанией Apple в 2014 году. Считается очень молодым языком, но благодаря мощной поддержки со стороны Apple стал популярным практически с первого дня выхода. 

Swift позволяет писать программный код для создания игр и приложений под всю продукцию компании Apple, а именно:

  • Планшеты — iPad;
  • Телефоны — iPhone;
  • Компьютеры — MacBook и iMac;
  • Часы — Apple Watch;
  • ТВ приставки — Apple TV.
Язык Objective C

До появления языка все программы под Apple были написаны на основе языка Objective C. Со дня выхода языка Swift рейтинги языка Objective C сильно упали и на данный момент практически никто не изучает и не пишет новые приложения на основе этого языка.

Так происходит по той причине, что Apple сильно продвигает язык Swift, который объективно проще, удобнее и более функционален нежели его предшественник. 

Изучать язык Objective C мы не рекомендуем, ведь никакой новой нужной для вас информации вы не подчеркнете при изучении этого устаревшего языка. 

План курса

Изучение языка Swift не занимает много времени, так как компания Apple постаралась сделать его максимально простым и удобным в использовании. Он имеет простой и логичный синтаксис, который легко запомнить и несложно использовать.

В курсе мы отделим лишь один большой урок на изучение языка Swift. За урок вы изучите весь необходимый синтаксис языка и далее начнете разрабатывать приложения на его основе. 

За курс вы создадите одно полноценное приложения с дизайном и функциональностью, а также разработаете небольшую игру с динамичностью, анимациями, звуками, переходами и прочим.

Исходный код

Структуры

struct Square {
    var length : Int
    
    func sum (num: Int) {
        print ("(num + num)")
    }
}

var block = Square (length: 10)
block.sum (num: 2)

Классы и объекты

import Cocoa
import Darwin

class Car {
    var model : String = "No model"
    var weight : Float = 0.0
    var speed : Float = 0.0
    var wheels : Int = 4
    
    init(model: String, weight: Float, speed: Float, wheels: Int) {
        self.model = model
        self.weight = weight
        self.speed = speed
        self.wheels = wheels
    }
    
    func info () {
        print ("(self.model) has weight (self.weight) and speed (self.speed). Also it has (self.wheels) wheels!")
    }
    
    func set (model: String) {
        self.model = model
    }
    
    func set (wheels: Int, weight: Float) {
        self.wheels = wheels
        self.weight = weight
    }
    
    func set (speed: Float) {
        self.speed = speed
    }
}

var audi = Car (model: "Audi", weight: 2.1, speed: 232.2, wheels: 4)
audi.info()
audi.set(model: "Audi R8")
audi.info()
audi.set(speed: 321.5)
audi.info()

var volvo = Car (model: "Volvo", weight: 2.1, speed: 170.6, wheels: 4)
volvo.set(wheels: 4, weight: 1.8)
volvo.info()
Посмотреть остальной код можно после подписки на проект!

Leave a comment