2009-08-21 3 views
17

Hallo Ich möchte eine FP-Sprache aufheben (es ist immer ein Schmerz, wenn Sie in einer Position arbeiten, die Sie nicht viel lernen müssen), und nachdem ich einige Nachforschungen gemacht habe Filz Erlang und OCaml sind die beiden, denen ich aus folgenden Gründen gerne die Füße nass machen möchte:Erlang vs OCaml (beste Nische, um zu passen)

1) Ich arbeite hauptsächlich am Hochverfügbarkeits-Webserver-Backend-System in C++. Ich habe gehört, dass Erlang eine großartige Lösung für Skalierbarkeit und Fehlertoleranz ist. Obwohl ich nicht glaube, dass meine derzeitige Firma ein Projekt in Erlang haben wird, denke ich, dass Erlang eine gute Sprache für meine langfristige Karriereentwicklung sein könnte.

2) Ich habe einen Kollegen, der wirklich gut in OCaml ist, ich meine, er ist wirklich gut darin (aber er arbeitet nicht daran für seine tägliche Arbeit. Er unterhält mehrere Bibliotheken). Ich dachte mir, dass er eine gute Ressource sein könnte, wenn ich OCaml lerne.

Meine Interessen sind hauptsächlich auf verteilte Systeme (meine aktuelle Arbeit ist einige Middleware Entwicklungsarbeit) und High-Performance-Computing (rate mal, ich hatte ein paar Jahre Graduiertenschule Forschung, insbesondere PDE in Finanzanwendungen - also habe ich immer das Gefühl gehabt, dass ich vielleicht irgendwann später wieder eine Finanzmodellierung machen könnte.)

Irgendwelche Vorschläge? Bitte schlagen nicht „lernen beide“, da ich nicht so schlau :-) bin

Dank

+0

Ich bin ein Erlang Programmierer und ich denke es ist "einfach" in Erlang "echte" Systeme zu bauen. Systeme mit guter Zuverlässigkeit, Stabilität, Latenz usw. Systeme, die mit vielen Clients/Kunden umgehen können und trotzdem eine ande einfache Architektur haben (ich würde nichts über OCaml wissen, also poste ich das nur als Kommentar). –

Antwort

6

Ocaml ist eine großartige Sprache - einer meiner Favoriten - aber wenn Ihr Interesse Systeme als ich verteilt Ich würde empfehlen, mit Erlang zu gehen, was den anderen FP-Sprachen im Hinblick auf verteilte Systeme einen großen Schritt voraus ist (obwohl es einen Ocaml-Ableger namens Jocaml gibt, der einige interessante Aspekte hat).

Ocaml ist schwächer, selbst wenn man nur die Parallelität betrachtet, da die Architektur zugrunde liegt. Sowohl Haskell als auch Clojure haben hier bessere Geschichten, imho. (Das heißt: Sobald Sie eine FP-Sprache haben, können Sie die Grundprinzipien relativ leicht in andere Sprachen übertragen, und sie könnten in der Zukunft nützlich sein. Sowohl Scala als auch Clojure könnten sich leicht in Organisationen hineinschleichen die JVM.)

2

Ich würde auch betrachten, um F # (vor allem wenn VS 2010 ist out). Das Erlernen einer neuen Sprache ist viel einfacher und bequemer mit einer netten IDE. F # und OCaml sind sehr ähnlich wie Sie in anderen SO Fäden sehen können (zB here)

3

Wenn Sie einen Mitarbeiter, der „wirklich gut“ ist mit OCaml dann klingt es wie Sie eine große Ressource unter der Annahme, dass s/Er ist bereit, Ihre Fragen zu beantworten. Es ist immer einfacher zu lernen, wenn jemand kenntnisreich ist und man Fragen stellen kann, wenn man nicht weiterkommt.

Ja ist es wahr, dass OCaml nicht die beste Geschichte hat, wenn es um Parallelität geht, aber es gibt Möglichkeiten, Parallelität in OCaml zu bekommen (Fork-basierte scheint am häufigsten zu sein - checkout prelude.ml, die Dinge wie enthält parallele Karte: http://github.com/kig/preludeml/tree/master). Außerdem scheint es, dass Erlangs Actor-basierte Parallelität in anderen Sprachen relativ einfach zu duplizieren ist. Vielleicht könnten Sie und Ihr Mitarbeiter an einem Projekt zur Entwicklung einer actorbasierten Concurrency-Bibliothek für OCaml arbeiten? Das würde dir ein nettes Lernprojekt geben, das dein Kollege wahrscheinlich interessant genug finden würde, um mit dir zu arbeiten ... außerdem könntest du am Ende etwas Nützliches für die gesamte OCaml-Community erstellen.

5

Ich denke, Ocaml ist ein guter Einstieg in FP, und Erlang ist nicht sehr schwierig, sobald Sie die grundlegenden FP-Konzepte haben.

Aber der Vorschlag von "aneccodeal" ist fantastisch - d.Wenn Sie an Ocaml interessiert sind und einen Freund haben, der bereits stark darin ist, entwickeln Sie auf jeden Fall eine Parallelbibliothek (vielleicht MPI) dafür.

Beachten Sie jedoch, dass eines der Hindernisse, Ocaml gleichzeitig zu machen, das Fehlen einer gleichzeitigen Speicherbereinigung ist (oder so, wie ich es gelesen habe).