В какой-то момент мне захотелось поговорить о программистских технологиях не как о "средстве производства", но как о форме искусства. Может быть, литературе... или нет, скорее чем-то более "прикладном". Орнаментах на одежде, узорах на вилках и ложках. Полушутя, полусерьезно. Без какой-либо цели и плана, перебирая то, что попадется под руку.
Итак, что там у нас первым? С и С++... ? Ну что ж, пусть будут они.
"Отцы и дети"
Этой главке можно было бы дать и другой заголовок. Что нибудь типа "история одной иллюзии". Но иллюзий у нас будет еще много, а конфликт поколений редко когда проявлялся столь же явно. (Здесь мне хотелось написать о языках, как о людях. Не стану себе в этом отказывать.) Если же смотреть на C, как на искусство - то это готика. Это витражи и тени. Вампиры и демоны, оборотни и призраки, маги и святые - вполне уместные образы, когда речь заходит об разработке на С. А тени средневековых цеховых общин проглядывают за спинами дружеских пивных вечеринок программистов-"сишников".
Но колесо времени поворачивалось и авторы С++ решили пообещать философский камень и золото из ртути. Пообещать промышленности - эффективность "повторного использования кода", а программистам - дорогу к "элитной разработке". В результате, времена С++ мне представляются чем-то вроде эпохи барокко в программировании. Позолота, блеск и вычурность сочетаются с теми же тенями и призраками, которые пришли еще из готики. Но только теперь они не разгуливают по залам дворцов, а прячутся по углам в тени и ночи. А так - они все те же, эти тени...
Основная идея наследника - "один язык для всего, сверху донизу". (Как тут не вспомнить алхимическое "что вверху, то и внизу" Трисмегиста.) Попытка вернуться в Вавилон до смешения языков, или напротив - сразу попасть в "царствие божие". И все же навряд ли метафизический подтекст играл какую либо роль в эмоционально-восторженном отношении разработчиков к С++. Скорее, дело в ином...
"Каждый выбирает по себе, слово для любви и для молитвы..." Однако только в двух случаях эти слова совпадают: в юношеской влюбленности и в стариковском молчании. Времена C++ - это юность отрасли. И мифы этого языка - мифы юности. Универсализм - манил описанием всей вселенной, максимализм - позволял не замечать нюансов и несообразностей. Позолота бальных зал... и полное отсутствие сортиров.
"Мы наш, мы новый мир построим"
Какой камешек у нас попался следующим? Кажется, Java...
Только первые ассоциации с ней вовсе не кружка кофе (сколь бы ни старались рекламисты от Sun), первая ассоциация - сталинские высотки Москвы. Архитектура эпохи "вождизма". Прославление мощи и надежности. А также узкие коридоры, темные подъезды и грязные коммуналки. Давящие кессоны потолка и ощущение "недремлющего взгляда" на спине.
Здесь уже нет призраков и демонов. В сей архитектуре они были бы неуместны. Если кто и прячется за углами темных коридоров, так разве что местные алкаши.
Стиль "вождизма" и язык Java пришли в этот мир по дорожке одних и тех же устремлений. Приоритет массы над индивидуальным талантом. Как следствие - недоверие к человеку. Опека "старшего брата" и обмен "риска" на "послушание".
Советский Союз и "индийские программисты" выглядят родственниками, хоть их рождение и отделено почти веком времени... А Java пахнет вовсе не кофе, она пахнет осенней слякотью ноябрьских демонстраций и мандаринами на новый год.
Скандинавский минимализм
На следующем камешке (с мшистых берегов северных фиордов) нацарапано "Erlang"... язык и технология.
Очень странное создание университетского профессора, оказавшегося перед необходимостью изготовить инструмент для сугубо утилитарных целей. От языка просто веет духом Скандинавии. Минимализмом, индивидуальностью и простором. И это именно минимализм, а не аскетичность. Тот самый минимализм, который зачастую обходится куда дороже стандартного многообразия. Чтобы закрыть многие потребности малым числом сущностей, сами эти сущности приходится делать очень универсальными. Искусство случается тогда, когда они, помимо универсальности, еще удобны и красивы.
С Erlang-ом шаг к искусству случился...
Эстетика минимализма - несколько особая эстетика. Она для тех, кого больше радует "отсутствие", нежели "наличие". Например, отсутствие грязи. Пустое пространство комнаты, а не большое количество мебели. При этом оказывается, что все необходимое таки есть. Но именно необходимое, а не сверх того. Жесткая и строгая философия "свободного пути", когда все, что требуется - помещается в котомку.
Вилочки по европейски
Ruby... язык вроде бы "японский" по происхождению. Но совершенно европейский по стилю. Никакой "близости к природе" там нет. Если уж говорить о "японском колорите", то скорее это колорит toyota (кода отдельно ящичек для перчаток, отдельно подставочки для пива..).
Но больше всего Ruby мне напоминает большой столовый набор... Вот вилочка для рыбы, с выгравированнным карпом. Вот другая - для салата. А вот эта - для кусочков брынзы... Маленькие "штучки" для отдельных маленьких действий. По-японски аккуратные, но ни в коем разе не универсальные. Каждая для своего блюда.
Конечно, можно выбрать одну вилку побольше и сгрести ей весь ужин... но это как бы "неэстетично". А Ruby заметно приучает к эстетству. Очень компактный язык, позволяющий вести разработку весьма быстро, но... есть некая неторопливость и филигранность в его философии. Вот это может быть как раз японское.
08.05.2007