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?
quelle
Antworten:
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)
quelle
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.
quelle
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.
quelle