为何嵌入式开发人员对Ada不感兴趣?

2009年05月06日 20:29    发布者:李宽
一次又一次的民意调查显示,即使四分之一个世纪过去了,在嵌入式领域,Ada还是没能获得可观的市场份额。然而,数据明显表明:用Ada编写的程序比用C编写的程序缺陷更少,并且交付更快。

Ada编译器都由Ada合格评估测试套件(ACATS)充分评估。最流行的Ada编译器GNAT可免费从GPL获得。

Ada完全是为高可靠性嵌入式应用而设计。在这方面,无论C还是C++都无法相比。Ravenscar Profile更加精妙的针对实时嵌入式系统。任务分配是内置功能,无需RTOS供应商额外提供。

你可能认为“更快,更好并且免费的工具”将是相当吸引人的理由,但是它却没能说服大部分人。这为什么呢?

这可能不是任何效率低下的原因所致。AdaCore的主席Robert Dewar告诉我,与C语言相比,即使采用所有运行时检查,所获得的性能预期虽然不会超过20%,但大约能达到10%。

或许我应该界定“运行时检查”,因为这个概念和C语言性质不同。Ada会寻找错误条件,例如被0除等。你甚至可以定义整数的非法范围。但在C语言中,我们可以这样写:

num_doses=0;

morphine=patient_pain/num_doses;

dispense_morphine(morphine);

我们不能将其归咎于缺乏编译器。AdaCore已经将GNAT移植到大部分主流的16和32位 CPU上。

根据我的经验,刚接触Ada的开发人员通常讨厌这种语言。要获得可编译的源代码显得非常困难。但是,经历了三个Ada项目后,大部分程序员学会喜欢上这种语言。当然,他们投入了更多努力,用来编写正确的代码(这当然是好事情),但是他们节省了大量调试的时间。

正如一位记者Rich Ries给我写的信所言:“Ada之所以不能成功,或许类似于我们对健康生活方式的态度-有时我们都知道应该那样做,但却很少真正去实践!”