Erlang 是用什么语言编写的?

问题描述 投票:0回答:5

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

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

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

  • VM 和硬件交互驱动程序:在 C 中。
  • 编译器(到虚拟机)和库:Erlang 中。
  • 扩展:通过用该语言编写端口或 Erlang 节点,可以在任何语言中实现。
erlang bootstrapping
5个回答
153
投票

Erlang 本身是用 Erlang 编写的。听起来很奇怪?是的,因为这只是部分正确。好的,更详细地看一下:

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

98
投票

来自 Erlang 常见问题解答

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

(或者:Erlang 是如何引导的?) 乔的话:

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

然后我用 Erlang 写了一个编译器 JAM 和模拟器看看是否 机器工作了。这两个都是 写在序言中。

同时 Mike Williams 写了一篇 JAM 的 C 模拟器。

然后我重写了erlang-to-jam Erlang 中的编译器并使用 prolog 编译器来编译它。由此产生的 目标代码在 C 模拟器中运行。 然后我们扔掉了序言。


17
投票
  • 65.9% 的 Erlang 代码是用 Erlang 编写的。
  • 13.4% 的 erlang 是用 XML 编写的。
  • 13.6% 的 erlang 是用 C 编写的。
  • 1.4% 的 erlang 是用 C++ 编写的
  • ...

您可以在 ohloh 站点中查看实时和更新的统计数据,该报告从主 erlang git 存储库生成。


0
投票

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


0
投票

我们现在可以通过《A Brief History of the BEAM Compiler》(by Björn Gustavsson)和《A History of Erlang》(by Joe Armstrong)了解 Erlang 及其工具链的历史。

© www.soinside.com 2019 - 2024. All rights reserved.