爱立信的 Erlang 和 Erlang/OTP 实现是用什么编写和编译的?是汇编、C 还是 Erlang 本身?
更新 1:感谢 DrJokepu。如果我理解正确的话,Erlang 源到虚拟机的编译器是用 Erlang 本身编写的。但VM是用C编写的。
更新2:Hynek-Pichi-Vychodil 指出了很多细节。
Erlang 本身是用 Erlang 编写的。听起来很奇怪?是的,因为这只是部分正确。好的,更详细地看一下:
来自 Erlang 常见问题解答:
10.6 第一个 Erlang 编译器是如何编写的?
(或者:Erlang 是如何引导的?) 乔的话:
首先我设计了一个抽象机 执行Erlang。这被称为 果酱机; JAM = 乔的摘要 机器。
然后我用 Erlang 写了一个编译器 JAM 和模拟器看看是否 机器工作了。这两个都是 写在序言中。
同时 Mike Williams 写了一篇 JAM 的 C 模拟器。
然后我重写了erlang-to-jam Erlang 中的编译器并使用 prolog 编译器来编译它。由此产生的 目标代码在 C 模拟器中运行。 然后我们扔掉了序言。
您可以在 ohloh 站点中查看实时和更新的统计数据,该报告从主 erlang git 存储库生成。
我可以说 Erlang 最初是用 C/C++ 编写的 我不能说 Java 是用 java 编写的......但它是框架和 一些图书馆。 关于 Erlang,因为它是首选编程语言并且适合 对于电信系统......为了保持速度(例如:在聊天机器人中) 我知道它的编译器或预处理器是用Erlang编写的。 但语言的其他功能是用低级语言编写的。