Эрланг на JVM / CLR - PullRequest
       13

Эрланг на JVM / CLR

11 голосов
/ 21 апреля 2009

Я только начал читать книгу Джо Армстронга об Эрланге и слушал его превосходную речь по радиоинженерии программного обеспечения.

Это интересный язык / система и тот, чье время, похоже, пришло с появлением многоядерных машин.

Мой вопрос: что нужно, чтобы остановить его перенос на JVM или CLR? Я понимаю, что обе виртуальные машины не настроены для запуска легких процессов, к которым призывает Эрланг, - но разве они не могли быть смоделированы потоками? Можем ли мы увидеть облегченную или урезанную версию Erlang на не Erlang VM?

Ответы [ 9 ]

23 голосов
/ 21 апреля 2009

Вы не можете использовать библиотеки JVM / CLR, учитывая их зависимость от изменяемых объектов.

Обработка исключений Erlang сильно отличается от исключений JVM и CLR, вам придется как-то это обрабатывать.

Реализация процессов в виде потоков означала бы, что любая значительная система Erlang исчерпывает память довольно быстро (размер процесса на моем компьютере при создании: 1268 байт, размер стека потока в CLR: 1 МБ), а связь между процессами намного медленнее, чем в Erlang.

То, что вы, вероятно, хотите, это реализация Actor Model в JVM или CLR.

Скала и Clojure уже упоминались. Кроме того, существует множество реализаций Actor для JVM: Килим , Функциональный Java , Jetlang , Гильдия актеров , ActorFoundry и хотя бы один для CLR: Retlang , который можно использовать на любом языке JVM / CLR.

9 голосов
/ 24 мая 2010

По образовательным причинам мы внедряем подмножество ErlangVM для CLR. Мы были очень вдохновлены Kresten Krab Thorup и его проектом Erjang, базирующейся на JVM Erlang VM. Erjang использует kilim framework для представления легких процессов, и он начинает привлекать внимание.

Javalimit - блог автора Erjang.

Репозиторий Erjang

7 голосов
/ 21 апреля 2009

Это хорошая дискуссия. Некоторый контекст может быть полезен.

Из списка рассылки Erlang в ноябре прошлого года:

Мой вклад в дебаты об Эрланге на JVM? Нет, не очень хорошая идея: (

4 голосов
/ 21 апреля 2009

вообще ничего. Вы можете взглянуть на Clojure , интересный функциональный язык, построенный на JVM.

3 голосов
/ 15 мая 2009

Axum - проект инкубации на CLR - был явно вдохновлен Erlang.

2 голосов
/ 11 сентября 2014

Erjang - это виртуальная машина для Erlang, работающая на Java ™.

2 голосов
/ 24 апреля 2009

Просто для полноты информации источник о теме.

2 голосов
/ 21 апреля 2009

Я не знаю каких-либо технических проблем, которые могли бы привести к этому.

На самом деле Scala (функциональный язык JVM) использует так называемую модель актера , которая очень похожа и, как я понимаю, в значительной степени заимствует из модели общего доступа Erlang Ничего параллелизма. Потоки не могут имитировать процессы Эрланга. Они слишком тяжелые.

1 голос
/ 21 апреля 2009

возможно? Да. Практическая? Ну, вероятно, нет; они решают разные проблемы совершенно по-разному, и, следовательно, имеют много существенных различий в том, как они работают. Это усложнит портирование, и производительность, скорее всего, сильно пострадает. Это не значит, что это невозможно, просто есть лучшие способы добиться того, что такой порт принесет на стол.

...