Haskell против Erlang для веб-сервисов

30

Я рассчитываю начать экспериментальный проект с использованием функционального языка и пытаюсь выбрать между Эрлангом и Хаскеллом, и у обоих есть некоторые моменты, которые мне действительно нравятся.

Мне нравится сильная система типов и чистота Хаскелла. У меня есть ощущение, что это облегчит написание действительно надежного кода. И я думаю, что сила Хаскелла сделает кое-что из того, что я хочу сделать, намного проще.

С другой стороны, у меня возникает ощущение, что некоторые из фреймворков для работы в Интернете на Haskell, такие как Yesod, не так продвинуты, как их контрагенты Erlang.

Мне скорее нравится подход Erlang к нитям и отказоустойчивости. У меня есть ощущение, что масштабируемость Erlang может стать большим плюсом.

Это приводит к моему вопросу, каков опыт людей в реализации бэкэндов веб-приложений в Haskell и Erlang. Существуют ли пакеты для Haskell, чтобы предоставить некоторые легкие темы и актеров, которые есть в Erlang?

Захари К
источник
4
Если вы не укажете требования, это невозможно сказать. Просто бросьте монетку или что-то в этом роде.
Витор Пи
1
У меня нет никаких доказательств этого заключения, но использование Erlang в Facebook указывает мне, что оно мощное и надежное.
Мэтью Прочитал
1
@Matthew: Facebook использует Erlang для своей системы чата, по-видимому, для его массово параллельных качеств.
Роберт Харви
3
Да, используйте Lisssssssp .
Марк С
8
В старом журнале Commodore 64 была статья о поддельных языках. Лучшим был «Lithp», который был в точности похож на lisp, за исключением того, что символ «s» был исключен. Это заставило всех разработчиков «lithp» заменить «th» на «s». :)
Берин Лорич

Ответы:

17

Единственный вопрос, который у меня есть, это что делает ваш веб-сервис? Если веб-сервис действительно является функциональной проблемой, то Haskell подойдет лучше.

Эрланг не обязательно является функциональным языком. Это процедурный язык с очень сильной моделью исполнения для массивно параллельных систем. Он был разработан для телекоммуникационной отрасли и определенно отлично подходил для ответа на запросы веб-сервисов.

См. Эту страницу * для обзора различий между процедурным и функциональным программированием. (Заранее извиняюсь за уродливый черный на голубой странице).

Если ваш веб-сервис выполняет большое количество сопоставлений с шаблоном и применяет правила, то Haskel - ваш выбор. Если вы просто хотите масштабируемую инфраструктуру, которая не слишком отличается от языков, которые вы, вероятно, уже знаете, выберите Erlang.

(* ссылка через Wayback machine. Оригинальный файл был удален)

Берин Лорич
источник
Это будет нечто похожее на социальную сеть. На данный момент есть 90% -ная вероятность того, что это будет сделано в Haskell.
Захари К
12
Эрланг - это функциональный язык, а не процедурный язык. Он имеет отличную поддержку сопоставления с образцом и уникальное сопоставление с образцом на бит, что очень полезно при работе с сетевыми службами.
Йонас
@ Берин, как всегда, проблема с внешними ссылками, теперь она мертва.
thecoshman
@thecoshman, Мои извинения ... Через 3 года я даже не могу вспомнить содержание того, что раньше было на странице.
Берин Лорич
Никаких забот: D¬_¬ просто никогда не позволю этому случиться снова. (пока люди не
сходили с ума
11

Между двумя из упомянутых вами, безусловно, Хаскель академичен, а Эрланг используется в реальных проектах с высокой масштабируемостью. Так что из двух для веб-сервисов я бы выбрал Erlang.

Но я бы сказал, что у вас есть третий выбор: Scala , язык, который находится под сильным влиянием Хаскелла и Эрланга. Он используется для создания первоклассных веб-сервисов, таких как Twitter или Foursquare. Существует даже Lift , веб-фреймворк, вдохновленный Rails и Django, хотя и с немного другим, более функциональным подходом. Foursquare использует Lift.

Vartec
источник
2
Согласитесь с вашим ответом, кроме самого последнего предложения. Лифт сильно отличается от Rails. Рельсы модульные, Лифт монолитный. Rails - это фреймворк MVC, а Lift - нет. Rails является объектно-ориентированным, Lift более функциональным.
dbyrne
@dbyrne: хорошо, отредактировано
vartec
3
Проблема со Scala для веб-сервисов заключается в том, что самые популярные серверы приложений Java очень плохо масштабируются по сравнению с серверами, написанными на Erlang и Haskell.
Йонас
1
@Jonas: есть, например vert.x vertx.io
Vartec
Lift больше не является де-факто основой для Scala. Теперь это Play , который полностью MVC и не имеет состояния. Я согласен с ответом. Scala - лучший выбор для реального мира. Проще получить разработчиков Scala, чем Эрланга и Хаскелла.
Jus12
7

Обычно я говорю: «Изучай вещи настолько далеко, насколько это возможно от твоей зоны комфорта, это сделает тебя лучшим программистом, даже если ты никогда не будешь использовать это на практике».

В этом случае это может означать Haskell; но Эрланг не только становится почти социально приемлемым; но основные моменты (легкие процессы, передача сообщений, огромная масштабируемость) появляются на многих других «практических» платформах, поэтому извлеченные уроки имеют широкое и непосредственное применение для более «реальной» работы.

Мой совет: если это для удовольствия, сделайте Haskell. если это для обучения, иди Erlang.

Хавьер
источник
его для проекта типа работы. Я думаю, что это, вероятно, будет Эрланг, но я могу сделать Haskell.
Захари К