Что за Swift показала Apple в 2012 году?

12 сентября 2012 Apple представила iPhone 5, внутри которого, неназванный и никому не известный, был Swift. В 2012 году! Только это был совсем другой Swift, не тот о котором вы подумали. И едва ли не более сенсационный…

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

Возьму на себя смелость предложить свою версию: обе стороны правы. Некоторые очень известные проекты Apple прошли через эту стадию. Стив, как правило, склонялся к одному из вариантов их развития, но по тем или иным причинам не останавливал работу и над их альтернативой или даже альтернативами. И как минимум в одном случае он оказался прав, iPhone – это бывшая альтернатива. Оппозиция великому деспоту.

Стив был уверен что размеры устройства и его экрана идеальны. Они не были случайными, это результат серьезных и дотошных исследований. Но весной 2011, когда iPhone 4S был уже на финишной прямой (тестирование, отладка, доводка), пришло время определиться с параметрами следующей модели. В распоряжении тех, кому это было поручено, были идеи и наработки, результаты экспериментов, предложения (самы разные) и сведения о сильных и слабых сторонах конкурентов.

И, как это было всегда в 1997-2011, мнения специалистов (не только относительно экрана и размера устройства) разошлись. Аргументированные мнения, обоснованные и имеющие смысл. Ознакомившись с точкой зрения сторонников увеличения iPhone, Стив задумался. Причины для изменения размеров были, возражения Стива были, по пунктам, учтены. Что было потом, кто и что предлагал – неизвестно.

Известно только чем все это закончилось. Вышел iPhone 5…

Это двадцатая часть серии про iPhone и ему подобных, предыдущие части здесь:

Первая часть: MacWorld Expo 2007;
Вторая часть: Touch-интерфейс приходит на iPod;
Третья часть: iPhone для предприятий, iPhone SDK и App Store;
Четвертая часть: Леопард переселяется в iPhone.
Пятая часть: Следующий шаг: iPhone 3G, iPhone OS 2.0 и много чего еще…;
Шестая часть: iPhone OS 2.1, уже не бета-версия…;
Седьмая часть: iPhone OS 3.0 и поле искажения реальности;
Восьмая часть: iPhone 3GS – на 2 грамма легче, в 2 раза быстрее…;
Девятая часть: iPod touch третьего поколения, и другие iPod’ы…;
Десятая часть: iPhone OS 4…;
Одиннадцатая часть: iPhone 4: телефон с криминальным прошлым…;
Двенадцатая часть: iPhone 4: Антеннагейт, утечки и “белая горячка”;
Тринадцатая часть: Стив Джобс: людям нужны кнопки…;
Четырнадцатая часть: iPod touch 4G;
Пятнадцатая часть: iPhone вырывается на свободу…;
Шестнадцатая часть: Apple Special Event 4 октября 2011 года;
Семнадцатая часть: iPhone 4S + iOS 5 = Бэтеригейт?;
Восемнадцатая часть: iOS 6: Дебют Apple Тима Кука;
Девятнадцатая часть: 12.9.12, первое музыкальное событие новой эры.

Swift 2012 года

Внутри iPhone 5 был КнК (SoC, “компьютер на кристалле”) Apple A6, впервые в истории Apple построенный вокруг двухъядерного процессора собственной разработки. До этого Apple использовала процессоры разработанные ARM, по лицензии. Архитектура ARMv7-A, кодовое название процессора – Swift.

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

Сколько экземпляров iPhone 5 были убиты во время исследований – неизвестно. Десяток или два. Кстати, побочный результат исследований: iPhone 5 был удобнее для ремонта чем любой iPhone прежних моделей.

Серьезно помогли и исследования кода iOS 6. Подробностей не знаю, но кодовое имя процессора установили именно так. Бывшие сотрудники Apple подтвердили правильность этого предположения.

Тактовая частота процессора динамически изменялась, в диапазоне от 1,0 до 1,3 ГГц.

Кроме процессора, в КнК входила графическая подсистема, на основе PowerVR SGX 543MP3, где MP3 указывает на 3-ядерный вариант графического процессора. В составе КнК был 1 Гигабайт оперативной памяти (LPDDR2-1066).

По словам Фила Шиллера процессор превосходил Apple A5 по производительности в два раза, и по графической производительности – тоже.

Apple A6 производился Samsung, по технологии 32 нм, на фоне судебных исков со стороны последней, но на производстве Apple A6 это никак не сказалось.

Экран и прочие безобразия

Retina-дисплей с 4 дюймами по диагонали с разрешением в 1136×640 пикселей, близкое к 16:9. IPS, высокая яркость и четкость – один из лучших экранов среди современников.

Две камеры. Тыльная (главная) с разрешением в 8 Мегапикселей и фронтальная (для чатов) с разрешением в 1,2 Мегапикселя. Массированная поддержка со стороны программного обеспечения позволяла им успешно конкурировать с камерами большего разрешения.

Фил объявил iPhone 5 “самым тонким в мире телефоном”, поленившись проверить факты. В Китае, у двух производителей мобильных телефонов, один из которых был за пределами Китая неизвестен, выпускались более тонкие модели. Сравнить их с iPhone 5, за давностью лет, сложновато. Да и нет необходимости. iPhone 5 прекрасен, самый тонкий и легкий iPhone за всю их историю, и третий в мире по утонченности корпуса.

Изменившийся размер экрана заставил разработчиков переделывать массу кода, но тут никто кроме когда-то написавших этот код не виноват. К самому экрану претензий не было. Самой большой проблемой стал их дефицит, мешавший Apple справляться с более чем высоким спросом.

Претензии были очень серьезными, к двум пунктам: во-первых, к замене традиционного докового разъема (образца 2003 года) на новый, более компактный и меньшего размера, названный Apple “Lightning” (молния). Фил еще пошутил что теперь у Apple и Thunderbolt (раскат грома) и молния. Во-вторых, к замене Micro-SIM на Nano-SIM.

Проблему с доковыми разъёмами Apple вроде как решила (предлагая несколько вариантов адаптера, за 29-39 долларов), но даже с адаптером Lightning поддерживала подключение далеко не всех устройств, с которыми работал старый коннектор.

А еще – корпус оказался не только безумно красивым, но и очень нежным. Издержки. Без чехла носить его в одном кармане с мелочью и ключами не рекомендуется. Видел iPhone 5 которым активно пользовались лет пять: он был без единой царапины.

И тем не менее, повторилась та же самая история что и с предыдущими iPhone: рекордные продажи. Все кто хотел его купить, смогли это сделать.

Хотя произвести нужное количество iPhone требуемого качества было непросто: в Китае на заводах Foxconn забастовали контролеры качества, у производителей дисплеев для iPhone 5 и iPod touch (5G) слишком большое их количество не проходило контроль, с чем никак не удавалось справится – дефицит дисплеев был угрожающим в течение полугода.

Справились.

Впечатления

Отзывы были разными. На первых порах 53% отзывов были отрицательными: из-за нано-симки и коннектора, но зато 35% назвали его лучшим iPhone за всю историю.

Самая главная проблема iPhone 5 не имела к нему отношения. Её звали Apple Maps. Она не имела прямого отношения ни к iOS 6, ни к программному обеспечению Maps.

Разработчики Maps совершили подвиг: собрали гигантский объём данных, во всех уголках Земли, обработали их и многократно всё перепроверили, работая сутками, без отдыха. Это в ДНК у Apple: делать невозможное. У них получилось. Почти.

Число ошибок и неточностей в Maps не превышало их числа в первых версиях технически сложных проектов компании. Возможно, их даже было меньше. Только для карт это было неприемлемо.

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

А если бы и в 2014 число неточностей превышало рамки приличия, в Google были готовы пойти на встречу. Отношения и бизнес – это не одно и то же.

На случившееся руководство Apple отреагировало быстро и правильно. Изгнание Google Maps из iOS было признано ошибочным. Тим Кук опубликовал извинения. Скотт Форстолл отказался его подписать. Он отвечал за Apple Maps, он правдами и неправдами добился их монопольного статуса в системе и их выпуска несмотря ни на что.

Признавать свои ошибки он не захотел.

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

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

Революция 2011 года: Objective-C 3.0, ссылки, сборщики мусора

Иосифу Виссарионовичу, говорят, термин “гиперссылка” понравился бы. Это спорно, а кроме того, никакого отношения к тому о чем эта статья, не имеет. Речь в ней пойдет о совсем других ссылках. И о других сущностях называемых приведенными словами… В 2011 году на смену системе управления памятью, которую придумал за 20 лет до этого великий Бад Триббл (один из создателей первого Mac’а, руководитель и автор NeXTSTEP, затем – старший вице-президент Sun Microsystems), пришла новая.

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

Не все было просто и безоблачно – новая система управления памятью упростила жизнь, но принесла с собой новые проблемы.

ARC был разработан командой LLVM, под управлением Криса Латнера. Одновременно с этим, та же команда, занималась проектом в статусе хобби, тем самым “Objective-C 3.0 без C”, известным сегодня под другим названием. В тот же год компиляторы на основе LLVM 3 окончательно вытеснили GCC из арсенала компании.

Я имел честь общаться с Крисом, примерно в то время – если бы у меня была возможность выбирать главу Apple, я выбрал бы или Скотта Форстолла, или Криса Латнера – а лучше их обоих, и Джонатана Айва им в помощь, для равновесия и внутренней конкуренции…

Это продолжение серии про WWDC 2011, предыдущие части здесь:
Первая часть: WWDC 2011: Apple уходит на облака…;
Вторая часть: WWDC 2011: Про убийство;
Третья часть: iCloud, по другую сторону экрана;
Четвертая часть: Управление памятью и сборщики мусора.

Традиционная система управления памятью

Система Триббла (её так никто не называет, но мы назовем) основана на подсчете числа ссылок на объект.

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

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

Систему управления памятью основанную на подсчете ссылок изобрел не Бад. Он изобрел то, что в течение почти 20 лет превращало жизнь неофитов в пытку, но в умелых руках было фантастически эффективно – метод autorelease. Только это случилось чуть позже.

В самом начале команд было две, retain (придержать) и release (отпустить). А в объектах появился счетчик ссылок на него. При рождении объекта, его счетчику присваивалось значение 1.

Команда retain добавляла к значению 1, release уменьшала значение на ту же единицу.

Теперь если рожденный в точке А объект передавался в точку Б, получатель отправлял ему сообщение retain, увеличивая значение счетчика на единицу. Если в А в этом объекте больше не было необходимости, ему отправляли release. Теперь в любом месте, где объект использовался, он гарантированно оставался в живых пока был нужен.

При обнулении счетчика объект уничтожался. Команда autorelease добавляла в систему динамизм, позволяя создавать временные объекты не заботясь об их уничтожении – они убивались сами (после выхода из контекста).

Как и все прочие, эти объекты рождались с единицей на счетчике, но кроме этого, ссылка на них помещалась в расстрельный список, в NSAutoreleasePool. В каждый оборот цикла управления, программа отправляла всем объектам в списке сообщение release, и очищала его.

Если программист соблюдал правила, в пункт Б прибывали объекты занесенные в Список, если объект был нужен на короткое время (узнать время и вывести его на экран), он тихо и самостоятельно “умирал”. Если на долгое – ему отправлялся retain. Собственно все. Это и есть то непроходимое препятствие. Правил и соглашений было побольше, педантично все их соблюсти непросто – требовалась тренировка.

Сборщик мусора

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

Зато программисту не надо ни о чем заботиться – наплодил и забыл.

Это процесс времени исполнения, лишняя нагрузка и все такое – увы, в iOS устройствах где это особенно недопустимо, сборщик мусора неуместен. А как же Android, где Java и сборщик мусора “в деле”?

Автоматический подсчет ссылок (ARC)

На пустом месте, с ноля, написать что-то похожее на ARC было бы невозможно, но в группе низкоуровневых (LL!) технологий отделении средств разработки Apple, в рамках проекта по переходу на LLVM-компиляторы, был разработан Xcode Static Analyzer.

Его первые версии мы называли “вредные советы” – он часто ошибался. Но с каждой версией он становился умней, и теперь уже действовало правило: если вы и анализатор расходитесь в мнениях по какому-то поводу, подумайте еще раз: 9 из 10 что он прав. Если не 99 из 100.

ARC делает то же самое, что в течении 20+ лет делали все писавшие программы для NeXT, Apple Cocoa и Apple Cocoa Touch – только с нечеловеческой педантичностью. И во время компиляции, так же как и люди до него, ARC генерирует код для управления памятью.

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

Соглашения об отражении долговечности возвращаемых объектов, существовавшие уже полтора десятка лет, стали на порядок более важными, их пришлось уточнить: если мы не поможем ARC’у, ему никто не поможет.

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

Четыре магических сочетания: new, alloc, copy и mutableCopy.

Использование retain, release и autorelease было… запрещено.

Инструментарий для управления памятью был разработан заново, более эффективный, и применялся он только ARC – с нечеловеческой аккуратностью.

Были и минусы: ARC работал только с кодом на Objective-C. Программы для Mac’а и для iOS-устройств состоят из фрагментов на C, и обращений к областям памяти созданным в разных библиотеках – они не поддерживались, для взаимодействия с ними требовались специальные меры, то есть лишнее время. И это был лишний повод для ошибок.

Разработчики ARC приложили массу усилий для обеспечения совместимости с кодом без поддержки ARC. Почти получилось – хотя проблемы случались.

Проблем, правда, оказалось на удивление мало – хоть это и была самая первая версия технологии, радикально менявшей устои.

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

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

Swift вошел в топ-10 самых популярных языков программирования

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

Вышли Xcode 9.3 и Swift Playground 2.0

Apple обновила программное обеспечение для разработки Xcode и обучающее приложение Swift Playgrounds.   В Xcode 9.3 Apple пообещала исправить ряд ошибок и ускорить работу программы. Также в него встроен инструмент для изменения уровня энергопотребления игр...

Telegram X — официальный клиент для iOS, написанный на Swift

Разработчики Telegram запустили альтернативную версию фирменного мессенджера, целиком основанную на языке программирования Swift. Клиент Telegram X, как и оригинал, распространяется совершенно бесплатно и уже доступен для загрузки в российском сегменте каталога App Store.

Несмотря на то, что разработчиком Telegram X в App Store значится «Telegram Messenger LLP», а не «Telegram LLC», как в случае с оригиналом, данное приложение является официальным и было создано командой, принимавшей участие в проектировании стандартной версии мессенджера.

«Telegram X — официальное альтернативное приложение для iOS. Оно целиком написано на Swift, работает гораздо быстрее, ещё дружелюбнее к батарее вашего телефона, есть поддержка тем. Но часть функциональности пока отсутствует, постепенно будет обновляться, — рассказали в поддержке».

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

Название: Telegram X
Издатель/разработчик: Telegram Messenger LLP
Цена: Бесплатно
Встроенные покупки: Нет
Совместимость: Универсальное приложение
Ссылка: Установить

Как Apple поможет Google в популяризации новой ОС

Таинственная операционная система Fuchsia от Google будет совместима с приложениями, написанными на Swift. Соответствующее подтверждение было обнаружено коллегами из издания CultofMac в репозитории GitHub. Поддержка дополнительного языка программирования, который сегодня считается одним из наиболее востребованных, должна привлечь внимание разработчиков и популяризовать ОС.

Swift был создан и представлен компанией Apple как универсальная платформа для разработки с открытым исходным кодом. С тех пор популярность языка растет небывалыми темпами, а аудитория программистов, владеющих им, увеличивается экспоненциально. В настоящее время Swift лежит в основе большинства приложений и утилит, которые пишутся для актуальных версий iOS, macOS, tvOS и watchOS.

Google ведет открытую разработку Fuchsia с августа 2016 года. В отличие от Android и Chrome OS, основанных на Linux, новая операционная система базируется на микроядре под названием Magenta. Детальный анализ Fuchsia показал, что эта ОС универсальна и может работать как на смартфонах, так и компьютерах. Это утверждение может свидетельствовать о том, что Google планирует отказаться от Android и Chrome OS в пользу Fuchsia.

Язык программирования Apple Swift будет использоваться в операционной системе Google Fuchsia

В середине ноября 2017 года в сообществе программистов возникли споры о том, не разветвляет ли компания Google язык программирования с открытым кодом Apple Swift, применяя его в собственной операционной системе Fuchsia. Сообщает The Verge. Некоторые...

Apple добилась, чтобы Swift начали преподавать студентам

Язык программирования Swift, созданный Apple для разработчиков под iOS и macOS, в этом году войдет в учебную программу 30 ведущих колледжей из Соединенных Штатов Америки. AppleInsider.ru узнал это из опубликованного компанией пресс-релиза. В рамках предстоящей программы Apple рассчитывает обучить языку 74 000 студентов из разных уголков страны и зарубежья.

«Сегодня мы воочию наблюдаем, как экосистема приложений для устройств Apple превращается в самостоятельный экономический пласт, создавая миллионы рабочих мест и генерируя новые отрасли в промышленности, — отметил Тим Кук. — Мы искренне верим, что возможность [изучать Swift] должна появиться во всех учебных заведениях, став одинаково доступной каждому».

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

Создатель языка программирования Swift ушел из Tesla спустя полгода работы

В начале года Крис Латтнер, создатель языка программирования Swift, предназначенного для разработки приложений для iOS и Mac, объявил об уходе из Apple. Его новым местом работы стал производитель электрокаров Tesla, где ему поручили разработку новейшей...

Swift Playgrounds сможет программировать роботов и дронов 5 июня

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

Как это происходит? Например, ученик хочет программировать дроны от Parrot или устройства вроде LEGO MINDSTORMS EV3. Он подключает их к своему iPad по Bluetooth и осуществляет необходимые манипуляции. Чтобы расширить список поддерживаемых гаджетов, Apple сотрудничает с ведущими производителями устройств.

Сейчас уже более 1 миллиона детей и взрослых во всем мире изучают основы программирования на Swift в приложении Swift Playgrounds. Теперь же любой желающий может программировать популярные устройства и управлять ими через приложение.

Новая версия программы под номером 1.5 будет доступна в App Store начиная с понедельника, 5 июня. Приложение Swift Playgrounds совместимо со всеми моделями iPad Air и iPad Pro, а также iPad mini 2 под управлением iOS 10 и новее.