Erlang 是用什么写的?

发布于 2024-07-13 10:48:12 字数 318 浏览 7 评论 0原文

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

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

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

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

What is Ericsson's implementation of Erlang and Erlang/OTP written and compiled in? Is is assembly, C or Erlang itself?

Update 1: Thanks to DrJokepu. If I understand correctly, Erlang source-to-VM compiler is written in Erlang itself. But the VM is written in C.

Update 2: Hynek-Pichi-Vychodil pointed out a lot of details.

  • VM and HW interacting drivers: in C.
  • Compiler (to VM) and libraries: in Erlang.
  • Extensions: Possible in any language by writing a port or an Erlang node in that language.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

青春有你 2024-07-20 10:48:12

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

  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. 其他端口或节点可以用任何语言编写。

Erlang itself is written in Erlang. Sounds strange? Yes, because it is only partially true. OK look at it in more detail:

  1. Erlang preprocessor is written in Erlang.
  2. Erlang parser is written in Erlang.
  3. Erlang compiler to BEAM (byte-code VM) is written in Erlang.
  4. Erlang compiler to HiPE (native VM extension) is written in Erlang.
  5. Erlang VM BEAM and HiPE is written mostly in C.
  6. Linked-in drivers are written mostly in C. (They are plugged to VM and serves communication with outside world.)
  7. OTP is written in Erlang.
  8. Another ports or nodes can be written in any language.
一个人的夜不怕黑 2024-07-20 10:48:12

来自 Erlang 常见问题解答

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

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

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

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

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

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

From the Erlang FAQ:

10.6 How did the first Erlang compiler get written?

(or: how was Erlang bootstrapped?) In
Joe's words:

First I designed an abstract machine
to execute Erlang. This was called the
JAM machine; JAM = Joe's Abstract
Machine.

Then I wrote a compiler from Erlang to
JAM and an emulator to see if the
machine worked. Both these were
written in prolog.

At the same time Mike Williams wrote a
C emulator for the JAM.

Then I rewrote the erlang-to-jam
compiler in Erlang and used the prolog
compiler to compile it. The resultant
object code was run in the C emulator.
Then we threw away prolog.

烟火散人牵绊 2024-07-20 10:48:12
  • 65.9% 的 Erlang 代码是用 Erlang 编写的。
  • 13.4% 的 erlang 是用 XML 编写的。
  • 13.6% 的 erlang 是用 C 编写的。
  • 1.4% 的 erlang 是用 C++ 编写的
  • ...

您可以在 ohloh 站点,此报告从主 erlang git 存储库生成。

  • 65.9% of erlang code is written in Erlang.
  • 13.4% of erlang is written in XML.
  • 13.6% of erlang is written in C.
  • 1.4% of erlang is written in C++
  • ...

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

你丑哭了我 2024-07-20 10:48:12

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

I can say that Erlang was initially written in C/C++ as
I can't say that Java is written in java.... but It's framework and
Some libraries.
About Erlang, As Its is preferred programming language and suitable
for Telecom system... in order to maintain swiftness (e.g: in chat-bots)
I know that its compiler or PreProcessor is written in Erlang.
But Other features of language are written in Low Level languages.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文