【问题标题】:An Erlang written in Ada?用 Ada 写的 Erlang?
【发布时间】:2010-11-08 10:08:28
【问题描述】:

另一个thread 有这个引用

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

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

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

只是一个假设的问题。

【问题讨论】:

  • 感谢大家的回答。我一直在修补 Erlang.. 并遇到了一个引起我兴趣的 Ada 故事。我将继续使用 Erlang,但接下来是 Ada。直到最近,我还认为 Ada 已经过时了,几乎没有什么实用性……我错了。需要探索的小部件如此之多,而时间却如此之少。

标签: erlang ada


【解决方案1】:

通常我会在这样的主题上向你扔一堆黄鼠狼的话,但事实证明这个确切的问题has been studied(它是一个 .doc 文件。抱歉)。

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

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

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

【讨论】:

  • 实际上,尽管我早期的 cmets,我真的很喜欢我在 ADA 开发的时间。我完全明白为什么报告会得出这样的结论。
  • Ada 是一个成本较低的开发生命周期,这与我的直觉相反。我认为 C 程序员的供需将使他们比相对稀有的 Ada 程序员便宜。好奇。
  • 我对两种语言都进行了相当多的开发,并且可以报告我的薪水没有太大差异。
  • 在我的职业生涯中,我已经将包含数十万行,不,数百万行 Ada 和 C 的混合 Ada/C 应用程序从一个平台移植到另一个平台——以适应一个或多个硬件、操作系统或编译器。在每种情况下,移植 C 代码都花费了更多的精力。有趣的是,我会说 80% 以上,尽管 C 语言只占系统的 SLOC 的一小部分。其核心原因是必须重新适应所有特定于系统的特质。当限制为“可移植汇编语言”时,C 具有很好的可移植性,但它很少局限于该领域。
  • 确实如此,有关此内容的更多链接,请参阅:stackoverflow.com/questions/984866/why-use-c/988366#988366
【解决方案2】:

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

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

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

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

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

【讨论】:

  • 一般来说,编译器对程序的了解越多,就越容易优化代码。在这方面,Ada 击败了 C。但是,任何编译器的实际优化程度更多地取决于编写者希望对其进行优化的程度,因此您在实践中不太可能看到很多差异。
  • “更好的是什么?”好点子。谢谢。 ..我认为在速度、可靠性、可移植性方面.. C 或 Ada 编写的 Erlang 可能并驾齐驱。 T.E.D. (下)引用了一个文档,暗示 Ada 可能是一个更好的商业决策。
  • 其影响超出了成本。对于任何产品,都存在三个变量:成本、质量和时间。如果你保持其中两个不变,你决定第三个是什么。因此,当他们说“成本一半”时,隐含着“相同的质量和时间”。如果您宁愿以任何一种方式花费相同的费用,那么您可以获得更好的质量或更快地完成相同的质量。
【解决方案3】:

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

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

【讨论】:

  • 我不确定你在这里问什么。大多数编译语言,包括我所知道的所有 Ada 编译器,都是自托管的(自己编写的)。
  • 我的观点是,最终会有一些衍生语言,而不是您用来编写当前编译器的语言,并且您正在使用其他人开发的工具所固有的所有不安全感。 ..所以我不确定您的意思是什么...您可以追溯到足够远的地方,并且每个ADA编译器的根源都在任何方面都几乎不安全...而且较旧的编译器也将包括错误...
猜你喜欢
  • 1970-01-01
  • 2016-09-02
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-01
  • 2011-03-07
  • 2012-12-04
相关资源
最近更新 更多