Та самая "серебрянная пуля", о принципиальной невозможности которой писал профессор Брукс в его знаменитой книге "Мифический человеко-месяц", в новой для нее роли...
---
Несколько месяцев назад перед злополучным выходом в свет подписного сервиса MobileMe, я уже писал о компании 280 North и их веб-приложении 280 Slides, о языке программирования Objective-J и о классовых библиотеках Cappuccino. О языке и о библиотеках в то время было известно немногое, но со временем, авторы обещали открыть все свои исходники.
Чтобы представить себе мощь сконструированного в 280 North инструментария, вполне достаточно было попробовать бесплатную Интернет-программу создания и демонстрации презентаций 280 Slides. После чего нестерпимо хотелось узнать, как же им все-таки удалось написать практически полезную и вполне дееспособную программу такого уровня (пусть она и не без проблем - а где их нет?) всего за несколько месяцев?
При этом, 280 Slides всего лишь побочный продукт большой и сложной работы, испытательный стенд для библиотек и языка. Программа вполне могла бы стать хорошим началом для новой софтверной компании сама по себе, она имела бы успех.
4 сентября 2008 года, исходные коды библиотек Cappuccino опубликованы. Вот здесь: http://cappuccino.org/download/. Первый публичный релиз (версия 0.5), как ему и положено, был полон "багов". 13 сентября вышел второй публичный релиз, версия 0.5.1, в котором большая их часть исправлена.
И язык, и библиотеки - все оказалось в высшей степени серьезной, и в не меньшей степени незаконченной, попыткой создания, быть может, самого революционного инструментария для создания web-приложений, за всю историю Web...
1. Откуда есть пошли библиотеки Cappuccino и язык Objective-J
В некоторых публикациях (в том числе и в моих), сообщается, что Objective-J был разработан для облегчения переноса библиотек Cocoa в новую для них среду, но в этом утверждении, как выяснилось, сразу две фактических ошибки.
Во-первых, создатель этого языка, Франсиско Толмаски, думал о его создании уже давно, в студенческие годы, когда ни о каком переносе никаких библиотек не было еще и речи. Это калька с Objective-C, другими словами, Objective-J создан по тому же рецепту, что и Objective-C, только на другой основе и с другими целями. Калька - термин из лингвистики, обозначающий самый творческий способ усвоения слов и понятий из других языков, при котором они переводятся на заимствующий их язык, и очень скоро становятся своими и естественными.
Именно так в русском языке появились слова "мировоззрение", "насекомое", "водород", "небоскрёб", и многие другие.
Брэдли Кокс соединил широкоизвестный эффективный процедурный Cи, с самым объектно-ориентированным языком в мире - Smalltalk. Механизмы последнего, аккуратно и компактно, были встроены в чистейший Си почти без изъятий.
При этом настоящей целью Брэдли Кокса был вовсе не сам язык. В конце 70-х и начале 80-х в информатике случился настоящий кризис, из которого, как тогда казалось, нет и не может быть выхода. Производительность труда программистов все сильнее и безнадежнее отставала от потребностей пользователей, а компьютеры становились мощнее, дешевле, их выпускалось все больше, и объемы неудовлетворенного спроса на программное обеспечение росли ужасающими темпами...
Профессор Брукс, в книге "Мифический человеко-месяц", опубликованной в 1975 году и имевшей невероятный успех, уверенно заявил, что никакой "серебрянной пули", способной разрешить этот кризис "волшебным образом", нет и не может быть.
Во втором издании своей книги, в 1990, профессор Брукс отказался взять свои слова обратно, несмотря даже на то, что за семь лет до этого, фактически, его неправота была доказана. "Серебрянная пуля", правда не волшебная, все-таки была изобретена.
Ее изобрел Брэдли Кокс. Он придумал "блочную" метафору. Вместо того, чтобы собирать дома из кирпичей, и прокладывать "на месте", в непредсказуемо сложных полевых условиях, необходимые коммуникации, кто-то задолго до мистера Кокса придумал производить цельные блоки, оснащенные всем необходимым, на заводах, под крышей и в тепле.
Высокотехнологичные изделия, будь то электронные приборы или компьютеры, автомобили или самолеты, танки или автоматы по продаже железнодорожных билетов, используют новейшие достижения науки и техники - и тем не менее, их удается производить массовыми тиражами, в том числе и потому, что большая часть их конструкций собирается из универсальных специализированных блоков, агрегатов и систем. Разработчики этих изделий могут сконцентрироваться на том, что действительно важно и уникально для их изделия.
Виртуальные блоки и агрегаты принципиально отличаются от блоков "физических": нет никаких пределов их гибкости и настраиваемости, если правильно выбрать для них "элементную базу". То есть, разработать для их разработки и применения такой язык программирования, при использовании которого этот подход был бы самым простым и естественным, интуитивно понятным и не требующим головоломной умственной акробатики для освоения и применения.
В web-программировании сложилась ситуация, похожая на ту, которая угнетала "обычное" программирование на рубеже 70-х и 80-х годов прошлого века. Objective-J был задуман как ответ на вызовы этой ситуации. Те же самые механизмы Smalltalk, точно таким же образом как в Objective-C, были "посажены" на чистый JavaScript. Практически, один-в-один, как в Objective-C "1.0". Те же квадратные скобки, например...
Во-вторых (я упоминал о двух фактических ошибках), Cappuccino вовсе не клон Cocoa. У Cocoa есть "брат". Это библиотеки GNUstep, еще один потомок великих и легендарных NeXTstep/OPENSTEP. Исходный код библиотек GNUstep открыт, на условиях лицензии LGPL, второй версии.
То есть, их можно использовать для чего угодно и как угодно, с единственным условием: производные от них программные технологии должны распространяться на условиях той же самой лицензии LGPL, то есть, как программное обеспечение с открытым исходным кодом, на условиях LGPL.
Библиотеки Cappuccino частично перенесены на новый язык программирования из GNUstep (из-за чего они распространяются на условиях LGPL), частично написаны заново (так как предназначаются для существенно другой области применения, да и у "несущего" языка несколько другая специфика). Cappuccino - клон GNUstep.
Иными словами, можно не бояться, что юридическая машина Apple, смыв кровь компании Psystar со своих стальных челюстей, однажды займется компанией 280 North. Наоборот: насколько мне известно, в Apple внимательно и с нескрываемым интересом следят за ее деятельностью...
Но говорить о том, что 280 North лакомый кусочек для поглощения компанией Apple пока преждевременно. Проект уже зашел достаточно далеко, чтобы его сильные и слабые стороны стали почти очевидны, но пока еще не настолько далеко, чтобы гарантировать его успех. К тому же, LGPL, при всех достоинствах этой лицензии, в ряде случаев превращается в труднопреодолимое и неудобное препятствие.
Кроме того, вовсе не факт, что 280 North, иными словами, три выпускника Южно-Калифорнийского университета (USC), двое из которых уже поработали на Apple, легко променяют свободу на щедрое финансирование и мощную маркетинговую поддержку "самой приятной тюрьмы в Калифорнии"...
На личности мы еще перейдем. Как и следовало ожидать, о компании 280 North, и об Alma Mater ее соучредителей, можно рассказать много интересного.
Но сначала мне хочется рассказать о том, как их технологию приняло "общество". Прошло всего лишь несколько месяцев с того дня, когда с их технологии была снята завеса тайны, всего ничего - но...
2. Столкновение с жестокой реальностью
За первую неделю, с 4-го сентября по 13-е, инструментарий загрузили 10 000 раз. Для крошечной компании, из трех человек, это поразительный показатель. Ничуть не менее значительный, чем сотни тысяч скачиваний iPhone SDK в первые дни после его объявления и опубликования.
У проекта началась "общественная жизнь". Отклики и реакции. Восторженные, заинтересованные, критические, недоумевающие, враждебные...
Очень многие из web-разработчиков искренне не понимают, кому и зачем вдруг понадобилось надстраивать над JavaScript (вообще-то, объектно-ориентированным языком, пусть в нем и нет явных классов, явного наследования и прочих аттрибутов, типичных для большинства объектно-ориентированных языков) еще какие-то механизмы, тем более такие, по их мнению, ужасные, как в Objective-C.
Отчасти, в этом непонимании "виновны" разработчики технологии.
Стремясь подчеркнуть особенности инструментария, его обозначили как "попытку освободить web-программистов от, собственно, web". "Cappuccino не требует от разработчика знания HTML, CSS, DOM", заявил Росс Баучер из 280 North в одной из его статей, расположенных на сайте компании: разработчик в Cappuccino имеет дело с сущностями более высокого уровня, такими как окна, области окон, графические элементы...
То есть, в тех же условиях, в которых уже давно "ваяют" локальные программы их разработчики, и судя по тому, насколько эти локальные программы лучше...
Но именно эта "попытка освобождения" и вызывала у тех, кто потратил месяцы, а то и годы, на овладение современным web-инструментарием, особую ярость. Их можно понять. Но они не совсем внимательно прочитали это провокационное заявление. В нем ни слова не говорится о том, что разработчик будет изолирован от, собственно, web. Между "необязательно знать" и "знать совершенно бесполезно" некоторая разница все-таки есть.
Теоретически, от программирующего web-приложения в Cappuccino, знание первооснов web действительно не требуется. Но на практике, это знание сплошь и рядом оказывается необходимым. Как минимум, хорошо владеющий всей этой непростой механикой программист, по сравнению с "невеждами", имеет неоспоримые и реальные преимущества.
Как и в Cocoa (GNUstep, CocoaTouch), в Cappuccino сотни "готовых" виртуальных блоков, и десятки сложных комплексов, состоящих из этих блоков, немедленно готовы к употреблению. Они неплохо справляются с типичными (часто достаточно нетривиальными) задачами "сами по себе", без каких-либо серьезных усилий со стороны программиста.
Примерами таких комплексов могут служить, например, классы для работы с электронными таблицами, коллекциями элементов, и многие другие. Очень серьезные усилия уже были приложены разработчиками библиотек, и теперь те, кто пользуется этими комплексами, использует результаты чужого труда. Один из таких комплексов - класс (и объект), представляющий из себя каркас web-приложения.
В этом каркасе "участвуют" десятки объектов различных классов, вместо которых программист может подставлять свои, с измененным поведением. На этот каркас могут "монтироваться" всевозможные стандартные и самодельные блоки, которые превратят "универсальное web-приложение", которое практически бесполезно, в настоящую программу.
Нет никакой возможности ни модернизировать стандартные библиотечные блоки, ни, тем более, создавать свои собственные, не владея языком, на которым они написаны. Как той его частью, которая "Objective", то есть, происходит от языка Смолтолк, так и той, на которую она "посажена". В других клонах NeXTstep это чистый Си, в Cappuccino это чистый JavaScript.
И первые несколько недель практического и массового использования библиотек показали, что несмотря на кажущуюся концептуальную неправильность прямого обращения, например, к объектной модели документа (DOM), часто это самый эффективный и правильный способ выхода из самых разных практических ситуаций.
Я бы добавил "как и следовало ожидать". На то гибридные языки и создаются, чтобы используя высокотехнологичную автоматизацию можно было, в любой момент, подправить действия автоматики и направить их в нужное русло. Или, в точках программы, в которых требуется особенная эффективность, заменить непосредственным общением с первоосновами автоматические и высокоуровневые.
Все это ни в коем случае не разрушает "новую парадигму": структура программы остается ясной и понятной, низкоуровневые фрагменты существуют внутри классов и объектов, которые взаимодействуют с остальными элементами точно таким же стандартным образом...
Реальность выявила многое: оказывается, Cappuccino вполне может применяться вместе с другими инструментариями, вроде Flash или Silverlight, взаимодействовать с ними, и с многими другими программами и системами, написанными ранее.
Пользователи (программисты, пишущие web-приложения) требуют обеспечить поддержку и тех инструментов, которые в настоящее время отказываются работать с Cappuccino (в частности, 1Password). За три коротких недели, у тройки оважных и отчаянных первооткрывателей появились не только враги, но и союзники. Появились сотни новых идей. В адрес компании направлены десятки просьб и пожеланий.
Многие из пользователей не только просят: пользуясь преимуществами открытого исходного кода, они предлагают свои решения, указывают на не слишком удачные места в коде, исправляют ошибки, пишут недостающие части технической документации, которой так сильно не хватало в первые дни - как минимум, вокруг Cappuccino уже возникло творческое сообщество, и только время теперь сможет показать, насколько это правильное и мощное направление.
Практика - критерий истины. В настоящее время, тем не менее, на Cappuccino написана только одна большая программа, 280 Slides. Программа, поразительно похожая на Keynote компании Apple...
И несколько небольших пробных программ, написанных неофитами. Многие из них (мне кажется, их большинство) оптимизированы для iPhone.
Но вообще, их должно быть намного больше, они отчаянно нужны - это "еще один огромный, богатый и почти незаселенный континент", какими, еще совсем недавно, были Mac OS X и iPhone OS... Обратите внимание, на этот раз "континент" - web. У первопроходцев, которых ждут непроходимые дебри, опасности и лишения, есть уникальный шанс.
3. Переходим на личности...
За загадочным названием 280 North, суть которого я раскрою через несколько строк, стоят три недавних выпускника USC - Южно-Калифорнийского университета.
Это Франсиско Толмаски, закончивший USC в 2006 году и проработавший на Apple чуть больше года. Он занимался разработкой мобильного варианта Safari. Лично я запомнил Франсиско по его необычным вопросам на форуме Cocoa в 2003-2006 годы. Вопросы вызывали недоумение у местных гуру, которые тщетно пытались понять, для чего он тратит время на все эти вивисекции. С какой практической целью он пытается "поставить на уши" один класс Cocoa за другим? Оказывается, все это было неспроста.
Никогда не спешите клеймить позором тех, кто кажется вам чудаком. Очень может оказаться, что именно чудак прав, и что за его чудачествами стоят серьезные и вполне реальные причины...
Том Робинсон закончил USC в 2007 году, получив степень магистра компьютерных наук (то есть, "информатики"), и 280 North - его первое место работы.
Росс Баучер тоже выпускник USC, тоже магистр, тоже работал на Apple, принимал участие в разработке и поддерке iTunes Store.
Из сотен американских университетов, два знаменитых и значительных (USC и UCLA) расположены в Лос Анжелесе. USC окончили десятки знаменитостей. Среди них Нейл Армстронг, первым в истории человечества шагнувший на поверхность другой планеты (пусть это была всего лишь Луна), и Джордж Лукас, снявший Звездные Войны. У UCLA достижения поярче, но, возможно, 280 North поможет сравнять счет.
Некто Стивен П. Джобс приобрел в 1986 году компьютерное подразделение компании Lucasfilm, превратил его в Pixar Studios, и... именно с ее помощью он заработал свои миллиарды долларов. На Apple и NeXT, за долгие годы успехов и неудач, он заработал значительно меньше.
Компания 280 North расположена в Redwood City, в том самом городе, где с 1985 по 1996 находилась компания NeXT, и в котором, собственно, и появились на свет те самые библиотеки NeXTstep, которые в нашем веке превратились в супероружие Apple, и возможно, это еще не все, на что они способны.
Теперь здесь рождается Cappuccino, и возможно, через несколько лет в Redwood City будут специально приезжать для того, чтобы превратить мечты в реальность - если все получится, почему бы и нет?
Хайвей 280, в Северной Калифорнии
Компанию назвали в честь хайвея 280, связывающего между собой Сан Хосе и Сан Франциско, около которого все трое в свое время жили, и по которому каждое утро ездили на работу. Только и всего...
4. Web 3.0?
Насчет Web 3.0 я пошутил.
На мой взгляд (и теперь я знаю точно, что, как минимум, несколько сотен (тысяч?) обитателей нашей планеты разделяют мое мнение), ребятам с 280 North удалось придумать нечто безумно великое, и не просто придумать, но заложить его основы, и заставить их работать. И пусть пока он не во всем идеален, это уже живой, и даже практически полезный, инструментарий.
Проект Cappuccino переживает нелегкий период становления и взросления. Все еще может кончиться ничем, хотя с каждой новой победой, и с каждым новым участником проекта, этот исход становится все менее вероятным. Уж больно все красиво, интересно, и любое не совсем удачное решение все еще, не создавая мучительных проблем для "прикладных" разработчиков, можно заменить на более удачное, хорошо продуманное, блестящее...
Может быть, среди его создателей есть место и для вас? Поделитесь своими блестящими идеями, "заточите" этот инструмент под свои вкусы - а потом создайте самое совершенное и прекрасное web-приложение во всей всемирной паутине!
Столько всего еще предстоит сделать. Например...
Для Cappuccino все еще нет специальной интегрированной среды разработчика, которая могла бы взять на себя заботу о тривиальных и не совсем тривиальных тонкостях создания новых приложений. Эта среда разработчика вполне могла бы быть коммерческой программой. Если она будет хорошо написана, если она на самом деле будет упрощать и ускорять разработку web-приложений "в разы", она не может не быть успешной.
А что будет, если Cappuccino, все-таки, кончится ничем? Риск такого развития событий все еще остается. Силы и средства на разработку такой среды будут потрачены напрасно...
Во-первых, кто не рискует... Если инструментарий завоюет широкое признание в индустрии, от желающих, с пользой для себя, поучаствовать в его становлении и развитии не будет отбоя. Во-вторых, каждый вклад в возможный успех этого проекта делает успех проекта все более вероятным.
В-третьих, человек - животное авантюристического склада ума, нам необходимы стрессы (их недостаток не менее опасен, по словам врачей, чем их переизбыток). За стрессами и адреналином люди лезут в горы и спускаются в пещеры, ныряют в опасные прибрежные воды всех океанов, прыгают с небоскребов...
В-четвертых, ни один шаг не проходит бесследно: у вас останется опыт, и проект, который можно адаптировать для чего-то еще.
Это было "например". Одна из бесчисленных возможностей.
Напоминаю URL: "http://cappuccino.org/download/", и кроме Cappuccino Starter и Cappuccino Tools, на cappuccino.org еще много-много всего интересного...
Это не Web 3.0, это всего лишь опытный образей "серебрянной пули", и уникальная возможность принять участие в ее доработке, доводке и испытаниях. То есть, это даже нечто большее, чем Web 3.0 (Web 3.5?)... |
 |