Какой хороший функциональный язык для построения веб-сервиса?

Есть ли функциональный язык с хорошей поддержкой и инструментами для создания веб-сервисов? Я смотрел на Scala (который компилируется в JVM и может использовать библиотеки Java) и F# (который является.NET), но они молоды и имеют некоторые недостатки. В частности, Scala не поддерживает исключение хвостовых вызовов, за исключением саморекурсивных функций, которые ограничивают типы композиций, которые вы можете выполнять (это фундаментальное ограничение JVM). F# очень нов и пока не поддерживается полностью, что делает его более рискованным, чем более традиционный язык.

Можно ли создать веб-сервис, используя Haskell, ML или любой другой более традиционный функциональный язык, или лучше использовать Scala или F#? Любые другие предложения?

11 ответов

Решение

Если.NET является опцией для платформы, не стоит сбрасывать со счетов F# из-за ее молодости. Становясь ближе к тому, чтобы стать официальным продуктом, он становится все лучше и лучше интегрируется с Visual Studio и наследует все преимущества, предоставляемые.NET.

Также существует активная и доступная поддержка со стороны Microsoft и сообщества энтузиастов.

У Окамла есть Ocsigen / Eliom... Хотя я не могу сказать, что использовал его. Это также на ранних стадиях.

Haskell:

Взгляните на этот вопрос: как проще всего писать веб-приложения на Haskell?

По сути, WASH, HAppS и Janus являются тремя крупными в Haskell на данный момент. Мой голос за HAppS, который имеет лучший учебник на данный момент.

Есть также HSP, но я не смотрел и не думал об этом в последнее время.

Эрланг, с челюстями. Это забавный, мощный язык, прекрасно масштабируемый, позволяющий легко и безопасно использовать 100 или 1000 процессов. И веселье.

(Я тоже думаю, что это красиво.)

Пожалуйста, прочтите это введение на F# и ASP.NET, которое даст вам хорошее начало.

В Интернете есть несколько примеров использования F# в веб-приложениях. Одним из них является, например, автозаполнение Томаса Петричека, которое он создал в качестве иллюстративного приложения к своей статье "Инструменты F# Web: приложения Ajax стали проще". Я тоже использовал F# как часть веб-сервиса и гарантирую, что он работает хорошо:).

Если вы делаете это для развлечения, а не для надежности или работы, вы можете исследовать ARC. Это незаконченный язык, находящийся в процессе разработки, со своими преимуществами и недостатками.

Отказ от ответственности: не связан с ARC или Полом Грэмом

Reddit был построен на LISP, не так ли? И Пол Грэхем очень высоко ценит его ловкость, особенно в веб-приложениях.

Вы могли бы рассмотреть Clojure - это очень новый язык, но выглядит очень многообещающе для масштабируемых параллельных приложений и имеет преимущество очень хорошей интеграции JVM и доступа ко всем библиотекам Java (так же, как Scala).

Clojure также имеет довольно много конструктивных особенностей, которые решают проблему хвостовой рекурсии (специальная конструкция recur, многие основные функции реализованы итеративно и т. Д.)

Хотя я не могу рекомендовать это, потому что я все еще играю с этим, Эрланг очень силен.

Я должен согласиться с рекомендацией для Clojure. Я только что закончил нагрузочный тест службы новостной ленты, написанной на Clojure, который выдерживал 80 исходящих сообщений активности в секунду на каждый веб-сервер Clojure, работающий на экземпляре m1.medium EC2.

У функциональных языков предыдущего поколения есть такие инструменты, как Ocsigen (для OCaml) и HApps (для Haskell), но у них практически нет пользователей: они являются полностью непроверенным программным обеспечением.

Напротив, Scala и F# основаны на очень хорошо протестированном коде из Java и.NET. В частности, F# был очень интенсивно разработан Microsoft за последний год, потому что его производят. Ни один другой функциональный язык никогда не получал такого уровня поддержки, и, следовательно, F# уже очень удобен (и намного опережает такие языки, как Haskell, с точки зрения инструментов разработки).

Другие вопросы по тегам