为什么erlang构建包含.c和.erl源代码?

时间:2012-01-05 19:17:18

标签: erlang

我甚至不是erlang的新手,我只是使用用Erlang编写的RabbitMQ。运行configure / make / make install后,构建输出目录包含大量的.c和.erl文件。这有必要吗?背后的原因是什么? 一些例子:

  • ./ LIB /二郎/ LIB / erl_interface-3.7.6 / SRC /杂项/ show_msg.c
  • ./ LIB /二郎/ LIB / cosNotification-1.1.18 / SRC / oe_CosNotification.erl

1 个答案:

答案 0 :(得分:2)

是的,这是必要的。 Erlang的运行时系统是用C语言编写的,大多数标准库都是用Erlang编写的。

  

背后的原因是什么?

替代方案是什么?为了执行任何Erlang代码,您需要启动运行时系统,因此无法在Erlang中编写。它可以写成:

  1. 装配

  2. C

  3. C ++或其他一些语言

  4. Erlang可以在没有运行时的情况下执行

  5. 汇编显然是一个糟糕的选择:对于任何新的CPU目标,你必须几乎完全重写它,并且维护起来会更加困难。

    C提供了出色的性能和可移植性,无论如何都需要从Erlang调用C代码的能力。这不仅是Erlang的选择,也是Python,Ruby,Perl等的选择。

    C ++使可移植性变得复杂(一些操作系统可以使用C编译器,但不能使用C ++编译器; C ++编译器的质量变化更大);其他语言更是如此(连同性能,可能需要自己的运行时等)。

    最终的选择会让Erlang成为一种完全不同的语言。