【问题标题】:What is Erlang written in?Erlang是用什么写的?
【发布时间】:2010-10-07 11:10:24
【问题描述】:

Ericsson 的 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 bootstrapping


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    来自Erlang FAQ

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

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

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

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

    与此同时,迈克·威廉姆斯写了一篇 JAM 的 C 模拟器。

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

    【讨论】:

    • 谢谢!这句话的出处是什么?
    【解决方案3】:
    • 65.9% 的 Erlang 代码是用 Erlang 编写的。
    • 13.4% 的 erlang 是用 XML 编写的。
    • 13.6% 的 erlang 是用 C 编写的。
    • 1.4% 的 erlang 是用 C++ 编写的
    • ...

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

    【讨论】:

    • 我只是好奇哪些部分是用 c++ 编写的。
    • @csyangchen none,这是行计数器文件类型检测中的误报。
    • 部分 WX 绑定是用 C++ 编写的。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2016-12-19
      • 2021-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 2013-12-06
      • 2010-09-07
      相关资源
      最近更新 更多