Erlang写的是什么?

时间:2009-02-13 14:39:33

标签: erlang bootstrapping

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

更新1:感谢DrJokepu。如果我理解正确,Erlang source-to-VM编译器是用Erlang本身编写的。但VM是用C语言编写的。

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

  • VM和HW交互驱动程序:在C.
  • 编译器(到VM)和库:在Erlang中。
  • 扩展:通过使用该语言编写端口或Erlang节点,可以使用任何语言。

4 个答案:

答案 0 :(得分:132)

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

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

答案 1 :(得分:87)

来自Erlang FAQ

  

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

     

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

     

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

     

然后我从Erlang编写了一个编译器   JAM和模拟器,看看是否   机器工作。这两个都是   用prolog写的。

     

同时迈克威廉姆斯写了一篇   用于JAM的C模拟器。

     

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

答案 2 :(得分:13)

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

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

答案 3 :(得分:-2)

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