Chinaunix首页 | 论坛 | 博客
  • 博客访问: 362543
  • 博文数量: 45
  • 博客积分: 4970
  • 博客等级: 上校
  • 技术积分: 965
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-21 21:13
文章分类
文章存档

2011年(6)

2010年(9)

2009年(17)

2008年(13)

我的朋友

分类: 项目管理

2009-05-08 10:09:12

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

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

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

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

    这可能不是任何效率低下的原因所致。AdaCore的主席RobertDewar告诉我,与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项目后,大部分程序员学会喜欢上这种语言。当然,他们投入了更多努力,用来编写正确的代码(这当然是好事情),但是他们节省了大量调试的时间。    

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

阅读(746) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~