What is Erlang written in?

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

更新1: 感谢 Jokepu 博士。如果我理解正确的话,Erlang source-to-VM 编译器是在 Erlang 自己编写的。但虚拟机是用 C 写的。

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

  • VM 和 HW 交互驱动程序: 在 C 中。
  • Compiler (to VM) and libraries: in Erlang.
  • Extensions: Possible in any language by writing a port or an Erlang node in that language.
15726 次浏览

From the Erlang 常见问题解答:

10.6 How did the first Erlang compiler get written?

(或: Erlang 怎么样?)在 乔说过:

首先我设计了一个抽象机器 执行 Erlang。这被称为 JAM = 乔的摘要 机器。

然后我从 Erlang 写了一个编译器 JAM 和模拟器来查看 机器运转了,这两个都是 written in prolog.

与此同时,迈克 · 威廉姆斯写了一篇 C emulator for the JAM.

然后我重写了二郎到果酱 编译器,并使用 Erlang 的 prolog 编译器来编译它 对象代码在 C 模拟器中运行。 然后我们扔掉了序言。

Erlang 本身就是在 Erlang 写的。听起来很奇怪?是的,因为这只是部分正确。好的,再看看更多细节:

  1. Erlang 预处理器是在 Erlang 编写的。
  2. Erlang parser 是在 Erlang 编写的。
  3. 用于 BEAM (字节码 VM)的 Erlang 编译器是在 Erlang 编写的。
  4. Erlang 编译器到 HiPE (原生 VM 扩展)是在 Erlang 编写的。
  5. Erlang VM BEAM 和 HiPE 主要是用 C 编写的。
  6. 链接驱动程序大部分是用 C 编写的(它们被插入到 VM 中,并且为与外部世界的通信服务)
  7. 检察官办公室是在 Erlang 写的。
  8. 另一个端口或节点可以用任何语言编写。
  • 65.9% 的 Erlang 代码是在 Erlang 编写的。
  • 13.4% 的 erlang 是用 XML 编写的。
  • 13.6% 的二郎是用 C 语言写的。
  • 1.4% 的 erlang 是用 C + + 编写的
  • ...

You can see a live and update statistics in site, this report generate from main erlang git repository.

我可以说 Erlang 最初是用 C/C + + 作为 我不能说 Java 是用 Java 写的... ... 但它是框架和 一些图书馆。 关于 Erlang,因为它是首选的编程语言,适合 为了保持快捷(例如: 在聊天机器人) 我知道它的编译器或预处理器是在 Erlang 编写的。 但是语言的其他特征是用低级语言写的。