Haskell vs Erlang für Webdienste

30

Ich versuche, ein experimentelles Projekt mit einer funktionalen Sprache zu starten und mich zwischen Erlang und Haskell zu entscheiden, und beide haben einige Punkte, die ich wirklich mag.

Ich mag Haskells starkes Typensystem und Reinheit. Ich habe das Gefühl, es wird einfacher, wirklich zuverlässigen Code zu schreiben. Und ich denke, dass die Macht von Haskell einiges von dem, was ich tun möchte, viel einfacher machen wird.

Auf der negativen Seite habe ich das Gefühl, dass einige der Frameworks für das Erstellen von Web-Inhalten auf Haskell wie Yesod nicht so weit fortgeschritten sind wie ihre Erlang-Gegenstücke.

Ich mag den Erlang-Ansatz für Threads und Fehlertoleranz. Ich habe das Gefühl, dass die Skalierbarkeit von Erlang ein großes Plus sein könnte.

Was führt zu meiner Frage, welche Erfahrungen die Leute mit der Implementierung von Webanwendungs-Backends sowohl in Haskell als auch in Erlang gemacht haben. Gibt es Pakete für Haskell, um einige der leichtgewichtigen Threads und Schauspieler bereitzustellen, die man in Erlang hat?

Zachary K
quelle
4
Wenn Sie keine Anforderungen angeben, ist dies nicht zu erkennen. Wirf einfach eine Münze oder so.
Vitor Py
1
Ich habe keinen Beweis für diese Schlussfolgerung, aber die Verwendung von Erlang durch Facebook zeigt mir, dass es sowohl leistungsstark als auch zuverlässig ist.
Matthew Read
1
@Matthew: Facebook nutzt Erlang für sein Chat-System, vermutlich für seine massiv parallelen Qualitäten.
Robert Harvey
3
Yessss, benutze Lisssssssp .
Mark C
8
In einem alten Commodore 64-Magazin hatten sie einen Artikel über gefälschte Sprachen. Das beste war "Lithp", was genau wie "lisp" war, außer dass der "s" Charakter ausgeschlossen war. Das zwang alle "Lithp" -Entwickler, das "s" durch ein "th" zu ersetzen. :)
Berin Loritsch

Antworten:

17

Die einzige Frage, die ich habe, ist, was macht Ihr Webdienst? Wenn der Webdienst wirklich ein Funktionsproblem darstellt, ist Haskell besser geeignet.

Erlang ist nicht unbedingt eine funktionale Sprache. Es ist eine prozedurale Sprache mit einem sehr starken Ausführungsmodell für massiv parallele Systeme. Es wurde für die Telekommunikationsbranche entwickelt und eignet sich auf jeden Fall hervorragend für die Beantwortung von Webservice-Anfragen.

Auf dieser Seite * finden Sie eine Übersicht über die Unterschiede zwischen prozeduraler und funktionaler Programmierung. (Entschuldigung im Voraus für das hässliche Schwarz auf Cyan Seite).

Wenn Ihr Web-Service eine angemessene Menge an Pattern-Matching ausführt und Regeln anwendet, ist Haskel Ihre Wahl. Wenn Sie nur eine skalierbare Infrastruktur wünschen, die sich nicht allzu sehr von den Sprachen unterscheidet, die Sie wahrscheinlich bereits kennen, wählen Sie Erlang.

(* Link über Wayback-Maschine. Originaldatei wurde entfernt)

Berin Loritsch
quelle
Es wird etwas sein, das einem sozialen Netzwerk sehr ähnlich sieht. Zu diesem Zeitpunkt besteht eine Wahrscheinlichkeit von 90%, dass dies in Haskell durchgeführt wird.
Zachary K
12
Erlang ist eine funktionale Sprache, keine prozedurale Sprache. Es bietet eine hervorragende Unterstützung für den Mustervergleich und einen eindeutigen Mustervergleich pro Bit, was bei der Ausführung von Netzwerkdiensten sehr hilfreich ist.
Jonas
@Berin wie immer das Problem mit externen Links, es ist jetzt tot.
Thecoshman
@thecoshman, Entschuldigung ... Nach 3 Jahren kann ich mich nicht einmal mehr an den Inhalt der Seite erinnern.
Berin Loritsch
Keine Sorge: D € _ € lass es einfach nie wieder passieren. (bevor die Leute ausflippen, mache ich Witze)
thecoshman
11

Zwischen den beiden, die Sie erwähnen, ist Haskell definitiv akademisch, während Erlang in realistischen Projekten mit hoher Skalierbarkeit verwendet wird. Von den beiden für Webdienste würde ich Erlang wählen.

Aber ich würde sagen, Sie haben die dritte Wahl: Scala , eine Sprache, die sowohl von Haskell als auch von Erlang stark beeinflusst wird. Es wird verwendet, um erstklassige Webdienste wie Twitter oder Foursquare zu erstellen. Es gibt sogar Lift , ein Web-Framework, das von Rails und Django inspiriert ist, allerdings mit einem etwas anderen, funktionaleren Ansatz. Foursquare benutzt Lift.

vartec
quelle
2
Stimmen Sie Ihrer Antwort mit Ausnahme des allerletzten Satzes zu. Lift unterscheidet sich stark von Rails. Rails ist modular aufgebaut, Lift ist monolithisch. Rails ist ein MVC-Framework, Lift nicht. Rails ist objektorientiert, Lift ist funktionaler.
Dbyrne
@dbyrne: ok, bearbeitet
vartec
3
Das Problem bei Scala für Webdienste ist, dass die gängigsten Java-Anwendungsserver im Vergleich zu Servern, die in Erlang und Haskell geschrieben wurden, sehr schlecht skaliert werden.
Jonas
1
@Jonas: Es gibt zum Beispiel vert.x vertx.io
vartec
Lift ist für Scala nicht mehr der De-facto-Rahmen. Es ist jetzt Play , das vollständig MVC und zustandslos ist. Ich stimme der Antwort zu. Scala ist eine bessere Wahl für die reale Welt. Scala-Entwickler sind einfacher zu bekommen als Erlang und Haskell.
12.
7

Normalerweise sage ich: "Lerne Dinge so weit wie möglich aus deiner Komfortzone, sie machen dich zu einem besseren Programmierer, auch wenn du sie nie in der Praxis benutzt."

In diesem Fall könnte das wahrscheinlich Haskell bedeuten; aber Erlang wird nicht nur immer fast sozial akzeptabel; Die wichtigsten Punkte (leichte Prozesse, Weitergabe von Nachrichten, enorme Skalierbarkeit) kommen jedoch auch auf vielen anderen „praktischen“ Plattformen zum Einsatz, sodass die gewonnenen Erkenntnisse unmittelbar auf „echte“ Arbeiten anwendbar sind.

Mein Rat: Wenn es Spaß macht, mach Haskell. Wenn es für das Training ist, geh Erlang.

Javier
quelle
Es ist für ein Arbeitstyp-Projekt. Ich denke, es wird wahrscheinlich Erlang sein, aber ich kann haskell tun.
Zachary K