Здравствуйте! Знакомство с новым языком программирования от Apple мы начнем с того, что разберемся, для чего он был создан и на чем писали приложения под операционные системы от яблочной компании до его появления. В начале 80-х, вдохновившись языком Smalltalk, Том Лав и Брэд Кокс разрабатывают свой язык программирования. Изначально он назывался OOPC, что расшифровывается как Object Oriented Precompiler, так как являлся препроцессором для C, добавляющим в него поддержку объектно-ориентированного программирования. В 1983 году они основывают компанию Productivity Products International, сокращенно PPI, и дают своему языку новое имя — Objective-C. В 88-м году компания NeXT приобретает у PPI лицензию на использования Objective-C для разработки своей операционной системы. Они добавляют в компилятор GCC поддержку Objective-C, а также создают фреймворки AppKit и Foundation Kit. И хотя компьютеры NeXT продавались не очень, сама операционная система привлекла к себе много внимания. В 1995 году NeXT выкупает права на Objective-C полностью, а год спустя вместе с языком программирования и операционной системой ее выкупает Apple. Они используют наработки NeXT для создания новой операционной системы Mac OS X, которая была выпущена в 2001 году и заменила классическую Mac OS. Позже на ее основе были созданы iOS, watchOS и tvOS. Таким образом, основным языком для Apple стал Objective-C, а AppKit и Foundation Kit стали неотъемлемой частью операционных системы купертиновской компании. Тем временем в 2000 году Крис Латтнер в рамках своей магистерской работы начинает разработку Low Level Virtual Machine, сокращенно LLVM. Изначально он был написан как часть стека GCC в качестве замены существующего кодогенератора. LLVM — это большой проект, включающий в себя множество технологий. Основная его идея заключается в том, что компилятор транслирует исходный код в универсальное промежуточное представление. Дальше LLVM оптимизирует его и превращает в ассемблерные команды, соответствующие целевой операционной системе и архитектуре. Одним из преимуществ такого подхода является то, что оптимизацию можно написать только один раз для промежуточного представления, а не для каждого языка, как это было раньше. Плюс это позволяет уменьшить зависимость между компонентами. Можно разработать компилятор для любого языка независимо от архитектуры, а для поддержки всех этих языков на новой системе достаточно реализовать для нее трансляцию промежуточного представления в ассемблерный код. На слайдах вы видите высокоуровневую схему этих подходов. В данном примере три компилятора, три транслятора промежуточного представления под каждую из платформ и один LLVM-оптимизатор. Чтобы поддержать такое же количество языков и платформ в традиционном стиле, пришлось бы создать девять монолитных и сложных в поддержке компиляторов. Первая версия LLVM была выпущена в 2003 году, а в 2005 Apple наняла Латтнера, для того чтобы использовать эти технологии в своих продуктах. Спустя два года LLVM-GCC вместе с XCode 3.1 входят в состав Mac OS X Leopard. Однако у GCC было несколько недостатков. Основные из них — это огромная кодовая база и проблемы с лицензированием. Поэтому параллельно с этим Крис Латтнер и его команда занимаются разработкой нового компилятора — Clang. Также этот проект входит в статический анализатор и несколько других утилит для анализа кода. И уже с версией XCode 3.2 Apple дает возможность разработчикам пользоваться новым компилятором, а в версии 4.2 он становится компилятором по умолчанию. Также появляется новый отладчик LLDB. Таким образом, Apple имеет современный стек утилит для компиляции C, C++ и Objective-C кода. Однако кое-что в этой системе остается старым, а именно язык — Apple сильно связан с Objective-C. На нем написано много кода, в том числе и сторонними разработчиками приложения. Но он имеет множество недостатков. Мы не будем сейчас подробно на них останавливаться. Тему сравнения Swift и Objective-C мы решили вынести в отдельное видео. В 2010 году Крис Латтнер начинает работу над новым языком программирования — он должен был сохранить основные концепции предшественника, то есть динамическую диспетчеризацию, позднее связывание, расширение, но при этом быть более безопасным и предоставлять больше синтаксического сахара, чтобы облегчить разработку. Через 4 года на WWDC 2014 Apple презентует первую версию Swift и добавляет его в XCode 6.0. Новый язык привлекает к себе много внимания — он получает звание любимого языка программирования по результатам опроса разработчиков на Stack Overflow в 2015 году. Первые версии Swift не имели обратной совместимости. После выпуска новых версий приходилось переписывать код под новую версию. Несмотря на наличие мигратора многое приходилось делать вручную. Учитывая ежегодные релизы и общую сырость языка, многие были не готовы использовать новый язык в реальных проектах. Но команда разработчиков Swift сделала своей основной целью совместимость будущих версий языка. Это означает не только менее кардинальные изменения в синтаксисе, но и совместимость на уровне библиотек и исполняемых файлов, собранных разными версиями Swift. Так, например, в XCode 9.0 появилась возможность совмещать в одном проекте код, написанный на версии языка 3.2 и 4.0. Пройдя наш курс, вы убедитесь в том, что Swift прост в изучении, безопасен и выразителен. при этом в Swift имеются конструкции и для продвинутых разработчиков, а именно дженерики, указатели, замыкания, а также некоторые приемы функционального программирования. На этом наше видео об истории появления Swift закончено. Не пропустите сравнение Swift и Objective-C. В нем мы расскажем, почему нужно выбирать для разработки именно Swift.