JVM/CLR上的Erlang

JVM/CLR上的Erlang,erlang,clr,jvm,Erlang,Clr,Jvm,我刚刚开始阅读乔·阿姆斯特朗(Joe Armstrong)关于Erlang的书,听了他在软件工程电台上的精彩演讲 它是一种有趣的语言/系统,随着多核机器的出现,它的时代似乎已经到来 我的问题是:有什么可以阻止它被移植到JVM或CLR?我意识到这两个虚拟机都没有设置为运行Erlang所要求的轻量级进程,但是线程不能模拟这些进程吗?我们能在非Erlang虚拟机上看到Erlang的轻量级或精简版吗?实际上什么都没有。您可以看看,这是一种构建在JVM上的有趣的函数式语言。我不知道它有任何技术问题 实际上

我刚刚开始阅读乔·阿姆斯特朗(Joe Armstrong)关于Erlang的书,听了他在软件工程电台上的精彩演讲

它是一种有趣的语言/系统,随着多核机器的出现,它的时代似乎已经到来


我的问题是:有什么可以阻止它被移植到JVM或CLR?我意识到这两个虚拟机都没有设置为运行Erlang所要求的轻量级进程,但是线程不能模拟这些进程吗?我们能在非Erlang虚拟机上看到Erlang的轻量级或精简版吗?

实际上什么都没有。您可以看看,这是一种构建在JVM上的有趣的函数式语言。

我不知道它有任何技术问题

实际上,Scala(一种JVM函数式语言)使用了所谓的参与者模型,它非常类似于无共享并发的Erlang模型,据我所知,它大量借鉴了该模型。
线程无法模拟Erlang进程。它们太重了

您不能使用JVM/CLR库,因为它们依赖于可变对象

Erlang异常处理与JVM和CLR异常有很大不同,您需要以某种方式处理它

将进程实现为线程意味着任何规模较大的Erlang系统都会非常快地耗尽内存(创建时我的机器上的进程大小:1268字节,线程堆栈大小(CLR):1 MB),并且进程之间的通信比Erlang慢得多

您可能需要的是JVM或CLR上的Actor模型实现

Scala和Clojure已经提到了。此外,JVM有许多参与者实现:
、和至少一个用于CLR:,可从任何JVM/CLR语言使用。

这是一个很好的讨论。一些上下文可能有用

从去年11月的Erlang邮件列表中:

  • 继续

  • 而且有点精神失常

  • 最后是乔的


我在JVM上关于Erlang的辩论中的贡献不,不是个好主意:(

可能吗?是的。实用吗?嗯,可能不是;它们以非常不同的方式解决不同的问题,因此在处理问题的方式上有很多重大差异。这会使移植变得困难,性能可能会受到严重影响。这并不意味着不能做到这一点,只是有更好的方法来完成所需的工作ch a port将带到桌面上。

只是为了完整性,关于这个主题的补充。

这是一个关于CLR的孵化项目,显然是受Erlang的启发。

出于教育原因,我们正在为CLR实现ErlangVM的子集。我们受到Kresten Krab Thorup和他的项目Erjang的高度启发,Erjang是一个基于JVM的Erlang VM.Erjang使用kilim框架表示轻量级流程,它开始引起注意

-Erjang的作者博客


是运行在Java上的Erlang虚拟机™.

我也一直在看Scala。我也订购了即将出版的Clojure书。Clojure看起来确实很有趣..!谢谢你的链接。背景是我很感兴趣!你误解了我,我理解人们为什么感兴趣,我只是想让你/Stackoverflow从更大的讨论中受益…是的。我看到了一些本周Axum上的东西,立刻想到了Erlang!