7

另一个线程有这个引用

  1. Erlang VM BEAM 和 HiPE 主要是用 C 编写的。
  2. 链接驱动程序主要是用 C 语言编写的。(它们被插入到 VM 并服务于与外部世界的通信。)

我读过一些意见,认为 Ada 的强类型、模块化、运行时检查、并行处理等方面优于 C。

使用 Ada 编译的 Erlang 会明显优于使用 C 编译的 Erlang 吗?

只是一个假设的Q。

4

3 回答 3

11

通常我会在这样的主题上向你抛出一堆黄鼠狼的话,但事实证明这个确切的问题已经被研究过(它是一个 .doc 文件。抱歉)。

Rational 有一个编译器,其中包含大量两种语言的代码,以及多年来编译的大量关于错误率、修复时间等的数据。出于好奇,他们的一位工程师计算了这些数字。

答案是“C 的开发成本超过了 Ada”。如果您阅读了摘要标题,您会发现他们认为在 Ada 中编写相同的代码所花费的成本大约是在 C 中编写的成本的一半

我知道每个读到这篇文章的人都急于在这个结论中戳破洞。我也是。但他们在报告中我能想到的每一个角度都观察了该死的东西。

于 2009-07-06T16:25:40.000 回答
4

“更好”以什么方式?更快更好?更好地减少错误?更好,因为更便携?更好的可读性?更好的扩展性?

对于“更好”论点的任何合适定义,都可以采用任何一种方式。然而,没有任何编译语言比 C 更具可移植性,这几乎是神圣的命令。因此,如果您的目标之一是使您的应用程序具有高度可移植性,那么 C 是一个很好的选择。

比 Ada 了解 C 的人更多。如果用 Ada 编写 erlang 扩展,可能会更难编写,因为熟悉该语言的人较少。

C 代码可以是高性能的,但我知道 C 和 Ada w/r 与编译器优化之间没有比较。

Ada 的类型检查可能有用,也可能是一个真正的问题。一个假设是,VM 会对与其相关的部分进行自己的类型检查。Ada 中 RTTC 的开销可能会带来完全不必要的负担。

于 2009-07-06T15:28:19.857 回答
0

也许吧,但是您的 Ada 编译器是用什么语言编写的?艾达?编写您的第一个 Ada 编译器的编译器怎么样?

在构建软件的某些时候,形式语义和软件过程比编码的语言更重要。

于 2009-07-06T15:20:44.783 回答