Ada,是一种
程序设计语言。源于美国军方的一个计划,旨在整合美军事系统中运行着上百种不同的程序设计语言。其命名是为了纪念世界上第一位程序员
阿达·洛芙莱斯。Ada不仅体现了许多现代软件的开发原理,而且将这些原理付诸实现。同时,Ada语言的使用可大大改善软件系统的清晰性、可靠性、有效性、可维护性。Ada是现有的语言中无与伦比的一种大型通用程序设计语言,它是现代计算机语言的成功代表,集中反映了程序语言研究的成果。Ada的出现,标志着软件工程成功地进入了国家和国际的规模。在一定意义上说,Ada打破了
约翰·冯·诺依曼思维模式的桎梏,连同Ada的支持环境(APSE)一起,形成了新一派的Ada文化。它是迄今为止最复杂、最完备的软件工具。Ada曾是美国国防部指定唯一可用于军用系统开发的语言。
历史背景
在20世纪70年代,
美国国防部注意到其
嵌入式计算机系统项目中使用的众多不同编程语言,其中许多是过时或依赖于硬件,而其中更没有一个可以支援安全的模块化编程。于是在1975年成立高级语言工作组(HOLWG),意图创造适合于美英两国国防部需要的
编程语言,以及精简现有编程语言数量。该项目最终成就了Ada语言。
发展历程
1975年4月,HOLWG工作组成立后先制订了Strawman语言要求系列文档,以祈将国防部高级语言的需求规划化。8月,更新为Woodenman版;
1976年1月更新为Tinman版,1977年1月更新为Ironman版,最终于1978年6月制订出Steelman语言要求系列文档。期间工作组对众多编程语言正式进行检讨,结果发现现存语言中并无任何一种能符合文档规格。工作组亦曾向四个分别以红(Benjamin Brosgol等)、绿(Jean Ichbiah等)、蓝(John Goodenough等)、黄(Jay Spitzen等)为名的承包商发出聘任,请求他们提供发展暂新程式设计语言的建议。
1978年4月,红组与绿组的建议在大众注目下均通过并进阶。
1979年5月,Jean Ichbiah率领的绿组建议方案被釆纳并被命名为Ada,纪念计算机程序创始人
Ada Lovelace。
1979年6月,Ada语言的设计初步参考手册由
ACM在SIGPLAN Notices杂志上发表。
1979年10月,Ada语言在波士顿举行了公开测试和评估会议;因应会议后修正的需求说明Stoneman版文档于1980年2月发布。
1980年7月,Ada的修订版完成;军事标准参考手册于12月获得批准,并被授予Ada Lovelace出生年份数字1815命名为MIL-STD 1815。
1982年7月,Ada另一个修订版本的参考手册发布。
1983年,
美国国家标准学会(ANSI)对Ada语言进行了标准化,Gerhard Goos和Juris Hartmanis对此最终版本进行了说明。
1983年4月,纽约大学采用高格别SETL的Ada/Ed编译器首次执行Ada语言验证,随后多间商业机构加入提供Ada编译器和相关开发工具行列。
1991年开始,美国国防部要求所有软件运用必用Ada语言。 1997年,此规则被撤回。
语言特点
Ada语言最早是针对嵌入式和
实时系统设计的,并且在现今依然在这些方面广泛使用。
Ada95版,是由INTERMETRICS公司的塔克·塔夫特于1992到1995年间设计的,当时主要是希望改进对于系统、数字、
财务软件编程的支持。
Ada语言的重要特征就是其嵌入式风格,
模块化设计,编译检查,平行处理,
异常处理及
泛型编程。Ada在95年加入了对
面向对象设计的支持,包括动态分配等。
Ada的编译检查主要是针对没有分配的内存读写的保护,
堆栈溢出错误,单个错误空闲,队列读写错误以及其他可以避免的小问题。这些检查可以在为增加效率的情况下被取消,但是在编译的时候他们却能带来很高的效率。同样它也包括对程序的严正的设置。因为这些原因,它被广泛应用于一些非常重要的系统中,例如
航空电子学,武器及航天飞行器的操作系统中。
同样它支持很多的编译时间检查,这些检查被用来避免一些错误的发生。这种错误往往是在其他语言中运行之前难以被察觉到的,需要在
源码中加入特殊的检查设置才能被发现。
Ada的动态
内存管理非常安全和高规格,它类似于JAVA语言却不同于
C语言的。这种特殊功能并不需要特殊的运行设置。尽管这种语言的语意结构允许对于不能读写的目标进行自动的碎片搜集,但是大多数运行都不支持它。Ada却支持有限形式基于区域的存储管理。无效的读写常在运行时候被检查出来(除非这种检测被人为关闭)并且有时候在编译时候就被发现。
Ada语言的定义同
国际标准化组织的标准有很大不同,因为它是一个自由内容形式的。这种做法的后果是被广大程序员只能从它的标准化文档(普遍认为是Ada的参考使用手册(ARM))寻找细节性的技术问题,但是普遍情况是一本标准教科书却可以在其他不同语言上使用。
Ada语言由严格的巴斯特范式定义,但是不适合一般人阅读.它是第一种同时拥有IEC/ISO/美国军用标准认证的语言.其编译器经过严格的审查,以确保同样的代码在任一编译器上产生同样的可执行效果,并且保证
并行性在代码级可以在无操作系统下同样运行。
语言组成
数据类型
Ada对
数据类型不作预设而由编写者按其目标而界定,在编译运行时便可灵活地决断出该类型适当的体积,亦能易于辨识类型设置类型。
Ada支援以
系列、模类型、
聚合类型和
列举类型定义的数值类别,不允许非类型化指标。
数据类型可以副类型设置来细致优化,可作limited、abstract、private等修整式运行。
Ada提供任务类及受保护类作特殊类型。
语句结构
Ada是一种
结构化程序设计语言,在标准句语的构成上可掌控流程,支援所有标准化构造及深层早退指令。
程序包、过程和
函数可以嵌套在任意深度并各自可作逻辑上的覆盖,亦可各自为其
常数、类型、
变数等等作任何顺序的定义声明。
关键字
Ada为
ALGOL算法语言类程序设计语言,具备系内关键字if、 then、 else、 while、 for等等。亦有转化自
Pascal的 type definitions、 records、 pointers、 enumerations等关键字的使用。
Ada关键字列:
abort, abs, abstract(Ada 95), accept, access, aliased (Ada 95),
all, and, array, at, begin, body, case, constant, declare, delay,
delta, digits, do, elsif, end, entry, exception, exit, for,
function, generic, goto, if, in, interface (Ada 2005), is, limited,
lop, mod, not, null, of, or, others, out, overriding (Ada 2005),
package, pragma, private, procedure, protected (Ada 95), raise,
range, record, rem, renames, requeue (Ada 95), reverse, return,
select, separate, some (Ada 2012), subtype, synchronized (Ada 2005),
tagged (Ada 95), task, terminate, then, type, until (Ada 95),
use, when, while, with, xor
语言执行
Ada语法,可透过执行Hello World程序来体现。此程序能轻易地以
GCC辖下的GNAT编译器执行。
以上资料来源
语言标准
Ada曾认证于以下标准:
ANSI MIL-STD 1815A - 1983年,程式语言Ada(Ada Programming language)
ISO 8652:1987- 1987年,程式语言Ada(Ada Programming language)已撤回
ISO/ANSI 8652:1995 - 1995年,程式语言Ada(Ada Programming language),首个ISO标准
面向对象语言认证。
ISO/IEC 8652:1995/Amd 1:2007 - 2007年, 修正版程式语言Ada(Ada Programming language)已撤回
ISO/IEC 8652:2012 - 2012年,程式语言Ada(Ada Programming language)
语言应用
Ada语言出色的安全把关功能除了服务于欧美军事体系,亦广泛地被应用于商业火箭卫星、空中交通控制、铁路运输及银行等领域。