Tuesday, May 29, 2007

Функциональные языки: вести с полей

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

Haskell

Мейнстримом, понятно, ему не быть, слишком много сложных экспериментальных фич, язык, крутая learning curve -- учитывая все это, можно сказать что хаскель уже популярен донельзя. Кое-где даже встречается в объявлениях о поиске сотрудников, у "них" вот Credit Suisse его использует. Pugs тоже сыграл большую роль в том что название "хаскель" слышали даже не очень сильно интересующиеся вопросом товарищи. Насчет того чтоб он как-то серьезно применялся в России -- не слышно и не видно.

O'Caml

Окемлу лет тоже уже много, так что резкие всплески популярности он уже пережил -- самый прагматичный язык, с замечательным оптимизирующим компилятором. В Jane's Capital вроде как его активно любят (почитать можно тут). Рекрутеры продвинутые тоже знают. Вот тут  люди в Москве на нем даже игры разрабатывают.

F#

Бурно развивающийся диалект Ocaml'а для .net. Точнее от ocaml он уже довольно-таки далеко. Огромный плюс в том что засчет использования .net нахаляву получаем интеграцию с C#, гуи и IDE. В этом году выходят сразу три книжки по F#,  активно пиарятся две консалтинговые конторы специализирующиеся на F#: вот и вот. ИМХО вполне себе положительный знак. Программеров на F# правда пока никто не ищет.

Scala

Новый язык, на базе JVM, поддерживает кучу интересных фишек, типа GADT, ОО модель плотно интегрирована с функциональщиной. Больше всего сейчас слышно про веб-фреймворк на scala -- lift. В качестве killer app приводится клон вебдваноль сервиса twitter в 800 строчек, вроде как способный обслуживать до миллиона юзеров с одного сервера. В общем, по мне так -- язык просто замечательный, даже приятнее окемла.

Становится все популярнее и популярнее -- у меня в google alerts уже половина упоминаний scala относится к языку программирования, а не к одноименному оперному театру. Полгода назад показатель составлял 20%.

Erlang

Эрлэнг это, кажется, наиболее успешный функциональный язык после excel'я -- потому что изначально создавался для решения практических задач, и рассчитан на относительно низкий порог вхождения для обучаемых программистов. Killer App из мира open source это jabber-сервер ejabberd. Ну и хрестоматийный пример про маршрутизатор AXD301 на эрланге.

В плане работы -- есть несколько организаций в России которые, похоже, используют Erlang вполне промышленно. Судя по объявлениям о приеме на работу в Питере это StanaPhone (российское отделение крупной американской компании, разрабатывающей VoIP приложения). А в Москве прям сейчас ищет Erlang-программистов довольно крупная медиа-компания A1.

13 comments:

Anonymous said...

Nemerle забыл

Сёмка Новиков said...

Чудесноу (:
Я прямо сейчас веду проект на F#, на работе, все дела, но это была инсайдерская идея, в целом всем похрен на чем мы будем писать.

lrrr said...

> Я прямо сейчас веду проект на F#, на работе, все дела, но
> это была инсайдерская идея, в целом всем похрен на чем мы будем писать.
Оо замечательно :) А много ли нашлось девелоперов?
F# ваще отличный готовый к рельному применению язык. Я на нем диплом писал :)

Только вот сцуко в гугле искать по слову F# трудно.

>Nemerle
А Немерле совсем не так популярен как вышеперечисленные. Похоже, за пределами форума рсдн и собственно разработчиков в Польше его мало знают (см. google trends по nemerle). Сайт уже год не обновляется, занимается им, я так понимаю, пара человек в свободное время. Ну то есть он конечно хороший, но до промышленного применения ему далеко, и даже никакого движения в эту сторону не видно )

Сёмка Новиков said...

А я в метаниях, на чем диплом писать, честное слово.
Хочется на scheme, но для этого сначала надо написать ее интерпретатор под Inferno (-:

Разработчиков нашлось двое (:
Контора непровильная, нас тут мало.

Сёмка Новиков said...

*непрофильная, миль пардон

Alex Ott said...

2Тру Программист:
А что за третья книга по F# - я что-то не видел ее анонса.
По Ерлангу летом выйдет книга, заказы уже принимаются на амазоне.
По поводу языков - забыты Lisp/Scheme, а вот Lisp jobs постятся регулярно, и можно найти такую работу в россии. Я работал в компании, в которой активно писали на Scheme коммерческие продукты, и там рады программистам на этом языке :-)

lrrr said...

>А что за третья книга по F# - я что-то не видел ее анонса.
F# for scientists (http://www.ffconsultancy.com/products/fsharp_for_scientists/index.html), там даты точной нету правда.

Про лисп и scheme я не стал писать потому как они во-первых не так сильно позиционируются как функциональные языки, а во-вторых тут отдельный пост надо писать -- слишком много получается примеров промышленного использования :)

Сёмка Новиков said...

Scheme, как раз, очень даже функциональный язык.
Собственно для того ее и придумывали.

lrrr said...

Гхм да, насчет scheme был неправ..

Vladimir Shabanov said...

F# ваще отличный готовый к рельному применению язык. Я на нем диплом писал :)

А чем окемл не устроил? Или дот-нет гуй понадобился? )

BTW: увидев в одном из примеров на F# слово null пришел в ужас и понял, что даже если бы оно было не microsoft only, то вряд-ли стал бы его использовать.

lrrr said...

дот-нет гуй это очень хорошо, да. и вообще дот-нет это замечательно -- по причине несложного интеропа с C#. И еще в F# list comprehensions есть. Поэтому я F# предпочту окемлу если что :)

А диплом мой был не очень большой и сложный в части софта, поэтому получилось, что он реально на некотором общем подмножестве F# и окемла написан.

Anonymous said...

насчёт применения Haskell у нас спроси thesz, они его вовсю используют кажется (в СПб).

Сергей Соловьев said...

> насчёт применения Haskell у нас спроси thesz, они его вовсю используют кажется (в СПб).

Иван Тарасов, какие люди :)

> BTW: увидев в одном из примеров на F# слово null пришел в ужас и понял, что даже если бы оно было не microsoft only, то вряд-ли стал бы его использовать.

Причина использования null в F# -- Common Type System (и, в частности, интероп с C#).
Однако многие типы F# разработаны таким образом, чтобы избежать использования null.