Ada语言与传统C语言的异同


1. 概述


C语言是目前使用最为广泛的高级程序设计语言,几乎全部的操作系统、大多数中小型应用软件,是用C语言开发而成。C语言提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言也很适合搭配汇编语言来使用(往往可以通过内联汇编语言或与汇编语言目标文件一起连接。对于任何一种操作系统环境,C函数的ABI(Application BinaryInterface)与汇编语言的子过程(routine/procedure)的ABI一定是完全兼容的)。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

Ada语言是一种基于对象的高级程序设计语言,不仅具有数据抽象、信息隐藏、高可靠性、可理解性等优点,而且不论从语言自身的开发,还是用其开发应用软件,都充分体现了软件工程思想,所以自Ada语言问世以来,在大型嵌入式系统和军事领域,迅速得到广泛应用,美国和部分发达国家已将Ada语言作为军用语言,明确规定所有军用软件必须用Ada语言开发,用其它语言开发的已有软件也要求用Ada语言重新开发,至少必须和Ada语言有方便的接口。


2. C语言和Ada语言比较


C语言和Ada语言是两种不同风格的程序设计语言,C语言以其动态性强,灵活方便见长,适用于系统软件开发;Ada语言则以其安全性高,结构严谨,而倍受大型程序系统设计者青睐。

C语言常被称作中级计算机语言,因为其综合了高级语言(例如PASCAL、Ada等)的元素和汇编语言的机能。C语言允许对位、字节和地址直接操作,而位、字节和地址是计算机运转的基本元素,因此具有汇编语言的机能;同时C语言也像高级语言一样支持数据类型。但和Ada这样的强类型语言又有很大的差别,C语言允许几乎所有的类型转换。例如,字符型和整型可在绝大多数表达式中自由混用,而这正是Ada语言所不能容忍的。一般情况下,C语言不执行运行时错误检查,如数组边界检查、变量类型的可容性检查,这些检查由程序员负责,增加了程序员的工作量和编码难度,但大大提高了C语言编程的灵活性。

C语言具有一些Ada语言难于表达的语法成分和特殊功能。如C语言指针类型和结构类型直接支持地址和位段操作;类型转换灵活自如,许多类型相互之间能不加转换使用;变量类型复杂多样,各种变量具有不同的作用域和有效期;宏定义使代码简单明了;输入、输出功能完备。

Ada语言由于其静态强类型特点,使诸如操作类型不匹配、数据越界、变量非法存取之类的错误在编译时就被发现,增强了程序的可靠性;另一方面,也限制了其灵活性,所有对象在声明时就必须严格定义其类型,而在实际应用中,例如在专家系统工具的开发中,很多对象的类型、取值范围、空间大小等只有在程序执行过程中由上下文推断出。类似于C语言的动态数组、函数指针等类型在Ada语言中也难以实现。Ada语言虽然没有C语言的许多特点,但通过Ada语言提供的各种语法机制,能间接完成C语言所特有的各种功能。


3. 结论


Ada语言是唯一由政府组织、按规定的需求和严格的工程要求研制的语言,也是唯一经过全世界计算机科学家共同参与讨论而制定的、并且得到工业界支持的标准语言。它不仅体现了许多现代软件的开发原理,而且将这些原理付诸实现。相比C语言来说,使用Ada语言可大大改善软件系统的清晰性、可靠性、有效性、可维护性。因此,在航空航天、医疗设备、交通运输、能源控制系统等安全性较高的领域,使用Ada语言进行软件研发是不二之选。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Casbin开源社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值