Здравствуйте, bleed, Вы писали:
B>Думаю, здесь найдутся знающие люди, потому спрошу.
B>Есть у меня идея залезть в функциональное программирование поглубже. Потому встает вопрос, какой язык выбрать для изучения (благо, выбор есть).
B>Я в свое время довольно неплохо изучил Лисп (в его Common варианте). Но это было во время учебы, и цели были чисто академические. Сейчас интерес несколько другой: применение в реальных проектах на практике.
B>Поэтому интересует современный и активно развивающийся функциональный язык. Кто что может посоветовать?
B>Еще поделитесь своими соображениями относительно перспектив функционального программирования. Или будущего нет?
Для изучения, я думаю, лучше выбрать чисто функциональный язык, чобы лучше почувствовать стиль мышления. К примеру Haskell (
www.haskell.org). Среди его приемуществ — наличие стандарта (Haskell 98), однако, существует много быстро развивающихся расширений и разновидностей.
Для реальных же проектов обычно легче бывает использовать языки с побочными эффектами. Можно порекомендовать ML. Пожалуй есть 2 наиболее популярные ветви — Standard ML (среди реализаций Moscow ML и SMLNJ) и Caml. На мой взгляд, Standard ML наиболее разумный компромисс. Caml грязен до отвращения

хотя, говорят, порождает весьма эффективный код.
Само собой, scheme. Тут уже упоминался. Вот и книга:
http://mitpress.mit.edu/sicp/sicp.html
Ну и напоследок, — Clean (
http://www.cs.kun.nl/~clean/index.html) Очень интересный чисто функциональный язык. Для некоммерческих целей доступна бесплатная реализация. Шустрый, активно развивается. Там же на сайте доступна куча научных статей по теории и реализации ФЯ и даже книга AWL по редукции графов.
Остальные ссылки легко найти через гугль.
Будущее, определенно, есть, хотя чтобы его приблизить, теоретикам программирования придется постараться. Основной недостаток ФЯ — низкая скорость — сейчас перестает быть актуальным. С распространением таких вещей как .NET все языки будут тормозить одинаково

Зато ФЯ с их строгой математичесой базой открывают возмоности (по крайней мере, теоретически

) для таких вещей, как доказательство корректности программ, что для обычных языков крайне затруднительно. Возможно, это способ справиться с растущим мастабом ПО.