Haskell vs Erlang для веб-сервісів


30

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

Мені подобається система сильного типу і чистота Haskell. У мене є відчуття, що це спростить написання дійсно надійного коду. І я думаю, що сила Хаскелла полегшить щось із того, що я хочу зробити.

З боку мінусу я відчуваю, що деякі рамки для веб-речей на Haskell, такі як Yesod, не такі просунуті, як їх лічильники Erlang.

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

Що призводить до мого запитання, який досвід людей був у впровадженні програм веб-додатків як у Haskell, так і в Erlang. Чи є пакети для Haskell, щоб надати кілька легких ниток та акторів, які є в Erlang?


4
Якщо ви не вказали вимоги, це неможливо сказати. Просто киньте монету чи щось подібне.
Vitor Py

1
Я не маю доказів цього висновку, але використання Facebook від Erlang вказує на мене, що він є потужним і надійним.
Матвій

1
@Matthew: Facebook використовує Erlang для своєї системи чатів, імовірно, за його масово паралельні якості.
Роберт Харві

3
Так, використовуйте Lisssssssp .
Марк C

8
У старому журналі Commodore 64 у них була стаття про фальшиві мови. Найкращим був "Lithp", який був точно як lisp, за винятком того, що характер 's' був виключений. Це змусило всіх розробників "lithp" замінити "th" на "s". :)
Berin Loritsch

Відповіді:


17

Єдине питання, яке у мене є, чим займається ваша веб-служба? Якщо веб-сервіс справді є функціональною проблемою, то Haskell буде краще підходити.

Ерланг не обов'язково є функціональною мовою. Це процедурна мова з дуже сильною моделлю виконання для масово паралельних систем. Він був розроблений для телекомунікаційної галузі, і це, безумовно, добре підходило б для відповіді на запити веб-служб.

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

Якщо ваш веб-сервіс виконує досить велику кількість відповідності шаблонів і застосовує правила, то Haskel - це ваш вибір. Якщо ви просто хочете масштабувати інфраструктуру, яка не надто відрізняється від мов, які ви, мабуть, вже знаєте, виберіть Erlang.

(* посилання через машину Wayback. Оригінальний файл видалено)


Це буде щось, що дуже схоже на соціальну мережу. На даний момент існує 90% шансів, що це буде зроблено в haskell.
Захарій К

12
Ерланг - це функціональна мова, а не процедура. Він чудово підтримує відповідність шаблонів, і це унікальна відповідність шаблону за біт, що дуже корисно при наданні мережевих послуг.
Йонас

@Berin, як завжди, проблема із зовнішніми посиланнями, вона тепер мертва.
thecoshman

@thecoshman, Мої позиції ... Через 3 роки я навіть не можу згадати вміст того, що було на сторінці.
Berin Loritsch

Не хвилюйтеся зовсім: D ¬_¬ просто ніколи не дозволяйте це повторюватися. (перед тим, як люди
вироджуються

11

Між цими двома згаданими вами, безумовно, Haskell є академічним, тоді як Ерланг використовується в реальних проектах з високим масштабуванням. Тож із двох веб-сервісів я вибрав би Erlang.

Але я б сказав, що у вас є третій вибір: Скала , мова, на яку сильно впливають і Хаскелл, і Ерланг. Він використовується для створення найкращих веб-сервісів, таких як Twitter або Foursquare. Існує навіть Lift , веб-рамка, натхненна Rails і Django, хоча з дещо іншим, більш функціональним підходом. Foursquare використовується Lift.


2
Погодьтеся зі своєю відповіддю, за винятком самого останнього речення. Підйом дуже відрізняється від рейок. Рейки модульні, Підйом монолітний. Рейки - це рамка MVC, підйомник - ні. Рейки об'єктно орієнтовані, підйомник більш функціональний.
dbyrne

@dbyrne: добре, відредаговано
vartec

3
Проблема Scala для веб-сервісів полягає в тому, що найпопулярніші сервери додатків Java дуже масштабні порівняно з серверами, написаними в Erlang та Haskell.
Йонас

1
@Jonas: є, наприклад, vert.x vertx.io
vartec

Підйомник вже не є фактичною основою для Scala. Це зараз Play , яка повністю MVC та без громадянства. Я згоден з відповіддю. Scala - кращий вибір для реального світу. Простіше отримати розробників Scala, ніж Ерланг та Хаскелл.
липня

7

Зазвичай я кажу: "вивчіть речі якнайдалі від вашої зони комфорту, це зробить вас кращим програмістом, навіть якщо ви ніколи не використовуєте це на практиці".

У цьому випадку це, мабуть, може означати Хаскелла; але Ерланг не лише стає майже соціально прийнятним; але основні моменти (легкі процеси, передача повідомлень, величезна масштабованість) відбуваються на багатьох інших «практичних» платформах, тому отримані уроки мають велике та негайне застосування у більш «реальній» роботі.

моя порада: якщо це для задоволення, зробіть Haskell. якщо це для тренувань, їдьте Ерланг.


його для проекту типу робіт. Я думаю, що це, мабуть, буде Ерланг, але я можу зробити хескелл.
Захарій К
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.