Erlang用什么写的?


111

爱立信以Erlang和Erlang / OTP编写和编译的实现是什么?是汇编语言,C还是Erlang本身?

更新1:感谢DrJokepu。如果我理解正确,那么Erlang源到VM的编译器是用Erlang本身编写的。但是VM是用C编写的。

更新2:Hynek-Pichi-Vychodil指出了很多细节。

  • VM和HW交互驱动程序:在C中。
  • 编译器(至VM)和库:在Erlang中。
  • 扩展:通过使用该语言编写端口或Erlang节点,可以使用任何语言。

17
Erlang是开源的。去检查代码,看看吧!
rfunduk

Answers:


140

Erlang本身是用Erlang编写的。听起来很奇怪?是的,因为它仅部分正确。好吧,详细了解一下:

  1. Erlang预处理器是用Erlang编写的。
  2. Erlang解析器是用Erlang编写的。
  3. Erlang到BEAM(字节码VM)的编译器是用Erlang编写的。
  4. 用Erlang编写的HiPE(本地VM扩展)的Erlang编译器。
  5. Erlang VM BEAM和HiPE主要用C编写。
  6. 链接的驱动程序主要是用C编写的。(它们已插入VM并与外界通信。)
  7. OTP用Erlang编写。
  8. 另一个端口或节点可以用任何语言编写。

91

Erlang常见问题解答中

10.6第一个Erlang编译器是如何编写的?

(或者:Erlang是如何启动的?)用乔的话说:

首先,我设计了一个抽象机器来执行Erlang。这就是所谓的JAM机器;JAM =乔的抽象机。

然后,我编写了一个从Erlang到JAM的编译器和一个仿真器,以查看计算机是否正常工作。这两个都是用序言写的。

同时,迈克·威廉姆斯(Mike Williams)为JAM编写了C模拟器。

然后,我在Erlang中重写了erlang-to-jam编译器,并使用prolog编译器对其进行了编译。生成的目标代码在C仿真器中运行。然后我们扔掉了序言。


1
谢谢!此报价的来源是什么?
Max Heiber

15
  • erlang代码的65.9%用Erlang编写。
  • erlang的13.4%用XML编写。
  • 13.6%的erlang用C语言编写。
  • 1.4%的erlang用C ++编写
  • ...

您可以在ohloh站点中看到实时更新的统计信息,此报告从主要的erlang git存储库生成。


我只是好奇哪些部分是用C ++编写的。
csyangchen

@csyangchen没有,这是在线计数器文件类型检测中的假阳性。
Hauleth

WX绑定的一部分是用C ++编写的。
罗杰·利普斯科姆

-1

我可以说Erlang最初是用C / C ++编写的,我不能说Java是用Java编写的....但是它是框架和某些库。关于Erlang,因为它是首选的编程语言,并且适合于电信系统...为了保持快速性(例如:在聊天机器人中),我知道它的编译器或PreProcessor是用Erlang编写的。但是语言的其他功能是用低级语言编写的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.