> >网站资源
..> >图书馆:TechXchange
. . . .>> TechXchange:嵌入式软件
. . . . . .>>主题:Ada和SPARK
大多数嵌入式编程是用C和c++完成的。嵌入式应用程序使用了许多语言,从Java到Lua,但C占主导地位。
C的流行并不奇怪。它很容易学习,而且每个平台都有一个C编译器。大多数芯片供应商都提供了围绕C语言构建的免费工具,像Windows和Linux这样的流行平台都是使用C语言构建的。
那么我为什么要提倡使用Ada,一种由委员会为军队设计的语言呢?
对于嵌入式开发人员来说,安全性、安全性和可靠性比以往任何时候都更加重要。最小化bug是关键,Ada在这方面做得比C好,在较小的程度上比c++好。Ada 2012中新的合同支持是Ada优势之一。
让艾达的合同
SPARK是Ada的一个子集,它最初公开了契约支持。Ada 2012为函数和过程以及类型定义实现了契约。
特别是Ada 2012允许前置条件和后置条件。它可以用来检查参数、对象的当前状态和结果。后置条件中的S 'Old引用是指输入函数时变量的初始值。
C断言宏也以类似的方式使用,但实现是非标准的。在函数入口应用它相对容易,但要一致地实现后置条件则要困难得多。
另一个重要的区别是定义和检查发生的位置。Ada示例驻留在头文件中,而C断言风格的宏将出现在代码中,而程序员将从代码中引用头文件。Ada的前置条件和后端条件本质上是函数定义者给出的契约,由使用该函数的程序员使用。
Ada的内置多任务
Ada的几个特性使它成为紧凑高效的嵌入式应用程序的理想选择。一个是支持语言中的多任务处理。Java提供了类似的支持,但是C和c++把它交给了操作系统(OS),这使得迁移应用程序变得困难,因为它们现在被绑定到特定的操作系统,甚至可能是该操作系统的特定版本。
Ada还提供汇合的进程间通信和调度,因此它不能处理所有的应用程序,但大多数应用程序都可以适合它的框架。Ada也可以与大多数操作系统一起工作,它的多任务处理可以与主机操作系统集成。
C选项
可以使用免费的Ada编译器和开发工具,因此检出Ada不需要任何成本。开始使用Ada非常容易,尽管像C和c++一样,成为一名Ada maven可能需要一段时间。
与C等大多数语言相比,Ada倾向于做更多的检查。其中一些检查可以通过使用C/ c++的静态分析工具来执行(参见“什么是新的静态分析技术”)。像MISRA C这样的标准可以解决Ada在语言中构建的一些问题。
如果Ada不适合您的开发人员工具箱,那么这些工具中的一些可以。尽管如此,将这些特性整合到编程语言中,除了有助于提高代码质量之外,还会对应用程序的设计产生重大影响。
Ada程序员比C或c++程序员少。大多数人一开始并没有将Ada作为他们的第一种编程语言,但是他们却非常尊重它。你对它了解得越多,它就变得越有用。
Ada并不是万能工具,但它是开发可靠软件的更好工具。它支持现在常见的面向对象和泛型编程方法。
这里没有足够的空间给艾达应有的空间。(参见“C程序员,是时候试试Ada了”)。艾达专家写了更详细的文章。我建议你查一查,因为如果你不查,你的竞争对手就会查。艾达能给你未来所需的优势。
> >网站资源
..> >图书馆:TechXchange
. . . .>> TechXchange:嵌入式软件
. . . . . .>>主题:Ada和SPARK