Ada

来自站长百科
跳转至: 导航、​ 搜索

Ada是一种表现能力很强的通用程序设计语言,它是美国国防部为克服软件开发危机,耗费巨资,历时近20年研制成功的。它被誉为第四代计算机语言的成功代表。美国国防部之所以把这种语言取名为Ada,是为了纪念奥古斯特·艾达·洛夫莱斯伯爵夫人(Augusta Ada Lovlace,1815-1852),她是英格兰诗人拜伦(Byron)勋爵的女儿,曾对现代计算机技术之父查尔斯·巴贝奇(Charles Babage,1791-1871)的笔记、手稿进行了整理和修正。从某种意义上说,她是世界上第一位计算机程序员。与其他流行的程序设计语言不同,Ada语言不仅体现了许多现代软件的开发原理,而且将这些原理付诸实现。因此,Ada语言的使用可大大改善软件系统的清晰性、可靠性、有效性、可维护性。Ada是现有的语言中无与伦比的一种大型通用程序设计语言,它是现代计算机语言的成功代表,集中反映了程序语言研究的成果。Ada的出现,标志着软件工程成功地进入了国家和国际的规模。在一定意义上说,Ada还刺破了“冯·偌依曼思维模式” (Von Newman Mind-set) 的桎梏,连同Ada的支持环境(APSE)一起,形成了新一派的所谓Ada文化。它是迄今为止最复杂、最完备的软件工具。Ada语言是美国国防部指定的唯一的一种可用于军用系统开发的语言,我国军方也将Ada作为军内开发标准(GJB 1383《程序设计语言Ada》)。

特征[ ]

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

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

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

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

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

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

Ada语言由严格的巴斯特范式定义,但是不适合一般人阅读.它是第一种同时拥有IEC/ISO/美国军用标准认证的语言.其编译器经过严格的审查,以确保同样的代码在任一编译器上产生同样的可执行效果.并且保证并行性在代码级可以在无操作系统下同样运行。   

Ada最初设计时关注于3个最重要的问题:程序的稳定性和可维护性,程序设计和人的行为接近,并且高效。这份语言的修订版是为了提供更大的灵活性和扩展性,存储管理的额外控制和同步,以及标准化的程序包以支持重要的应用程序领域,同时保留原来的重点。对于程序设计语言促进可靠性和简化维护难度的需求已被确立。因此程序可读性的重要性高于轻松地写代码。例如,语言规则要求程序变量应当明确声明并指定它们的类型。由于变量的数据类型是不变的,编译器可以确保对于变量的操作适用于该类型的对象。另外,有错误倾向的符号已经避免,并且语言语法避免了编码形式的使用,使更倾向于英语的结构。最后,Ada 语言提供了程序单元单独编译的功能,使程序开发和维护简便,同样也提供了在一个单元内多个单元之间的检测。考虑人类程序员的问题也在设计时被强调。总而言之,在继续避免过多复杂句型的缺陷的同时,尝试以一致系统的方式保持相对较少的底层概念。   

Ada 语言最初设计是为了构建长周期的、高度可靠的软件系统。它提供了一系列功能来定义相关的数据类型(type)、对象(object)和操作(operation)的程序包(package)。程序包可以被参数化,数据类型可以被扩展以支持可重用库的构建。操作既可以使用方便的顺序控制结构,通过子程序(subprogram)来实现,也可以通过包含并发线程同步控制的入口(entry)来实现。Ada 也支持单独编译(separate compilation),在物理层上支持模块性。   

Ada 包含了很复杂的功能以支持实时(real-time),并发程序设计(concurrent programming)。错误可以作为异常(exception)来标示,并可以被明确地处理。Ada 也覆盖了系统编程(system programming);这需要对数据表示和系统特性访问的精确控制。最后,提供了预定义的标准程序包,包括输入输出、字符串处理、数值计算的基本函数和随机数生成。    Ada的风格在Pascal语言中得以延续。

简单程序[ ]

一个Ada语言编写的Hello world程序:    with Ada.Text_IO;    procedure Hello is    begin    Ada.Text_IO.Put_Line("Hello, world!");    end Hello;    在Ada.Text_IO.Put_Line处有一些快捷图标,不需要很多的文字输入,但是对于这里的理解来讲并没有多大意义。


相关条目[ ]


参考资料[ ]