2009-04-20 9 views
11

Ich habe gerade angefangen, Joe Armstrongs Buch über Erlang zu lesen und hörte mir seinen exzellenten Vortrag über Software Engineering Radio an.Erlang über eine JVM/CLR

Es ist eine interessante Sprache/System und eine, deren Zeit mit dem Aufkommen von Multi-Core-Maschinen zu kommen scheint.

Meine Frage ist: Was ist zu verhindern, dass es auf die JVM oder CLR portiert wird? Ich stelle fest, dass beide virtuellen Maschinen nicht eingerichtet sind, um die leichten Prozesse auszuführen, die Erlang verlangt - aber konnten diese nicht durch Threads simuliert werden? Könnten wir eine Lightlight- oder Cutdown-Version von Erlang auf einer Nicht-Erlang-VM sehen?

Antwort

2

Erjang ist eine virtuelle Maschine für Erlang, die auf Java ™ läuft.

4

Eigentlich gar nichts. Vielleicht sehen Sie sich Clojure an, eine interessante funktionale Sprache, die auf der JVM basiert.

+0

Ich habe Scala auch angeschaut. Habe auch das kommende Clojure-Buch bestellt. Clojure sieht interessant aus ..! – Fortyrunner

2

Ich kenne kein technisches Problem inhitting.

Eigentlich Scala (eine JVM funktionale Sprache) verwendet, was einen Schauspieler Modell genannt wird, die sehr ähnlich ist, und wie ich es verstehe stark aus, das Erlang-Modell der Parallelität Shared-Nothing leiht. Threads konnten Erlang-Prozesse nicht simulieren. Sie sind viel zu schwer.

23

Sie konnten JVM/CLR-Bibliotheken nicht verwenden, da sie auf veränderbare Objekte angewiesen sind.

Die Erlang-Ausnahmebehandlung unterscheidet sich ziemlich von JVM- und CLR-Ausnahmen, Sie müssten das irgendwie handhaben.

Implementieren Prozesse als Threads würde bedeuten, dass jede beträchtliche Erlang-System nicht genügend Arbeitsspeicher (Prozessgröße auf meiner Maschine bei der Erstellung: 1268 Bytes, Thread-Stack-Größe in CLR: 1 MB) nicht viel Speicher und Kommunikation zwischen Prozessen ist viel langsamer als in Erlang.

Was Sie wahrscheinlich wollen, ist eine Actor Model Implementierung auf JVM oder CLR.

Scala und Clojure wurden bereits erwähnt. Darüber hinaus gibt es viele Schauspieler Implementierungen für JVM: Kilim, Functional Java, Jetlang, Actors Guild, ActorFoundry, und mindestens einen für CLR: Retlang, die von jeder JVM/CLR Sprache verwendet werden kann.

+0

Interessant - danke für die Links – Fortyrunner

7

Dies ist eine gute trod-Diskussion. Ein bestimmter Kontext könnte nützlich sein.

aus der Mailingliste Erlang im November letzten Jahres:

Mein Beitrag zur Debatte über Erlang auf der JVM?Nein, keine gute Idee :(

+0

Danke für die Links. Der Kontext ist, dass ich einfach nur interessiert bin! – Fortyrunner

+1

Sie missverstehen mich, ich verstehe, warum Leute interessiert sind, ich wollte Ihnen/Stackoverflow nur den Vorteil der größeren Diskussion geben ... –

1

Mögliche Ja Praktische Nun, wahrscheinlich nicht,?.? Sie auf sehr unterschiedliche Weise verschiedene Probleme zu lösen, und so haben viele große Unterschiede in der Art, wie sie Dinge tun. Dies würde die Portierung schwer machen, und die Leistung würde wahrscheinlich stark leiden.Das bedeutet nicht, dass es nicht getan werden kann, nur dass es bessere Wege gibt, um zu erreichen, was ein solcher Port zu der Tabelle bringen würde.

2

Nur der Vollständigkeit halber zusätzliche source zum Thema

3

Axum - ein Inkubationsprojekt auf der CLR - war eindeutig von Erlang inspiriert.

+0

Ja. Ich habe diese Woche einige Sachen auf Axum gesehen und sofort an Erlang gedacht! – Fortyrunner

9

Aus pädagogischen Gründen implementieren wir eine Teilmenge von ErlangVM für CLR. Inspiriert haben uns Kresten Krab Thorup und sein Projekt Erjang, eine Erlang VM auf JVM-Basis. Erjang verwendet kilim framework, um leichte Prozesse darzustellen, und es fängt an, Aufmerksamkeit zu erregen.

Javalimit - Erjangs Autorenblog.

Erjang repository