Rambler's Top100
DeepHome
26.06.2007  00:00
Черная метка: Есть ли будущее у Carbon?

Mac OS X "Леопард" - 64-битная операционная система. Умеющая работать с 32-битными программами и технологиями, но - 64-битная на всех важнейших направлениях. Некоторые технологии остаются 32-битными, что, наверное, должно означать их не очень высокий статус. 32-битность отныне - своего рода "черная метка". Тонкий намек.

Среди получивших "черную метку" оказался... Carbon.

Что такое Carbon, насколько серьезна угроза, и... как это скажется на будущем Мака, разработчиков и пользователей? Попробуем разобраться - а для этого начнем свои рассуждения издалека.


"API, или "Легко ли опираться на два фундамента сразу?"

В состав операционных систем входят сотни библиотек, объединяющих в себе сотни тысяч (а то и миллионы) различных подпрограмм. Это накопленный опыт десятилетий программирования. Фундамент, на котором строится и графический пользовательский интерфейс операционной системы, и всевозможные ее утилиты, и прикладные программы. Да и сама операционная система, большей частью - тоже.

Такой "фундамент" называется API (программный интерфейс для разработчика). В подавляющем большинстве операционных систем такой фундамент только один. Качество "фундамента" исключительно важно, на его поддержку и развитие не жалеют ни времени, ни денег. Занимаются им "штучные" программисты, которых в мире - жесточайший дефицит. В Windows XP такой фундамент только один. В Windows Vista - тоже. И в классической Mac OS...

А вот в Mac OS X таких "фундаментов"... два. Уникально! Здорово! Впереди планеты всей! Целых два... Я бы с удовольствием порадовался этому факту, если бы было чему радоваться. Это - недостаток. Более того: есть в Mac OS X несколько групп API, в которых эти два фундамента фактически дублируют друг друга. Без какой-либо пользы.

Термином "Carbon" в Mac OS X несколько злоупотребляют. За без малого десять лет, в течении которых Cocoa (современный наследник NeXTstep/OPENSTEP) и Carbon существуют бок о бок, компания проделала огромную работу по превращению разнородных технологий в сплав, значительно превосходящий любой из входящих в него компонентов набором полезных свойств.

В Mac OS X существуют и другие API, например, Darwin OS (сертифицированная юникс-подобная операционная система с открытым исходным кодом), прозрачно доступный из любой программы (будь это Carbon-программа или Cocoa-программа), и ценный сам по себе. Например, как среда разработки. Как инструментарий для переноса программного обеспечения из различных юниксов и юникс-подобных операционных систем.

Сложилась своеобразная многоуровневая архитектура. Собственно, это уже не Cocoa+Carbon+Darwin+..., а нечто принципиально новое. Факты? Пожалуйста:


"Сплав в действии"

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

Если требуется большее, используются библиотеки Core Graphics (Quartz), в которых определены все те же операции (плюс многие-многие еще), только более детально и подробно. Формально, Core Graphics относится к библиотекам Carbon. В любом Cocoa-проекте, при необходимости, можно запрограммировать все действия над графикой целиком с помощью Cocoa. По мере необходимости, можно "утончить" некоторые из них с помощью нескольких функций из Core Graphics, или полностью удовлетворить графические потребности программы исключительно средствами Core Graphics.

В некоторых "провинциях" Mac OS X задействованы все три этажа.

Например, Bonjour (бывш. Rendezvous). Это межплатформенная реализация ZeroConf, разработанная на Apple, Inc.

В Cocoa, с помощью классов NSNetService и NSNetServerBrowser, можно разрабатывать сложные и продвинутые "сервисы" Bonjour.

С помощью группы API "CFNetServices", формально входящей в Carbon, в любом, в Cocoa- или Carbon- проекте можно опуститься до деталей значительно меньшего масштаба.

Третий уровень вниз - юникс. На этом уровне в подробностях и деталях легко заблудиться, зато практически любой мыслимый и немыслимый поведенческий аспект разрабатываемой программы оказывается под контролем. На самом нижнем уровне услугами Bonjour можно воспользоваться с помощью DNSServiceDiscovery API, целого набора функций и структур данных, формально являющихся частью Darwin OS.

Автор когда-то (лет 5-6 назад), закончил одну из статей про Cocoa и Carbon мечтой о том времени, когда они сольются во что-то новое и мощное, и все это станет называться Diamond. Мечта фактически уже исполнилась,. Автор не угадал только название. Это не Diamond. Это Mac OS X.


"Зона конфликта"

Начиная новый проект, Мак-разработчик (в зависимости от симпатий, особенностей стоящей перед ним задачи, воли руководства - и т.п.) имеет возможность выбрать между Cocoa-проектом и Carbon-проектом. В результате этого выбора, результатом разработки проекта становится либо Cocoa-, либо Carbon-приложение.

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

Межплатформенные программы почти все - Carbon-программы. Все программы и утилиты, входящие в MS Office, все звездные программы Adobe, собственная iTunes самой Apple...

И не только межплатформенные: вплоть до "Тигра" интерфейсная компонента самой операционной системы, многострадальный Finder - тоже Carbon-программа. Только в Леопарде будет новый Finder, на этот раз написанный в Cocoa (используя библиотеки Carbon).

О том, что такое Carbon "по сути", как он возник и развивался, мы еще поговорим. Пока достаточно отметить только то, что Carbon - результат глубокой модернизации и массированной доработки классической Mac OS. Наследник классической Mac OS. Поскольку "классика" была одной из наиболее продвинутых ОС в мире по части графического пользовательского интерфейса (ГПИ), значительную часть ее API составляли средства организации этих самых интерфейсов и управления ими.

На первых порах существования Carbon организация интерфейсов и управления выполнялась с помощью практически того же самого набора рутин и структур данных, что и в Mac OS 8 и 9. Благодаря этому, переносить программы из классики в бурный и непредсказуемый мир "современной ОС" было немного проще. Но на Carbon были "посажены" слишком талантливые инженеры ("штучные"), с неуемной фантазией и невероятной продуктивностью.

Они разработали совершенно новую (и очень обширную) область API для Carbon, основанную на HIObject и HIView, написали неплохие учебники и выложили в сети сотни примеров использования разработанной ими системы интерфейсных элементов. Эти элементы, и их комплексы, практически несовместимы с такими же элементами и комплексами Cocoa. Они развиваются параллельно. Это два огромных массива кода, каждый из которых надо поддерживать.

Не в последнюю очередь благодаря этим API, популярность Carbon в качестве среды для разработки Carbon-приложений остается высокой, а "священные войны" между сторонниками Carbon и Cocoa все еще продолжаются. Логичная многоуровневая архитектура, в которой легко узнается если не Стив Джобс сам по себе, то как минимум его увлеченное влияние - в этом месте дает сбой...

Это и есть "зона конфликта".


"Предназначение Carbon"

В разные исторические эпохи оно было различно. В 1998-2003 Carbon играл роль своеобразного мостика между старой и новой системами. Если бы не этот мостик, успех Mac OS X был бы почти нереален.

Переселение из "классики" в Mac OS X было массовым и болезненным. Году к 2003 (Mac OS 10.2) оно практичсеки завершилось - и Carbon стал примерно тем, чем он является сейчас. Многочисленные библиотеки, исторически относящиеся к Carbon (едва ли не большая их часть никогда не была в составе "классики"), стали очень ценным и важным компонентом операционной системы. Кроме того, Carbon превратился в один из двух "фундаментов" для создания прикладных программ с совершенно разной инфраструктурой.

Как известно из химии, Carbon (=углерод) существует в природе в одной из двух форм. Либо это уголь (графит), либо - алмаз. Carbon в Mac OS X тоже существует в двух формах: как в форме "алмаза" (API применимые в программах любого типа), так и в форме "угля" - в форме дублирующих и конкурирующих наборов API.

Все время, пока на свете существует Mac OS X, Apple не перестает убеждать разработчиков работать и жить именно в Cocoa. В воображении рисуется пирамидка - в основании которой юникс, чуть выше - библиотеки на С и С++ (алмазный фонд "Большого Карбона"), на вершине - Cocoa. Вот он, замысел. Физический отец Стива Джобса - египтянин (или сириец - источники расходятся по этому вопросу, большинство отстаивает "египетскую" версию), и возведение пирамид у них в крови.

Часть разработчиков (примерно треть, в том числе и на самой Apple) упорно предпочитает использовать Carbon в качестве "фундамента" для своих программ. Доводы приводятся самые разные. Мы уже упоминали "межплатформенные программы". На самом деле, на этот довод есть контрдовод, о котором мы поговорим в одной из следующих частей этой статьи.

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

Черная метка: Есть ли будущее у Carbon?
Источник/Source: Олег Свиргстин
(495) 933 6737 | sales@deepapple.com deepapple.com | deepstore.ru | griffintech.ru | macally.biz | xtrememac.ru | wacomstore.ru | ipodcentre.ru
Rambler's Top100 Индекс цитирования