Выбрать главу
Обращение к народу

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

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

Беседовал Дмитрий Антонюк

…И другие

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

Тем не менее существуют, конечно, и более экстремальные «постмодернистские» системы; самая известная и успешная из них, пожалуй, 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.]. (Как всегда, когда речь идет об элитах, дело не обошлось без сексуальной психопатологии…) А протекала карательная работа Сфинги весьма своеобразно. Расположившись у стен Фив на горе Сфингионе, Сфинкс задавала прохожим вопрос: «Скажи мне, кто ходит утром на четырех ногах, днем на двух, а вечером на трех? Никто из всех существ не изменяется так, как он. Когда ходит он на четырех ногах, тогда меньше всего у него сил, и медленнее двигается он, чем в другое время».