Frage

Gibt es eine funktionale Sprache, die gute Unterstützung und Werkzeuge für die Erstellung von Web-Service hat? Ich habe bei Scala suchen (die der JVM kompiliert und die Java-Bibliotheken verwenden können) und F # (die .NET ist), aber diese sind jung und einige Ineffizienzen haben. Scala insbesondere unterstützt Tail-Call-Eliminierung, außer in Selbst rekursiven Funktionen, die die Art der Zusammensetzung nicht begrenzt Sie (dies ist eine grundlegende Einschränkung der JVM) tun können. F # ist sehr neu und scheint noch nicht vollständig unterstützt werden, die es riskanter als eine konventionellere Sprache macht.

Ist es möglich, einen Web-Service mit Haskell, ML, oder eine der anderen traditionellen funktionalen Sprachen zu bauen, oder wäre es besser, mit Scala oder F # gehen? Alle anderen Vorschläge?

War es hilfreich?

Lösung

Wenn .NET eine Option für die Plattform ist nicht Rabatt Fis wegen seiner Jugend. Da es ein offizielles Produkt zu immer näher kommen, ist es besser, und eine bessere Integration mit Visual Studio bekommen und erbt alle Güte von .NET geboten.

Es ist auch aktiv und zugänglich Unterstützung von Microsoft und einer begeisterten Community.

Andere Tipps

Ocaml hat ocsigen / Eliom ... Ich kann nicht sagen, dass ich es, wenn auch benutzt habe. Es ist auch darin frühe Phasen ist.

Erlang, mit Yaws . Es ist ein Spaß, mächtige Sprache, skaliert erstaunlich gut, und 100 oder 1000 Prozesse sicher und einfach macht mit. Und Spaß.

(Ich denke auch, es ist ziemlich.)

Haskell:

Werfen Sie einen Blick auf diese Frage: Was ist der einfachste Weg ist Web-Anwendungen in Haskell?

schreiben

Im Grunde WASH , Happs und Janus sind die drei großen in Haskell im Moment. Meine Stimme ist für Happs, die hat die beste Tutorial im Moment.

Es gibt auch HSP aber ich habe nicht es sah oder vor kurzem darüber nachgedacht.

Bitte lesen Sie diese Einführung auf F # und ASP.NET , die geben Sie ist ein guter Anfang.

Es gibt mehrere Beispiele auf dem Netz, in dem F # in Web-Anwendungen verwendet wird. Einer von ihnen ist zum Beispiel der Autocompleter von Tomas Petricek, die er als illustrative Anwendung seinen Artikel gebaut „F # Web tools: Ajax-Anwendungen einfach gemacht“ . Ich habe verwendet F # als Teil eines Webservice mich zu und ich garantiere Ihnen, dass es gut funktioniert.)

Wenn Sie dies für Spaß tun, und nicht für Robustheit oder am Arbeitsplatz, können Sie ARC untersuchen. Es ist eine unvollendete, in-progress Sprache, mit den Vor- und Nachteilen, die sich bringt.

Disclaimer: nicht mit dem Unternehmen assoziiert ARC oder Paul Graham

Reddit wurde auf Lisp gebaut wurde, nicht wahr? Und Paul Graham spricht sehr hoch seiner Agilität, vor allem mit Webapps.

Sie könnten Clojure betrachten - es ist eine sehr neue Sprache, aber sieht sehr vielversprechend für skalierbare parallele Anwendungen und hat den Vorteil, sehr gute JVM Integration und Zugriff auf alle Java-Bibliotheken (wie Scala)

.

Clojure hat auch eine ganze Reihe von Design-Merkmale, die um die Endrekursion Ausgabe erhalten (spezielle recur Konstrukts sind viele Kernfunktionen implementiert iterativ etc.)

Auch wenn ich es nicht empfehlen kann, weil ich noch mit ihm spielen werde, Erlang ist sehr mächtig.

Ich muss mit der Empfehlung für Clojure übereinstimmen. Ich habe gerade einen Lasttest eines News-Feed-Service in Clojure geschrieben, die 80 erlitten Outbound-Aktivitäten Beiträge pro Sekunde pro Clojure Webserver auf einer m1.medium EC2-Instanz ausgeführt wird.

Die vorherige Generation von funktionalen Sprachen haben Tools wie ocsigen (für OCaml) und Happs (für Haskell), aber sie haben praktisch keine Benutzer: sie sind völlig ungetestet Software

.

Im Gegensatz dazu Scala und F # baut auf sehr gut getesteten Code von Java und .NET. Insbesondere hat F # sehr stark von Microsoft im vergangenen Jahr entwickelt worden, weil es productized wird. Keine andere funktionale Sprache hat jemals das Niveau der Unterstützung erhalten und folglich F # schon sehr brauchbar ist (und weit vor Sprachen wie Haskell in Bezug auf den Entwicklungs-Tool).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top