Rambler's Top100
DeepHome
03.09.2008  00:00
Objective-J + Capuccino = Еще один клон Cocoa
1. Летопись... (которую я бы назвал "12", если бы не было поэмы Блока)

В начале 70-х Деннис Ричи и Брайен Керниган опубликовали первый в истории учебник языка C. Они понимали, что их творение заслуживает внимания и интереса программирующей общественности, но масштаб всемирной любви к их детищу превзошел самые смелые ожидания.

Правда, на первых порах казалось, что апологеты параноидального подхода к конструированию языков программирования победят. "Алгол", "Паскаль" и подобные им языки пытались уберечь создателей программного обеспечения от мыслимых и немыслимых ошибок, в то время как безопасность пишущих на C была целиком и полностью в их собственных руках.

C намного "опаснее", чем Паскаль. Паскаль "бомбит" проблемы с безопасной высоты, в то время как C пикирует на них, и поражает в ближнем бою... Почти вся свобода, доступная при программировании на языках "ассемблера" или напрямую в машинных кодах, доступна и программисту на C...

И что самое интересное, на практике именно C оказывается безопаснее... Дело в том, что конфликты между избыточной паранойей создателей "безопасных" языков и потребностями конкретной задачи возникают сплошь и рядом. И профессионалы отлично справляются с такими ситуациями, с помощью магических и запредельных трюков, которые намного опаснее всего, что можно было бы натворить в "опасных" языках.

Самодисциплина и самоограничения намного эффективнее. Кроме того, никакой язык не гарантирует от написания плохих программ. Успех C был предопределен. Впервые язык был создан практиками (а не теоретиками) и для практиков.

Примерно через 12 лет после явления C народу, в 1983 году, на свет появилось сразу два его наследника. На самом деле, их было больше, но остальные не оставили заметных следов в истории. В 1983 году появились C++ и Objective-C.

Трудно представить себе, какой была бы компьютерная индустрия в наши дни без C++. Многие даже не догадываются, что нынешнее состояние Интернета (при всех его проблемах и недостатках, он - одно из величайших достижений конца XX века) тоже было бы под вопросом, если бы в 1983 году Брэдли Кокс не опубликовал свой Objective-C.

Первый в истории браузер был написан Тимом Бернерс-Ли именно на этом языке, с помощью прославленных библиотек NeXTstep, и язык гипертекстовой разметки HTML, ставший плотью всемирной паутины, вовсе не был придуман разработчиком первого браузера с нуля и самостоятельно - почти все тэги HTML соответствуют методам класса Text из NeXTstep 1.x (1989-1991). Тим Бернерс-Ли не раз говорил, что ни в какой другой системе он, скорее всего, не решился бы на реализацию столь большого и сложного проекта.

В 1995 году, через 12 лет после появления на свет Objective-C, в глобальной паутине попыталась воцариться Java, язык сотворенный по образу и подобию Objective-C, всего лишь без элементов, опасных в неумелых руках. Это был очень непростой язык, хотя его авторы и утверждали обратное. Попытка оградить программистов от самих себя и подменить самодисциплину навязываемыми извне ограничениями, в конце концов и по большому счету, провалилась.

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

Именно это сказал в 1996 году Стивен Джобс, попутно признавший, что войны операционных систем для персональных компьютеров окончены, и что всем известно, кто вышел из этой войны победителем.Через несколько месяцев... но это другая история.

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

Неизвестно, во что превратился бы Интернет в наши дни, если бы Брендан Эйч не разработал язык "Мокко" (Mocha), ровно через 12 лет после появления на свет C++ и Objective-C. Под влиянием HyperTalk (язык программирования HyperCard, своеобразного мультимедийного Интернета-для-одного компьютера), а также языков Java и SELF, Брендан Эйч написал язык "сценариев", который делал ровно то, и именно то, что требовалось создателям Интернет-контента.

Чтобы те, кто владеет C, C++ или Java не испытывали дискомфорта, новому языку искусственно были приданы Java-подобные черты. Если вспомнить о том, что саму Java, не менее искусственно, "причесали" под C++, истоки ошибочного мнения о том, что все языки похожи друг на друга становятся очевидны.

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

Вскоре Мокко переименовали в JavaScript, и уже через пару-другую лет Интернет неузнаваемо изменился. Плотью и каркасом Всемирной паутины оставался HTML, мускулами и кровью паутины стал JavaScript.

Прошло еще 12 лет. В 2007 году...

2. Objective-J, Capuccino и библиотеки из клана NeXTstep

Apple славится своими жесткими порядками и одержимостью сотрудников. Кроме того, по сравнению с куда более блеклыми компаниями-коллегами, Apple платит своим сотрудникам относительно немного.

На жизнь хватает, но почти все компании в отрасли платят своим инженерам больше. Тем не менее, ни одна из компаний Силиконовой долины не привлекает столько жаждущих работать на ней, как Apple, "самая приятная тюрьма в Калифорнии".

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

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

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

В 2007 году, три инженера по программному обеспечению покинули Apple, основали свою собственную компанию, и разработали гибридный язык Objective-J, очень похожий на Objective-C. Objective-C - это механизмы языка SmallTalk, "посаженные" на прочный и эффективный фундамент стопроцентного C. В Objective-J те же самые механизмы "Смолтолк", практически также, посажены на плечи JavaScript.

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

Почему сотни тысяч (миллионы) добровольцев, создающих динамические и очень неплохие сайты, почти неминуемо терпят фиаско, взявшись за разработку таких программ? Что мешает разработчикам локальных программ использовать их квалификацию при написании Интернет-программ?

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

Вот фрагмент исходного кода на Objective-J:



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

Единственный его реальный недостаток - скорость исполнения скриптов, написанных на JavaScript заведомо ниже, чем у программ, написанных на C или C++. Но этот недостаток становится все менее важным и значительным, по мере того как интерпретаторы JavaScript становятся все более эффективными, да и компьютеры тоже не перестают ускоряться. И что греха таить, большая часть этой непрерывно нарастающей мощности тратится на всякую ерунду - и вот, наконец, для нее нашлось достойное применение...

Главное достоинство объектно-ориентированных библиотек Cocoa, CocoaTouch (в iPhone OS) и Capuccino - они одновременно и изолируют разработчика от лишней сложности создаваемого программного продукта, облегчают внесение довольно сложных, но не радикальных, изменений в поведение объектов (Брэдли Кокс сравнивал объекты Objective-C с электронными блоками и агрегатами), и не встают на пути у программиста, решившего что-то кардинально и радикально изменить.

Уровень паранойи у клонов Cocoa - минимальный. Разумный осмысленный риск - залог безопасности.

Знание подробностей, таких как HTML, CSS и стандартные библиотеки JavaScript, работающие с DOM (Document Object Model), приветствуется, но необязательно. Программист имеет невероятную возможность придумывать решение стоящих перед ним задач не в терминах "элементарных частиц", а на более высоком уровне.

Объекты классовых библиотек из семейства NeXTstep (Cocoa, CocoaTouch, Capuccino и GNUstep) - это и "приложение" (живое и работоспособное, выполняющее всю работу по хозяйству без вмешательства программиста), и "окна", и "меню", и "строки", которые, для удобства программиста, еще и заранее соединены между собой в шаблонах.

Пока в точности неизвестно, как это происходит в Capuccino, поскольку точные сведения о языке и библиотеках все еще не раскрываются (компания 280 North, или "три бывших сотрудника Apple", обещает открыть исходники после того, как им удастся достичь уровня официального релиза), но судя по впечатлениям тех, кто имел возможность ознакомится с процессом создания приложений в Capuccino, на условиях NDA (просто дав честное слово никому не сообщать слишком много подробностей), процесс почти такой же, как при разработке программ в Cocoa или CocoaTouch.

То есть, программист начинает создание Интернет-приложения с выбора наиболее подходящего для его целей шаблона. Шаблон автоматически превращается в программу, которая уже умеет делать массу разных вещей. Задача программиста - добавить к обощенным и решенным за него умениям программы то конкретное и уникальное, что будет отличать его приложение от других.

Для этого, в его распоряжении сотни классов, многие из которых можно использовать непосредственно, возможность создания собственных классов на основе любого из библиотечных классов, и все до единой возможности JavaScript и DOM.

Программы, написанные для Mac OS X в Cocoa, несмотря на прочные и очевидные родственные связи этих библиотек с библиотеками CocoaTouch, практически не имеет смысла перетаскивать во всей их целостности и нетронутости в iPhone OS.

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

20 лет существования NeXTstep и его потомков неоднократно доказали их ценность и несредние способности. Один показ iPhone SDK 6 марта этого года чего стоит, и кстати, помните ли вы одну важную деталь - все до единого разработчики с других мобильных платформ, в один голос, утверждали и продолжают утверждать, что среды разработки и библиотек такого уровня и качества, на мобильных платформах, не было и нет.

Остается несколько загадок, которые все никак не удается разрешить. Неясно, что именно думает Apple о применении ее библиотек в новой для них сфере. Как Apple относится к откровенному заимствованию особенностей Keynote в бесплатной программе 280 Slides? Ведет ли 280 North переговоры с Apple, или нет?

Обе стороны об этом молчат. На месте Apple я бы уже давно взял под свое крыло и SproutIt, и 280 North, на условиях автономии и беспрекословного подчинения по основным вопросам... И попробовал бы скрестить эти технологии, довести их до фирменного блеска, и в один ужасный для конкурентов дней выпустить все это в виде завершенного и совершенного инструментария...

Не поручусь, что этого не происходит уже сейчас.

3. Еще одно магическое число...

Похоже, число "3" тоже связано с мистикой. Apple основали три человека: Стив Джобс, Стив Возняк и Питер Вейн. Кажется, именно три человека заложили основу Microsoft. В народном эпосе России считается (непонятно почему), что и пить надо "на-троих".

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

Три выпускника университета в Сан Диего основали компанию SproutIt, написали Mailroom, и iPhoto для Интернета (было такое приложение в ".Mac"), и это именно их библиотеки SproutCore используются в MobileMe, в SaaS (Software-as-a-Service, т.е., программное обеспечение как услуга) заменившей почивший дот-Мак.

Sprout по английски означает "росток", "молодой побег". Пусть с ней пока не все в порядке, и не все работает как положено - главное, что "ростки взошли".

Три выходца с Apple разработали Objective-J, на базе нового языка - библиотеки Capuccino, и написали очень неплохую презентационную программу. Опять трое!

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

4. Еще одна загадка

В приведенном фрагменте исходного кода на Objective-J присутствуют обращения к CoreAnimation и CoreGraphics, из чего можно сделать поразительные выводы...

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

CoreAnimation использует, в своей глубине, очень непростые механизмы OpenGL, а CoreGraphics - "бесконечно масштабируемая рисовалка профессионального уровня построенная на концепциях, близких к концепциям PDF"...

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

Верхний (интерфейсный) этаж у каждого из наследников NeXTstep уникален, по понятным причинам. Среды, в которых им приходится исполняться, различны.

Если исходники Capuccino будут однажды открыты, очень любопытно заглянуть в них. Еще один клон Cocoa, написанный людьми, которые провели в исходниках настоящего Cocoa, в сумме, почти 30 лет...

Objective-J + Capuccino = Еще один клон Cocoa
Источник/Source: Олег Свиргстин
(495) 933 6737 | sales@deepapple.com deepapple.com | deepstore.ru | griffintech.ru | macally.biz | xtrememac.ru | wacomstore.ru | ipodcentre.ru
Rambler's Top100 Индекс цитирования