Ada 编程语言



以下内容摘自wiki,http://zh.wikipedia.org/wiki/Ada


Ada,是一种程序设计语言。源于美国军方的一个计划,旨在整合美军系统中运行着上百种不同的程序设计语言编写的程序,命名是为了纪念爱达·勒芙蕾丝而使用Ada。

目录

[隐藏]

[编辑] 重要特征

Ada语言最早是针对嵌入式和实时系统设计的,并且在今天依然在这方面使用广泛。Ada95版,是由INTERMETRICS公司的塔克。塔夫特于92到95年间设计的,当时主要是希望改进对于 系统,数字,财务软件编程的支持。

Ada语言的重要特征就是其键入式风格,模块化设计,编译检查,平行处理,异常处理及泛型编程。Ada在95年加入了对面向对象设计的支持,包括动态分配等。

Ada的编译检查主要是针对没有分配的内存读写的保护,堆栈溢出错误,单个错误空闲,队列读写错误以及其他可以避免的小问题。这些检查可以在为增加 效率的情况下被取消,但是在编译的时候他们却能带来很高的效率。同样它也包括对程序的严正的设置。因为这些原因,它被广泛应用于一些非常重要的系统中,例 如航空电子学,武器及航天飞行器的操作系统中。

同样它支持很多的编译时间检查,这些检查被用来避免一些错误的发生。这种错误往往是在其他语言中在运行以前都不能被察觉到的,需要在源码中加入特殊的检查设置才能被发现。

Ada的动态内存管理非常安全和高规格,它类似于JAVA语言却不同于C语言的。 这种特殊功能并不需要特殊的运行设置。尽管这种语言的语意结构允许对于不能读写的目标进行自动的碎片搜集,但是大多数运行都不支持它。Ada却支持有限形 式基于区域的存储管理。无效的读写常在运行时候被检查出来(除非这种检测被人为关闭)并且有时候在编译时候就被发现。

Ada语言的定义同国际标准化组织(ISO)的标准有很大不同,因为他是一个自由内容形式的。这种做法的后果是被广大程序员只能从它的标准化文档 (普遍认为是Ada的参考使用手册(ARM))寻找细节性的技术问题,但是普遍情况是一本标准教科书却可以在其他不同语言上使用。

[编辑] 历史

70年代美国国防部 因为它所属项目的编程语言数量而倍受关注。这些语言中的很多都是完全独立于硬件的,并且其中没有一个是支持安全模块编程的。1975年 高次阶语言工作组 (HOLWG) 终于成立了。它的主要目标就是寻找或者创造一些适合国防部需要的语言来减少这种现存的编程语言数量。它带来的结果就是Ada语言。因此,这些编程语言数量从1983 的450下降到了1996的37种。

维基文库中相关的原始文献:

工作组开发出了语言要求文档—文档。许多现存的语言都被仔细地检查,但是1977年 这个团队却声称没有任何现存语言符合他们的条件。

[编辑] Ada语言的"世界,你好!" 示例程序

一个Ada语言编写的"你好世界"Hello world program程序:

with Ada.Text_IO; 

procedure Hello is
begin
Ada.Text_IO.Put_Line("Hello, world!");
end Hello;

Ada.Text_IO.Put_Line处有一些快捷图标,不需要很多的文字输入,但是对于这里的理解来讲并没有多大意义。细节性的问题请参考Ada Programming/Basic

[编辑] 关于阿利亚纳五号的失败

一个普遍的关于欧洲航天局阿利亚纳五号火 箭失败的说法是因为 Ada 语言在编译过程的检查失败导致的。 将大的浮点数转换成整数是一种常见的程序错误来源。1996年6月4日,对于Ariane 5火箭的初次航行来说,这样一个错误产生了灾难性的后果。发射后仅仅37秒,火箭偏离它的飞行路径,解体并爆炸了。火箭上载有价值5亿美元的通信卫星。6 亿美元付之一炬。后来的调查显示,控制惯性导航系统的计算机向控制引擎喷嘴的计算机发送了一个无效数据。失事调查报告指出,火箭爆炸是因为:

During execution of a data conversion from 64-bit floating point to 16-bit signed integer value, the floating point number which was converted had a value greater than what could be represented by a 16-bit signed integer. This resulted in an Operand Error.

它没有发送飞行控制信息,而是送出了一个诊断位模式,表明在将一个64位浮点数转换成16位有符号整数时,产生了溢出。 溢出值测量的是火箭的水平速率,这比早先的Ariane 4火箭所能达到的高出了5倍。在设计阿利亚纳4火箭的软件时,他们小心地分析了数字值,并且确定水平速率绝不会超出一个16位的数。不幸的是,他们在阿利 亚纳5火箭的系统中简单地重新使用了这一部分,而没有检查它所基于的假设。Ada代码如下:

begin
sensor_get(vertical_veloc_sensor);
sensor_get(horizontal_veloc_sensor);
vertical_veloc_bias := integer(vertical_veloc_sensor);
horizontal_veloc_bias := integer(horizontal_veloc_sensor);
...
exception
when numeric_error => calculate_vertical_veloc();
when others => use_irs1();
end;

参考阿利亚纳五号

[编辑] 参见

[编辑] 参考书目

[编辑] 国际标准

[编辑] 书目

您可以在 维基教科书中查找此百科条目的相关电子教程:

[编辑] Ada的百科

[编辑] 总体信息

[编辑] 辅助工具书

[编辑] 工程

[编辑] 注释


[编辑] 外部连接



补充说明:Ada语言很适合嵌入式应用,高安全性,应该值得关注!
请参照这个站点:www.Ada-tech.com,这个套件包括Ada语言的编译器及相应的开发文档和各种工具。
中文Ada语言资源网:http://go8.163.com/wkh/
一个教程的中文站:http://all.163.com/it/school/apl/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值