Так, только что недавно узнав о Clojure, я интересуюсь понижением моих зубов в некоторое старое доброе функциональное программирование снова. Для каких заявлений Clojure был бы хорош? Веб-приложения? Приложения клиента Windowed? Утилиты командной строки? Для каких заявлений Clojure является ужасным решением?
Clojure отлично подходит для всего, что включает в себя много разборки. Я бы, конечно, использовал его, например, для анализа журналов-файлов. Это также отличный язык, чтобы написать DSL. Я, вероятно, не использовал бы его для приложений, которые находятся 90% GUI. Конечно, вам не нужно выбирать один из одного языка в настоящее время. Вы можете использовать Clojure для части вашего приложения.
Есть очень маленький Clojure не подходит. Это язык общего назначения, и вполне подходит практически любую задачу. Особенно связанные совпадение.
Я думаю, что единственное, что Clojure может не быть хорошим для - это одноквартирующие сценарии командной строки. Время запуска JVM даже при работе с флагом -Client не так жарко. Проекты, такие как Nailgun, предоставляют что-то из обходного пути, но есть некоторые серьезные последствия безопасности с этим подходом.
В противном случае я думаю, что Clojure идеально подходит для любой задачи.
Я тоже довольно новичок в Clojure и нравится использовать его на математических проблемах, где скорость не является проблемой. Это просто так выразительно. Также очень приятно быть в состоянии использовать расширенную точность BigDecimals и Bigintegers прозрачно - не тестируют с неуклюжими конструкторами и методами, которые требует Java.
Предостережение о скорости действительно из-за моего собственного неопытности. Я не знаю, что это проблема для действительно квалифицированного. Это также область, которая поддается распараллелизу, которая, кажется, так просто в Clojure.
Действительно, любой тип приложения должен быть в порядке. Clojure - это разумный язык общего назначения, поэтому он дает себе большинство вещей, особенно из-за поддержки библиотеки класса Java.
Функциональные языки программирования хорошо протянули себя очень параллельными проблемами, поэтому вы можете захотеть искать что-то в этой области. Например, хрустящие массы информации с использованием MapReduce подход, как Google do ...
Clojure Хорошо подходит для задач обработки данных, снижающих на карте, которые занимаются огромными наборами данных. Он используется для большого эффекта для этого на FlightCaster.com и Runa. Я использую его для криптографии, и я видел его профессионально в двух других сетевых ориентированных запусках.