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, и многие сотни из них были фантастически хороши.
Во второй половине 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-чате.
Читайте также
Последние новости