iPhone OS: исправление ошибок (Xcode 3.1 и Xcode 4)

Objective-C приближался к первой тройке самых популярных языков программирования, из пишущих программы для iPhone OS лишь каждый пятый имел опыта программирования для OS X, App Store превращался в Клондайк XXI века. Пришло время создавать лучшую в мире среду разработки, срочно и любой ценой, Xcode 4. А чем была плоха старая?

Публичный iPhone SDK (инструментарий и библиотеки для разработчиков) не планировали, его не должно было быть – новорожденное устройство было нежным и хрупким, допустить в его недра толпы посторонних было страшно, тем более цифровая нечисть неудержимо и непобедимо захватывала мир.

Но сила притяжения новой платформы была настолько мощной, а сам iPhone, при всей его магии, был продуктом земных технологий, что через полтора-два месяца после начала его продаж в сети можно было прочитать, в деталях, как он устроен, как добраться до кода его программ (а архитектура команд ARMv7 была широко известна в отрасли), суть всех тайн была раскрыта.

Через очень короткое время на смену примитивным программам “hello world” пришли уже самые настоящие приложения, превращавшие iPhone в нечто еще более невероятное. И, в октябре 2007 года Стив признал свою ошибку, и пообещал раскрыть все тайны в начале следующего года. Зимой.

Публичный iPhone SDK не планировался и всерьез не проектировался. Сотрудники Apple использовали для разработки операционной системы и прикладных программ для неё что-то вроде строительных лесов вокруг здания. Что требовало специальной подготовки, и для обычных программистов было неприемлемо.

Теперь же, в кратчайший срок (лучше всего “позавчера”) нужно было создать этот самый iPhone SDK, закрывая глаза на неизбежные пока недостатки и упрощая все что можно. Но самое важное: комплекс разработчика должен впечатлять, внушать ощущение простоты и легкости, быть безумно великим – несмотря на невероятно сжатые сроки.

Главное – успеть. Потом все сделаем заново, тщательно и методично, учитывая замечания и пожелания. Пока делаем красиво и чтобы работало – в принципе.

Акценты в безумном проекте расставил Стив, конкретные задачи ставил Скотт Форстолл, остальное можете представить себе сами…

Миссия невыполнима

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

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

Вводные были еще более жесткими, чем в предыдущих случаях – будет что вспомнить!

Они успели. Всё получилось даже лучше, чем ожидалось. Не подвели. App Store, среда разработки и уникальный способ их распространения превратили разработку программ для iPhone в настоящий Клондайк. А iPhone – в бестселлер и образец для подражания.

Но это лицевая сторона медали. Была и оборотная.

Цена победы

То, что называлось iPhone SDK, состояло из нескольких компонентов.

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

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

Самым сложным оказалось превратить те самые “строительные леса” в органичную часть Xcode, среды разработки – для чего пришлось ломать стены, разрушать коммуникации и прокладывать новые. Спешка, как это всегда бывает, приводила к ошибкам, исправление которых порождало целые каскады новых, путаница наслаивалась на путаницу.

То, во что превратился Xcode после невыполнимой миссии, было ужасно – но он работал. Первые сотни тысяч программ появившихся в App Store были разработаны в Xcode 3.x, и многие сотни из них были фантастически хороши.

Проект Marble

Во второй половине 2008 года мобилизованные сотрудники вернулись к своим задачам, готовые в любой момент, по первому зову, снова принять участие в чем-нибудь безумно великом, а DTBU (Developer Tools Business Unit) поручили разработать (заново, тщательно и методично) новую среду разработки. Проекту присвоили кодовое наименование Marble (мрамор). Стив всегда выполнял свои обещания.

В 2010 году проект Marble впервые показали публично, участникам WWDC. Это был не Xcode, продукт отличался от прежних версий Xcode больше чем самый первый Xcode в 2003 году отличался от последней версии Project Builder – но те кому положено думать об именах и названиях уже приняли решение: Marble объявили как Xcode 4.

В 2011 году бета-версии Xcode 4 стали доступны разработчикам зарегистрированным на Apple, на условиях конфиденциальности. Поэтому в большом мире никто не узнал о самом настоящем цунами возмущения, которое обрушилось на тему “Xcode 4” закрытого форума Apple для разработчиков.

В первой бете было огромное количество багов, были нестыковки и неудачные решения, о них тоже писали – но главной болевой точкой было другое. Все изменилось. Все было не так, как раньше. Старые привычки больше не работали. Плагины не поддерживались, и по словам разработчиков Xcode даже не планировались (потом они все-таки появились).

Даже клавиатурные эквиваленты команд поменялись. Интерфейс стал “одно-оконным”, точнее окон стало намного меньше, чем раньше – но не спешите делать выводы, детали и подробности сообщу в отдельном опусе, если это кому-нибудь интересно.

Это была совершенно новая среда разработки. Моим первым впечатлением были шок и ужас – я, живший в Xcode разных версий и в Project Builder уже более десяти лет ничего не понимал. Как всегда, попробовал набросать простенькую программу. И быстро запутался в трех соснах.

Нового было много. Например, Interface Builder (программа компоновки пользовательских интерфейсов из настоящих “живых” объектов) стала частью основного приложения среды разработки, теперь интерфейсные файлы можно было открывать в соседних панелях и даже привязывать элементы управления к исходному коду обычным “левым кликом” и перетаскиванием от источника связи к получателю (простите за интимные подробности). Это было настолько здорово и неожиданно! Было бы здорово, если бы не глюки. Глюков в первой бете было запредельно много. Но на то она и бета.

Шок вскоре прошел. По мере привыкания я впадал в противоположную крайность. Время от времени мне приходилось возвращаться в Xcode 3.2.х, где новшеств вызывавших у меня оторопь и возмущение в первые часы знакомства с Xcode 4 мне уже очень не хватало.

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

Обсудить историю Apple вы можете в нашем Telegram-чате.

Источник: AppleInsider.ru