2009-04-20 7 views
11

Ho appena iniziato a leggere il libro di Joe Armstrongs su Erlang e ho ascoltato il suo eccellente discorso su Software Engineering Radio.Erlang on a JVM/CLR

È un linguaggio/sistema interessante e il cui tempo sembra essersi avvicinato all'avvento delle macchine multi-core.

La mia domanda è: cosa c'è per impedirne il porting su JVM o CLR? Mi rendo conto che entrambe le macchine virtuali non sono configurate per eseguire i processi leggeri richiesti da Erlang, ma non potrebbero essere simulati dai thread? Potremmo vedere una versione leggera o ridotta di Erlang su una VM non Erlang?

risposta

2

Erjang è una macchina virtuale per Erlang, che gira su Java ™.

4

Niente affatto, in realtà. Potresti dare un'occhiata a Clojure, che è un linguaggio funzionale interessante costruito sulla JVM.

+0

Sto guardando anche a Scala. Ho anche ordinato il prossimo libro Clojure. Clojure sembra interessante ..! – Fortyrunner

2

Non sono a conoscenza di problemi tecnici in questo.

realtà Scala (un linguaggio funzionale JVM) utilizza quello che viene chiamato un attore modello che è molto simile a, e se ho capito bene prende in prestito pesantemente da, il modello Erlang di shared nothing concorrenza. I thread non sono in grado di simulare i processi di Erlang. Sono molto troppo pesanti.

23

Non è possibile utilizzare le librerie JVM/CLR, data la loro dipendenza da oggetti mutabili.

La gestione delle eccezioni di Erlang è molto diversa dalle eccezioni JVM e CLR, è necessario gestirla in qualche modo.

Attuare processi come le discussioni significherebbe che qualsiasi sistema di Erlang di considerevoli dimensioni esaurisce la memoria piuttosto veloce (dimensioni processo sulla mia macchina sulla creazione: 1268 bytes, filo dimensione dello stack in CLR: 1 MB) e la comunicazione tra i processi è molto più lento a Erlang.

Ciò che si desidera è un'implementazione di modello di attore su JVM o CLR.

Scala e Clojure sono già stati citati. In aggiunta, ci sono molte implementazioni attore per JVM: Kilim, Functional Java, Jetlang, Actors Guild, ActorFoundry, e almeno uno per CLR: Retlang, che può essere utilizzato da qualsiasi linguaggio/CLR JVM.

+0

Interessante - grazie per i collegamenti – Fortyrunner

7

Questa è una discussione ben avviata. Alcuni contesti potrebbero essere utili.

Dalla mailing list Erlang lo scorso novembre:

Il mio contributo al dibattito su Erlang sulla JVM?No, non è una buona idea :(

+0

Grazie per i collegamenti. Il contesto è che sono semplicemente interessato! – Fortyrunner

+1

Mi fraintendi, capisco perché le persone sono interessate, volevo solo darti/Stackoverflow il beneficio della discussione più ampia ... –

1

possibile Sì Pratico Beh, probabilmente non;?.? Essi risolvere diversi problemi in modi molto diversi, e hanno quindi un sacco di grandi differenze nel loro modo di fare le cose. Ciò renderebbe il porting difficile e le prestazioni probabilmente ne risentirebbero gravemente, il che non significa che non si possa fare, solo che ci sono modi migliori per realizzare quello che porterebbe in tavola.

2

Solo per completezza addizionale source sull'argomento

3

Axum - un progetto di incubazione sul CLR - è stato chiaramente ispirato da Erlang.

+0

Sì. Ho visto alcune cose su Axum questa settimana e ho pensato subito a Erlang! – Fortyrunner

9

Per motivi didattici, stiamo implementando un sottoinsieme di ErlangVM per CLR. Siamo stati fortemente ispirati da Kresten Krab Thorup e dal suo progetto Erjang, un Erlang VM basato su JVM. Erjang utilizza il framework kilim per rappresentare i processi leggeri e inizia ad attirare l'attenzione.

Javalimit - Blog di autore di Erjang.

Erjang repository