爱立信编写和编译的Erlang和Erlang / OTP的实现是什么?是汇编,C还是Erlang本身?
更新1:感谢DrJokepu . 如果我理解正确,Erlang source-to-VM编译器是用Erlang本身编写的 . 但VM是用C语言编写的 .
更新2:Hynek-Pichi-Vychodil指出了很多细节 .
VM和HW交互驱动程序:在C.
编译器(到VM)和库:在Erlang中 .
扩展:通过使用该语言编写端口或Erlang节点,可以使用任何语言 .
Erlang本身是用Erlang编写的 . 听起来很奇怪?是的,因为它只是部分正确 . 好的,看看它更详细:
Erlang预处理器是用Erlang编写的 .
Erlang解析器是用Erlang编写的 .
Erlang编译器到BEAM(字节码VM)是用Erlang编写的 .
Erlang编译器到HiPE(本机VM扩展)是用Erlang编写的 .
Erlang VM BEAM和HiPE主要用C语言编写 .
链接的驱动程序主要用C语言编写 . (它们插入VM并与外界通信 . )
OTP是用Erlang编写的 .
可以用任何语言编写其他端口或节点 .
来自Erlang FAQ:
10.7第一个Erlang编译器是如何编写的? (或者:Erlang是如何引导的?)用Joe的话来说:首先我设计了一个抽象机器来执行Erlang . 这被称为JAM机器; JAM = Joe的抽象机器 . 然后我从Erlang写了一个编译器到JAM和一个模拟器,看看机器是否工作 . 这两个都是用prolog写的 . 与此同时,Mike Williams为JAM编写了一个C模拟器 . 然后我在Erlang中重写了erlang-to-jam编译器,并使用prolog编译器进行编译 . 生成的对象代码在C仿真器中运行 . 然后我们扔掉了prolog .
65.9%的erlang代码是用Erlang编写的 .
13.4%的erlang是用XML编写的 .
13.6%的erlang是用C语言编写的 .
1.4%的erlang是用C语言编写的
......
您可以在ohloh站点中查看实时和更新统计信息,此报告从主erlang git存储库生成 .
3 回答
Erlang本身是用Erlang编写的 . 听起来很奇怪?是的,因为它只是部分正确 . 好的,看看它更详细:
Erlang预处理器是用Erlang编写的 .
Erlang解析器是用Erlang编写的 .
Erlang编译器到BEAM(字节码VM)是用Erlang编写的 .
Erlang编译器到HiPE(本机VM扩展)是用Erlang编写的 .
Erlang VM BEAM和HiPE主要用C语言编写 .
链接的驱动程序主要用C语言编写 . (它们插入VM并与外界通信 . )
OTP是用Erlang编写的 .
可以用任何语言编写其他端口或节点 .
来自Erlang FAQ:
65.9%的erlang代码是用Erlang编写的 .
13.4%的erlang是用XML编写的 .
13.6%的erlang是用C语言编写的 .
1.4%的erlang是用C语言编写的
......
您可以在ohloh站点中查看实时和更新统计信息,此报告从主erlang git存储库生成 .