Какой хороший функциональный язык для создания веб-сервиса?
Есть ли функциональный язык, который имеет хорошую поддержку и инструменты для создания веб-сервисов? Я смотрел на Scala (который компилируется в JVM и может использовать библиотеки Java) и F # (это .NET), но они молоды и имеют некоторую неэффективность. Scala, в частности, не поддерживает исключение хвостового вызова, за исключением саморекурсивных функций, что ограничивает виды композиции, которые вы можете сделать (это фундаментальное ограничение JVM). F # является очень новым и пока не полностью поддерживается, что делает его более рискованным, чем более обычный язык.
Возможно ли создать веб-сервис с использованием Haskell, ML или любого другого более традиционного функционального языка, или было бы лучше пойти с Scala или F #? Любые другие предложения?
Ответы
Ответ 1
Если .NET является вариантом для платформы, не уменьшайте F # из-за своей молодости. По мере приближения к становлению официальным продуктом становится все лучше и лучше интегрироваться с Visual Studio и наследует все, что дает .NET.
Существует также активная и доступная поддержка как Microsoft, так и энтузиазма сообщества.
Ответ 2
Ocaml имеет Ocsigen/Eliom... Я не могу сказать, что я использовал его. Это также на ранних этапах.
Ответ 3
Haskell:
Взгляните на этот вопрос:
Каков самый простой способ написания веб-приложений в Haskell?
В принципе, WASH, HAppS и Janus являются тремя большими в Haskell на данный момент. Мое голосование за HAppS, у которого в настоящий момент есть лучший tutorial.
Существует также HSP, но я не смотрел на него или не думал об этом недавно.
Ответ 4
Erlang, Yaws. Это веселый, мощный язык, масштабируется очень хорошо и делает 100 или 1000 процессов безопасными и легкими. И весело.
(Я также думаю, что это довольно.)
Ответ 5
Прочтите это введение на F # и ASP.NET, который даст вам хорошее начало.
В Интернете есть несколько примеров, в которых F # используется в веб-приложениях. Одним из них является, например, автозаполнение Томаса Петричека, которое он построил как иллюстративное приложение к своей статье " F # Web Tools: приложения Ajax упрощены". Я тоже использовал F # как часть веб-сервиса, и я гарантирую, что он хорошо работает:).
Ответ 6
Если вы делаете это для удовольствия, а не для какой-либо надежности или рабочего места, вы можете исследовать ARC. Это незавершенный, прогрессирующий язык, с его преимуществами и недостатками.
отказ от ответственности: не связан с ARC или Paul Graham
Ответ 7
Reddit был построен на lisp, не так ли? И Пол Грэм очень сильно говорит о своей ловкости, особенно с webapps.
Ответ 8
Вы можете подумать о Clojure - это очень новый язык, но выглядит очень перспективным для масштабируемых параллельных приложений и имеет преимущество очень хорошей интеграции JVM и доступа ко всем библиотекам Java (точно так же, как Scala).
Clojure также имеет довольно много конструктивных элементов, которые обходят проблему хвостовой рекурсии (специальная конструкция recur, многие основные функции реализованы итеративно и т.д.).
Ответ 9
Хотя я не могу рекомендовать его, потому что я все еще играю с ним, Эрланг очень силен.
Ответ 10
Я должен согласиться с рекомендацией для Clojure. Я только что закончил нагрузочный тест службы записанной в Clojure, которая поддерживала 80 исходящих сообщений активности в секунду на веб-сервере Clojure на примере экземпляра m1.medium EC2.
Ответ 11
В предыдущих версиях функциональных языков есть такие инструменты, как Ocsigen (для OCaml) и HApps (для Haskell), но у них практически нет пользователей: они полностью непроверенные.
Напротив, Scala и F # основываются на очень хорошо проверенном коде Java и .NET. В частности, F # был очень развит Microsoft за последний год, потому что он разрабатывается. Никакой другой функциональный язык никогда не получал такого уровня поддержки, и, следовательно, F # уже очень полезен (и намного опережает такие языки, как Haskell с точки зрения средств разработки).