PHP fwdays conference — Creator of PHPUnit, JetBrains, Yii & more, Kyiv | Online

Есть ли жизнь на Маке?

Жара

На столе стояла симпатичная железка в полупрозрачном синем корпусе, вызывавшая у меня определённое любопытство. Я вырос среди представлений о том, что компьютер это серый, непрерывно жужжащий металлический ящик, со щелью дисковода на передней панели. Необычный дизайн, отсутствие вентилятора, оптическая мышь, встроенная сетевая карта и совсем уж непривычный FireWire, ассоциировались тогда с чем-то очень современным и чудным в мире PC. Но стоящее на столе устройство не выглядело новым. Скорее наоборот.

Август 2002 года. Я только что устроился на новую работу в Компании, разрабатывающей софт под Мак. Всё было дико и непривычно. Начиная от самой компании и заканчивая «средствами производства».

Железка, на которой я работал, очевидно не была рассчитана на анимирование матрасно-полосатых окон одного из первых релизов Mac OS X — 10.1 Puma. Я запустил перезборку новой версии Библиотеки. Машина начала неспеша перемалывать кило-лайны исходного кода. На час-полтора компьютер был занят и я ущёл заваривать чай, устав от мигания размытых водянистых кнопок Aqua интерфейса.

Прогуливаясь во внутреннем дворике офиса Компании я не раз задавался вопросами. Почему в диалоге подтверждения удаления группы файлов в Finder нет галочки «Apply to all»? Почему нет полноценной C++ библиотеки для создания «чистокровных» десяточных приложений? Зачем нужно несколько функций для открытия файлов? Какой идиот придумал resource forks? Как можно использовать документацию, в которой вместо описания действия и параметров функции обозначено лишь загадочное слово — Supported? Зачем мне, тогда уже опытному разработчику под Windows, изучать эту сырую и судя по всему совершенно безперспективную ОС? Мигающий выпуклый екран iMac-а, от которого начинало рябить в глазах через час работы и разглядывание креш лога, упавшего в сотый раз во время отладки Code Warrior, не добавляли оптимизма. А на улице было жарко.

Истоки

В пятницу, 13 сентября 1985 года, Стив Джобс (Steve Jobs) ушёл в отставку. Его уход был результатом противостояния с Джоном Скаллу (John Sculley), тем самым, которому он предлагал изменить мир, вместо продажи сладкой воды. Перед отставкой он заявил совету директоров, что не будет ни конкурировать с Apple, ни претендовать на патенты и лицензии, принадлежащие ей.

Уйдя из Apple, Джобс основал новую компанию, целью которой была разработка совершенно новой рабочей станции. Позже, отвечая на нападки Apple, обвинявшей его в использовании интеллектуальной собственности, Джобс заметил: Трудно представить, что бы 2 миллиардная компания с более чем 4300 сотрудниками не могла бы конкурировать с 6-тью людьми в джинсах. Новая компания получила название NeXT Computer, Inc.

Шёл 1986 год. Перестройка и Пепси-Кола в Союзе, время Intel 80286, Windows 1.0, кооперативной многозадачности и процедурного программирования на языке C и Паскаль. К середине 1986 стало понятно, что ни одна, из существующих операционных систем, не удовлетворяет требованиям создателей новой рабочей станции. Бизнес план был полностью изменён. NeXT взялась разрабатывать не только «железо», но и объектно-ориентированную программную среду. Новый «тулкит» должен быть надстроен над многозадачной Unix-подобной ОС, основанной на микроядре Mach.

Тренинг центр

Время шло и многое изменилось. Сине-зелёные пылесосы с вытаращенными как рыбий глаз мониторами постепенно сменились молочно-белыми плоскомордыми Маками. Графическую подсистему Mac OS X пересадили на хардверно-разогнанный OpenGL. Водянистая размытость первых интерфейсов операционки сменилась чётким, стеклянно-металлическим и выверенным до пикселя знаменитым look & feel. Mac OS X росла. Росло количество проектов Компании исключительно под неё. Как-то незаметно мы переползли с глючного Code Warrior и убогенького Project Builder на Xcode — одну из лучших IDE в мире. Тем времененем, Apple дописала почти всю документацию и заменила часть устаревшего API, унаследованого из «классики». Постепенно, из гадкого утёнка среди операционных систем, «десятка» превратилась в самую красивую и эргономичную ОС в мире.

Но разве это увлекает программистов в Mac OS X? Да, но не только. Лично меня привлекла удивительная технологичность, простота и стройность программного API, вылизанная за два десятилетия развития технологии. Есть что-то притягивающее в самодостаточном и потрясающе красивом дизайне заложенных первоначальных концепций, не только выдержавших испытание временем, но и давших импульс для нового развития.

Передо мной сидели семь человек. Двое уже зрелых и опытных гуру программирования под Windows. Трое парней и две девушки — ещё студенты, они в своей жизни ещё не написали ни одной, даже просто большой программы, не говоря уже о коммерческой разработке. Спустя всего полтора месяца, они разойдутся по проектам Компании, будучи уже опытными разработчиками под Мак, имея за плечами опыт разработки программ, достаточно сложных и функциональных. К тому времени они уже почувствуют значение Красоты и Простоты инженерного дизайна. А некоторые, до конца своей профессиональной карьеры будут оценивать свои инженерные решения, сравнивая их с шедевром, увиденным однажды.

NEXTSTEP

Новая операционная система называлась NEXTSTEP. Первая, доступная для широкой публики версия (0.9) появилась в 1988 году. Это был клон UNIX, основанный на микроядре и включавший в себя код из BSD. Для пограммирования были доступны несколько API, включавшие BSD и объектно-ориентированный API для создания приложений. Пользовательский интерфейс был согласован и целостен, а объектно-ориентированный API предоставлял удивительные возможности по созданию приложений. NEXTSTEP впервые ввела или была одной из первых ОС, использующих: векторную графику для UI, выпуклые елементы управления, drag & drop, прокрутку окна, единый API для работы с цветом, шрифтами, обработки звука, интренационализации приложений. Среди революционных достижений можно отметить также наличие ВИЗУАЛЬНЫХ средств быстрой разработки приложений — Interface Builder, интегрированный с Project Builder.

Благодаря своим средствам разработки NEXTSTEP приобрела популярность среди разработчиков приложений. Именно на ней Бернерс-Ли разработал первый Web-броузер и Web-сервер, а HTML разметка первых версий стандарта полностью повторяет стили форматирования, присутствующие в классе NSText. Большая часть разработки Doom велась на рабочих станциях NeXT. На этой системе было так же впервые написано множество других, ставших популярными приложений, таких например, как Lotus Improv или первые реализации современного интерфейса к Mathematica. Очень большую популярность система завоевала в сфере финансов и государственном секторе, где необходимо очень быстро разрабатывать и развивать специализированные приложения.

Проект

В Компании начался новый Проект и нужна была новая Команда. Команда была собрана из талантливых новичков. Большая часть из них ещё студенты. Они никогда не участвовали ещё в разработке коммерческих продуктов. Справятся ли они с разработкой сложного и масштабного ПО под ОС, которую впервые увидели месяц назад? Я почему-то был уверен что да.

Mac OS Classic

Будучи в общем-то тупиковой веткой в истории операционных систем, «классическая» Mac OS достигла очень многого.

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

Программирование визуальных елементов под «классику» очень кропотливо и сложно. Power Plant, поставляемая с Metrowerks CodeWarrior библиотека классов С++, взяла на себя большую часть рутинной работы программиста. Это позволило Metrowerks занять лидирующие позиции в на рынке средств разработки под «классическую» Mac OS. Примечательно, что большая часть софта созданного в Apple и даже первые версии Finder на десятке, были написаны на Power Plant. Apple неоднократно пыталась избавиться от тяжелого наследия Mac OS, разработав самостоятельно (Taligent, Copland, A/UX) или купив сторонние разработки (BeOS), но внутренние противоречия и неумение наладить и завершить творческую работу привели к провалу разработок всех альтернатив «классике».

Трудоемкость написания и отладки программ только подчёркивает «героические» усилия команд, которые создали огромное количество поистине замечательных продуктов для этой ОС. На «классике» были реализованы революционные для своего времени технологии, дожившие до сегодня, такие как Finder, QuickTime, TrueType, синтез и распознавание речи. Как и возле других продуктов Apple, возле «классики» присутствует некая «аура», притягивающая своих фанов до сих пор.

OPENSTEP

Ко времени выпуска NEXTSTEP 3.2 в октябре 1993 года, совместно с Sun Microsystems, NeXT начала работу над OpenStep — кроссплатформенной спецификацией и её реализацией для для различных систем (Solaris, Windows, NeXT версии Mach). Благодаря продуманной архитектуре и дизайну, программы написанные для OPENSTEP/Mach легко могли портироваться и работать на Windows NT и Solaris. GNUstep — бесплатная и открытая реализация спецификации OpenStep существует и развивается до сих пор.

В OPENSTEP/Mach была существенно улучшена в сравнении с NEXTSTEP. Так например она включала объектно ориентированную среду для разработки драйверов — DriverKit. За время разработки OPENSTEP была портирована на процессоры x86, SPARC, Motorola 68k, HP PA-RISC.

Для OPENSTEP было написано множество прикладных программ и библиотек для создания бизнес приложений, таких например как Enterprise Objects Framework. Позднее Enterprise Objects Framework мигрировал на Java и трансформировался в технологию WebObjects, на которой и сейчас работает Apple Music Store, обслуживающий миллионы пользователей в день.

Успев выпустить всего несколько версий реализации OpenStep для других платформ (отличных от Mach), 4 февраля 1997 года, NeXT была приобретена Apple Computer. OPENSTEP также была куплена и легла в основу новой ОС — Mac OS X.

Возвращение

К середине 90-х Apple встретилась с коммерческими трудностями. Архитектура и пользовательский интрфейс «классической» Mac OS не отвечали больше возросшим потребностям рынка. Кроме этого, Apple сделала ряд грубых просчётов в области лицензирования, ценообразования и сотрудничества с сторонними разработчиками. Для преодоления кризиса, совет директоров попросил Стива Джобса вернуться на руководящий пост в компании.

Выступая на WWDC Джобс заявил, что то, что разработчикам на самом деле нужно — это новая ОС. И Apple её разработает. Это заявление вызвало бурные апплодисменты.

Взяв NEXTSTEP за основу для Mac OS X, Apple серьёзно её доработала. Ядро системы было переработано и опубликовано в рамках Open Source проекта Darwin. Векторная графика, основанная на движке Display PostScript была заменена на Quartz. Был существенно переработан и пользовательский интерфейс. Apple встроила в новую ОС лучшие технологии, доступные в то время на Mak-е, такие как Finder, QuickTime и синтез речи. Были добавлены и другие возможности не существовавшие ранее.

Слияние технологий и обмен идеями между инженерными командами оказали своё благотворное влияние. Хотя первые релизы «десятки» страдали от обилия багов и не доработки некоторых деталей программного и пользовательского интерфейса, потенциал, заложенный в систему, позволил Apple стремительно развить её в одного из лидеров рынка. И похоже, что Apple не собирается замедлять темп.

WWDC

Apple уделяет очень много внимания разработчикам. Ежегодно, начиная с 1996 года, проводятся Apple WWDC (Worldwide Developers Conference), которые собирают тысячи разработчиков со всего мира. Это мероприятие представляет собой смесь шоу и тренинга, на котором восхваляются достижения Apple и её «друзей», клеймятся конкуренты, сторонние разработчики общаются с инженерами компании. На WWDC Apple рассказывает о том, какие технологии и подходы одобряются «официальным курсом компании», а какие нет. Apple безжалостно отбрасывает поддержку не перспективных с её точки зрения направлений развития, вынуждая разработчиков модернизировать продукты и использовать наиболее современные технологии. Apple можно понять. С одной стороны, у них нет ресурсов поддерживать и тянуть всё, с другой, философия конечного продукта этой компании требует, что бы «железо», ОС и софт от сторонних производителей были единым целым, взаимно дополняя друг друга. Apple часто кардинально изменяет аппаратную часть, операционную систему и её внешний вид. Для того, что бы приложения сохраняли совместимость с ней, они должны быть «правильно» написаны и использовать «правильные» подходы для реализации задач. Мой личный опыт показывает, что разработка под Мак очень дисциплинирует и служит хорошей школой. WWDC так же важны, потому что Apple формирует «community» разработчиков, так же как и «community» пользователей своих конечных продуктов.

Вовлекая лучшее и отбрасывая лишнее

В отличие от своего основного конкурента на рынке ОС, Mac OS X дружит с Open Source. Apple не только активно использует лучшие из «открытых» проектов, но и сама активно учавствует в них внося свой вклад в их развитие. Ядро, системый Веб браузер — Safari, подсистема печати, системный компилятор, отладчик и скриптовые языки, средства администрирования и обмена данными в сети, HTTP сервер — лишь не полный перечень подсистем, использующих открытый код.

В Mac OS X очень тесно и на мой взгляд очень удачно переплетены проприетарные и открытые технологии, объединяя сильные возможности таких разных подходов к разработке. Apple вовлекает «открытые» проекты и если хотите даёт им новую жизнь и пользовательскую аудиторию. Ведь что может быть приятнее для человека, разрабатывающего just for fun, чем знание того, что твоё творение каждый день приносит пользу миллионам людей во всём мире.

«Десятка» постоянно движется по пути технологического развития, последовательно проходя «transition» за «transition», по дороге перетряхивая багаж поддерживаемых технологий. Всё, что не имеет будущего, с изумляющей легкостью выбрасывается «в топку». Так что если вчера ваше приложение работало на PowerPC и использовало QuickTime, то сегодня оно работает на Intel x86, а завтра будет работать на 64-битном процессоре, уже используя новый QTKit вместо устаревшего QuickTime.
Удивительно, но часто такие «transition» положительно сказываются на архитектуре системы и сторонних продуктов, приучая разработчиков писать код, минимально зависящий от архитектуры.

Релиз

Проект, начинавшийся командой новичков, был успешно завершён и Заказчик остался доволен. Совсем не давно, отмечая здачу в архив материалов проекта, я смотрел на этих ребят, вчерашних новичков, а сегодня крепких профи, и думал о том, что разработка на Mac OS X всё таки отличная школа.

Будущее? Где-то рядом

Лето 2007 года в мире Apple прошло под флагом iPhone. Похоже, что «десятка» совершила свой очередной «transition». В этот раз на мобильные устройства. Осенью выходит 64-битный Leopard, начинённый новыми технологиями. Система развивается и продолжает двигаться на встречу новым технологиям и рынкам, привлекая всё новых и новых фанов. Что их привлекает? Одних удивительная красота инженерных решений, других простота и слаженность пользовательского интерфейса. И очень мало людей, близко знакомых с «десяткой», остаётся «нейтрально-равнодушными».

Ведь то, что по настоящему красиво, не оставляет вокруг себя равнодушие? Не так, ли?

КП. Август 2007.

LinkedIn

12 комментариев

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

Лето 2007 года в мире Apple прошло под флагом iPhone.

2008 год похоже пройдёт под тем же высоко поднятом флаге iPhone. А с открытием AppStore все дружно кинулись писать приложения для iPhone, потому что в одно мгновение Apple открыло просто гигантский рынок.

Мак отлично идет для C++ разработки. Мне еще как-то не попадалосьаналогов predictive build и zerolink доведенных для пользования out of box.Советую попробывать эти технологии для сравнения c++ процесса разработкина различных платформах.

Мак для пользователей, а не для девелоперов, в отличие от винды — непонятно для кого.

Что их привлекает? Одних удивительная красота инженерных решений, других простота и слаженность пользовательского интерфейса. И очень мало людей, близко знакомых с «десяткой», остаётся «нейтрально-равнодушными».

ну вот я, например, обладатель маковского лаптопа (дали на работе) и айпода (выиграл, тоже на работе) — не балдею ни от одного, ни от другого. пользуюсь активно, но чтобы я сам себе такое купил? нее. внешне симпатично, но куда ни ткни — просвечивает идея о том, что «мы лучше вас знаем, что вам нужно». как пользователь я еще могу с этим смириться, наверное; как девелопер — точно нет.: -)

К сожалению, Safari не является Open-source — тока webkit: (

Особо понравилось написание слова «Простота» с большой буквы. Кранты вообще.

Будем надеятся...но пока цены еппла — кусаются:)

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

По другому и быть не может:). Ведь пиетет и придыхание — это и есть суть Apple.

> Проект, начинавшийся командой новичковЕрунду пишете, Константин. Проект этот основан на базе, заложенной аааатнюдь не командой новичков. Да и его вторая реинкарнация, к которой мы с Вами имеем некоторое отношение, вряд ли была бы жизнеспособна без их поддержки.

> Как можно использовать документацию, в которой вместо описания действия и параметров функции обозначено лишь загадочное слово — Supported? Я больше скажу. Хочешь что-то сделать, и находишь только 1 ф-цию, что это теоретически может сделать. Надпись на сером фоне — Ансуппортед.А что делать? Юзаешь эту ф-цию. Другой-то нету.Вот так.Я могу рассказать историю как я разрабатывал СОМ-плагины под МакОСь, на языке С (!!!), но это совсем не для женщин и детей.

Да уж, пафос — это лишнее

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

Подписаться на комментарии