我甚至不是erlang的新手,我只是使用用Erlang编写的RabbitMQ。运行configure / make / make install后,构建输出目录包含大量的.c和.erl文件。这有必要吗?背后的原因是什么? 一些例子:
答案 0 :(得分:2)
是的,这是必要的。 Erlang的运行时系统是用C语言编写的,大多数标准库都是用Erlang编写的。
背后的原因是什么?
替代方案是什么?为了执行任何Erlang代码,您需要启动运行时系统,因此无法在Erlang中编写。它可以写成:
装配
C
C ++或其他一些语言
Erlang可以在没有运行时的情况下执行
汇编显然是一个糟糕的选择:对于任何新的CPU目标,你必须几乎完全重写它,并且维护起来会更加困难。
C提供了出色的性能和可移植性,无论如何都需要从Erlang调用C代码的能力。这不仅是Erlang的选择,也是Python,Ruby,Perl等的选择。
C ++使可移植性变得复杂(一些操作系统可以使用C编译器,但不能使用C ++编译器; C ++编译器的质量变化更大);其他语言更是如此(连同性能,可能需要自己的运行时等)。
最终的选择会让Erlang成为一种完全不同的语言。