Журнал «Компьютерра» N 8 от 27 февраля 2007 года (Компьютерра - 676) - Журнал «Компьютерра»
Шрифт:
Интервал:
Закладка:
Проанализировав набирающие популярность гибриды, можно заметить, что господство императивного программирования по-прежнему сохраняется. Как бы ни изменялось отношение к объектам и коду в целом, какие бы функциональные возможности ни появлялись, структура программы на микроуровне остается тем же набором последовательных инструкций, ветвлений и вызовов функций. Понятно, что привычные паттерны так просто своего не уступят.
Тем не менее существуют, конечно, и более экстремальные «постмодернистские» системы; самая известная и успешная из них, пожалуй, Erlang. Язык/платформа (производные сразу от нескольких декларативных языков программирования и концепций), созданная суровыми шведскими практиками из фирмы Ericsson для нужд телекома, — Erlang не то чтобы пробивается в мэйнстрим, но в своей области (написание распределенных приложений с серьезными требованиями к производительности и устойчивости) чувствует себя весьма уверенно. Вообще, в области распределенных приложений, в телекоммуникациях и смежных областях совмещение красивой теоретической модели и мощной платформы — решение, набирающее вес. Помимо Erlang, на похожих позициях стоят Oz/Mozart и с-пылу-с-жару новый язык Corn (также рожденный в телекоме, на сей раз — польском).
Предпринималось достаточно попыток приблизиться к практике, оставаясь в рамках господства «истинных концепций», — от ML-производной с поддержкой объектов и императивности OCaml до отдаленного потомка Smalltalk/Self — io, преподносимого как язык легкий и стройный, идеальный для встраивания. Да и многие языки Lisp’овой семьи (в том числе сам Common Lisp), наверное, можно причислить к «постмодернистским» по богатству концепций и стремлению к практичности.
Очередная волна шумихи вокруг «нового веба» тоже не осталась незамеченной — здесь можно отметить такие проекты, как Hop от французского института INRIA (родины OCaml) и Links (им занимается Phil Wadler, некогда концептуальный архитектор Haskell), цель которых — свести разработку веб-приложений к одному языку сверхвысокого уровня, который бы «компилировался» в традиционные HTML, JavaScript, SQL и серверные скрипты [В каком-то смысле ASP.Net и некоторые Java-библиотеки занимаются тем же, имитируя для программиста однородную языковую среду. Существует также проект haXe, с аналогичным подходом и JavaScript-образным базовым языком].
Тем не менее пока все эти инициативы в основном «для своих», то есть апологетов модернизма, желающих «сделать что-нибудь практичное». Говорить о серьезном проникновении в мэйнстрим языков с понятиями и синтаксисом, в корне отличным от старичка Алгола, пока рано.
Итоги: все чудесатее и чудесатееКлючевое слово в последней фразе предыдущего раздела — пока. Старая императивная модель пока ограничивает восприятие, но эти ограничения с каждым днем уменьшаются. По мере проникновения некогда странных идей «в подкорку», в базовый набор понятий современного программиста расклады могут сильно меняться. К примеру, помимо заметной миграции веб-программистов с Java на Python и Ruby, существует не слишком большая, но устойчивая миграция с Ruby на Smalltalk: когда идея «все есть объект» становится привычной и родной, то некоторые очевидные преимущества Smalltalk (вроде прекрасной среды, особенно для экспериментаторов и творческих личностей) начинают перевешивать мнимый недостаток — «непривычность». Точно так же, после привыкания к основополагающей идее «функция — наше все» на очевидных и простых примерах, многие мэйнстрим-программисты куда благосклоннее начинают смотреть если не на Haskell, то по крайней мере на OCaml и Erlang.
К чему приведет такое «смешение языков» в течение ближайших лет, при нынешних скоростях возникновения идей-суперзвезд, сказать трудно. Быть может, Erlang, отделавшись от репутации «странного до идиотизма», вскоре займет соответствующее место в «гонке платформ».Net/Java (учитывая, что за платформой Erlang/OTP стоит сильная и амбициозная корпорация, хотя и не слишком заинтересованная в рынке платформ — пока?). Не исключено, что набор тенденций, называемый «Web 2.0», вызовет к жизни другую клиентскую платформу, заметно отличающуюся от сегодняшних браузеров (вспомним, что браузер изначально — таки ж программа для просмотра, а не для работы со сложными приложениями): в ней может быть снято ограничение на клиентский язык [Сегодня это де-факто только JavaScript — который тоже ох как непрост (см. врезку «СНЯПМ»)], и это породит новую гонку языков. А может быть, послезавтра вообще появится нечто существенно отличное от веба. Или, опять же, прилетят инопланетяне и всех завоюют.
Одно ясно: мы живем в эпоху победившего постмодернизма. И здесь случается всякое. Следите за рекламой.
СНЯПМСНЯПМ — «самый недооцененный язык программирования в мире» — распространенное шуточное название JavaScript. Его сугубо прикладное направление (как языка программирования, работающего в браузере) стало серьезной преградой к оценке концепций языка по достоинству. Распространенное мнение — «это такой недоязык, в нем и классов-то нормальных нету»; между тем JavaScript как самостоятельный язык — яркий и небезынтересный представитель семейства «прототипно-ориентированных» языков (вместе с диалектом Smalltalk’а Self и современным io), с поддержкой функционального программирования; то, что синтаксически язык относится к C-образным языкам, — чуть ли не единственное, что роднит его с «классическими» системами программирования.
Впрочем, в последнее время, на волне интереса к «богатым» интерфейсам веб-приложений и AJAX (ну и, ясное дело, наступившего постмодернизма), репутация этого занятного языка постепенно начала укрепляться.
КАФЕДРА ВАННАХА: Прецедент Эдипа
Автор: Ваннах Михаил
Об эдиповом комплексе знает всякий, взросший в лоне современной западной культуры. Но вот подлинная история Эдипа, та, о которой нам поведали Софокл в трагедии «Царь Эдип» и Аполлодор в «Мифологической библиотеке», создает интереснейший и важнейший прецедент для информационных технологий.
Итак, Сфинкс, aka Сфинга. Матерью этой барышни была полудева-полузмея Ехидна. Папой — Тифон, чудовище с сотней драконьих голов, человеческим торсом и змеиными кольцами вместо ног. Братьями и сестрами — чудовищные собаки Кербер и Орф, лернейская гидра, химера.
Сама Сфинкс в результате сложной игры рецессивных и доминантных генов имела лицо и грудь женщины, тело льва и крылья птицы. Имя красавицы обычно выводят из греческого глагола «сжимать», «удушать», откуда происходят и «сфинктеры».
Это чудовище использовалось Герой, супругой Зевса в качестве правопринудителя. (Подобно тому, как полиции всех стран и времен используют «ссучившихся» уголовников для борьбы с преступностью.) Объектом деятельности Сфинкса стали семивратные Фивы, город основанный Кадмом в Беотии.
Поводом для правопринудительной деятельности послужило деяние царя Фив Лая, а именно растление им юного Хрисиппа [Schol. Eur. Phoen. 1760.]. (Как всегда, когда речь идет об элитах, дело не обошлось без сексуальной психопатологии…) А протекала карательная работа Сфинги весьма своеобразно. Расположившись у стен Фив на горе Сфингионе, Сфинкс задавала прохожим вопрос: «Скажи мне, кто ходит утром на четырех ногах, днем на двух, а вечером на трех? Никто из всех существ не изменяется так, как он. Когда ходит он на четырех ногах, тогда меньше всего у него сил, и медленнее двигается он, чем в другое время».
Поскольку путники все как один разрешить эту загадку не могли, то дружно гибли в железных объятиях Сфинги. Так что мы можем отметить — Сфинкс была использована как первый в истории случай smart bomb, «умной бомбы». Она была задействована для нарушения коммуникаций семивратных Фив, функционируя в строго локализованном регионе. Она имела изощренную систему «friend or foe», опознавания «свой-чужой». Признак опознавания просто великолепен — он передается по естественному, голосовому каналу коммуникации. Он сформулирован на естественном языке. И, требуя довольно развитого мышления, он весьма устойчив.
Получилось все так, как планировала Гера. Народ семивратных Фив страдал от деятельности Сфинкс, мстившей за преступления своего царя Лая. Примерно так, как жители Дрездена сгорали в огненном шторме, расплачиваясь за деяния А.Гитлера. Обратим внимание — разумность Сфинги превышала IQ любой современной системы оружия, но гражданское население страдало все равно — этот урок стоит помнить и политикам, ведущим самую, что ни на есть справедливую, войну, так и подданным правителей, действия которых могут привести жителей к малоприятным знакомствам с умным оружием.
Согласно классической версии Эдип освободил народ семивратных Фив от Сфинкс, дав ей ответ — «Это — человек. В детстве, зрелости, старости». После этого Сфинкс, взмахнув крыльями, бросилась со скалы в море. Принято считать — богами было предрешено, что Сфинкс должна погибнуть, если кто-либо разрешит ее загадку. Формально все так и было — запрограммированные действия после приема идентификационного кода.