WWDC 2014: история появления Swift

Главное событие пресс-конференции по случаю открытия WWDC 2014 года случилось в самом её конце. Ему уделили совсем немного времени. Крис Латнер, умеющий захватить внимание аудитории и делать с ней все что захочет, был скован и непохож на себя. И тем не менее, WWDC 2014 вошла в историю как “WWDC на которой был представлен Swift”. Новый язык программирования, название которого переводится просто и без затей как “Стриж”, пришел на смену Objective-C.

WWDC 2014: история появления Swift. Фото.

26 лет этот язык использовался в NeXTSTEP и во всех наследниках этой системы (Mac OS X, iOS, GnuStep, tvOS), стал одним из самых популярных языков в мире, а по моему мнению он был (есть?) лучшим из лучших. Я не могу быть объективным, с 2001 по 2016 Objective-C был моим основным языком программирования. До него были ObjectPascal и C++.

Все остальное, объявленное и представленное на той пресс-конференции (новые версии OS X, iOS и Xcode, и даже Metal) произвело значительно более слабый эффект.

Это продолжение серии про WWDC 2014, предыдущие части здесь:

Первая часть: WWDC 2014: по версии Apple, 25-я WWDC;
Вторая часть: WWDC 2014: Вспоминая QuickDraw 3D;
Третья часть: WWDC 2014: Metal – это очень серьезно.

Раскол

Восторг, охвативший самых разных людей, искренний и неподдельный, я не разделял. Мне было больно и неприятно читать и слышать восхваления в адрес нового языка, который нес в сплоченные ряды пишущих для “яблочных” систем раскол и неразбериху.

В исходных кодах библиотек iOS и OS X десятки (если не сотни) миллионов строк кода на Objective-C. Переписать их на Swift в ближайшие лет десять-двадцать было нереально, тем более переписать по-умному, чтобы не утратить что-то важное и приобрести что-то очень важное и нужное.

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

Что до самого языка, то сначала он мне очень не понравился. Скачав книгу про Swift (это шедевр технической документации, без капли иронии), и открыв её в первый раз, я увидел что-то вроде let aNumber = 42. Как в самых древних вариантах Basic’а! Отсталых уже тогда, когда я их изучал, лет за 20 до конца предыдущего тысячелетия. Оператор присваивания в них выглядел именно так, почти в точности (примерно так: LET ANUMBER = 42).

Я плюнул и закрыл эту электронную книгу. Возвратившись с работы и преодолев себя, я приступил к чтению. Оказалось что “let” в Swift имеет вполне достойное предназначение, но язык мне активно не нравился.

Строгий контроль за типами данных, сплошные “нельзя” и “обязательно” – это же кошмар, правда? Идея с optionals интересна, но как-то все непривычно. Не по-людски! А мне с ним жить.

Язык мне не нравился очень долго. Целую эпоху. Неделю или две. Через месяц меня охватил восторг.

Смелые обещания

Публике Swift представили как Objective-C без C. Будто бы из-за этого освоить его будет легче. Молодёжь к нему потянется, и напишет шедевры невероятной мощи. Стоп…

Человек, который не способен освоить C, может быть гением в любой области, но шедевр программистского искусства он не напишет никогда. Это не его.

WWDC 2014: история появления Swift. Смелые обещания. Фото.

К счастью, это всего лишь маркетинговый лозунг. C в Swift’е присутствует на каждом шагу, это C-подобный язык. Хотя собственно C, как отдельной сущности, в нем действительно нет.

Swift сконструирован по-умному, в нем предусмотрено многое из того о чем раньше никто не заботился. Язык очень предсказуем, безопасен, многие из самых типичных ошибок в нем физически невозможны – но вообще-то он сложнее чем C. В нем очень много правил о которых надо откуда-то узнать.

Современный, быстрый, компактный, продуманный, безопасный – пожалуй, эти обещания в новом языке были выполнены, с самого начала.

Но в то что Swift, с первого его дня, станет “гражданином первого сорта” в iOS и OS X я не поверил. В этом направлении Apple им команда Латнера сделали очень многое, возможное и невозможное, и даже (забегая вперед, в 2014 году об этом еще никто не знал) несколько раз все это переделали, улучшив и углУбив.

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

Когда системы хотя бы наполовину будут написаны на Swift, тогда это обещание будет исполнено.

Порадовало что никто не пообещал что даже самые-самые альтернативно одаренные товарищи смогут без труда писать в Swift отличный “софт”. Увы. Ни один язык в мире не гарантирует от ужасных программ.

Обещания (их было дюжины полторы) были “придуманы” в маркетинговой службе, со слов инженеров и менеджеров знавших про Swift и языки программирования не понаслышке. Их общение, скорее всего, было нервным – но продуктивным.

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

Swift 1.0

При всех его удивительных качествах, первый Swift был очень сырым, многое в нем вело себя не так как обещала Книга (бесплатная, отлично написанная, книга про Swift).

Согласно теории Жана-Поля Гассé, любое сложное техническое изделие (компьютер, программа, операционная система, графический или центральный процессор) не может “состояться” раньше чем в третьей его версии.

WWDC 2014: история появления Swift. Swift 1.0. Фото.

Теория работает не всегда: процессоры от Apple “состоялись” уже в первой их версии, в той которая называлась Swift (это Apple A6 и Apple A6X), а Cyclone (центральный процессор в Apple A7) уже просто громил конкурентов. Были и обратные примеры (но о грустном не буду).

Swift-который-язык состоялся именно в третьей версии.

Когда Крис ушел из Apple, самым главным в проекте Swift стал Тед Кременек, один из тех кто придумал, продумал и сделал реальностью это язык. Мне показалось что чуду пришел конец – но, судя по нынешней версии языка, я ошибался.

А какой язык лучше – Swift или Kotlin или современный C++?

Джеф Раскин говорил что сравнивать сложные сущности на лучше/хуже также нелепо как сравнивать точки на плоскости на больше/меньше. Джеф говорил много разных вещей. С очень многими его утверждениями я не согласен – но не с этим.

Про сам язык не пишу – о нем столько всего уже написано.

Продолжение следует

Предлагаем подписаться на наш канал в «Яндекс.Дзен». Там вы сможете найти эксклюзивные материалы, которых нет на сайте.

История AppleРазработка приложений для iOS