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