ADA 95教程 导言
导言
欢迎来到ada95这个相对较新的编程语言的世界。尽管Ada在过去曾被政府授权用于某些项目,但该授权已被取消,Ada是一种足够强大的语言,基于其自身的优点,它将在市场上取得成功。
在1983年成功发布Ada语言之后,成立了一个标准委员会来审查该语言,并在必要时对其进行更新。自从Ada最初发布以来,对于如何更好地构造代码以提高效率和正确性的知识有了很大的增加,因此对Ada语言进行了修改,以包含一些额外的知识。新标准于1995年完成并获得批准,被称为Ada 95。原始语言通常被称为Ada 83,但两者都可以适当地称为Ada。在本教程中,名称Ada或Ada 95将交替使用,以指代Ada 95,任何时候参考原始版本,名称Ada 83将明确指出。
ADA是一种大型语言
就其本质而言,Ada是一种比较难编译的大型语言,因为它在编译时进行了大量的检查。据估计,一个经过充分验证的Ada编译器需要大约50人年的时间来编写和调试。这表明Ada编译器不会太多,也不会是小程序。此外,国防部要求任何称为Ada的实现都是一个完整的系统。它必须包含Ada规范的整个核心,但也可以包括定义为Ada扩展的几个附件中的任何一个。更多关于这方面的内容将在本教程后面的部分中介绍。
由于Ada语言的大小,本教程将分为两部分。第1部分(Ada入门)将介绍Ada的大部分要点,并将以与Pascal基本相同的方式指导您使用Ada。如果您只完成了第1部分,您将能够用Ada编写有用的程序,但是您将缺乏本教程第2部分(高级Ada)中所涵盖的Ada高级功能的优雅。由于Ada是一种大型的、灵活的语言,所以您最好完成本教程的两个部分。
ADA不仅仅是另一种语言
Ada不仅仅是另一种编程语言,因为它体现了软件工程的许多现代原理。例如,信息隐藏的概念被设计到语言中,而不是作为编程技术来实现。Ada也是为开发大型软件系统而设计的,因此适用于包含数十万甚至数百万行源代码的程序。很明显,一个人不可能在相当短的时间内编写出这么大的程序,需要团队的努力才能完成。Ada特别适合在团队环境中使用。
本教程是如何编写的?
一本好的参考手册和一本好的教程是相互排斥的实体,一本参考手册对于学习材料来说是糟糕的,而一本教程作为学习周期后的参考是非常糟糕的。本教程是作为一个教程编写的,没有努力使它成为一个参考手册。因此,学生必须按照教程中给出的顺序学习课程。正如本教程中所教的,许多新概念都使用了前面说明的概念,必须理解前面的概念,才能有效益地向前推进。
这些示例程序都是完整的程序,可以在任何计算机上用经过验证的ada95编译器编译和执行。没有一个示例程序是片段,因此您面前有一个完整的程序,其中包含执行每个新概念所需的所有代码。库命名已从ada83更改为ada95,因此在使用ada83编译器时,本教程中很少有示例程序能够无错误地编译。ada83命名约定与ada95兼容,但是我们觉得使用新的命名约定比使用旧的命名约定更好。
如果你没有ADA编译器呢?
在每个示例程序的代码之后,您将发现一个结果列表,其形式为Ada注释,这些结果是通过使用经过验证的Ada编译器执行程序获得的。实际上,每个文件使用了多达五种不同的编译器,因此结果应该是可靠的。执行结果可以用于两个目的之一,第一个目的是检查编译器的输出是否符合标准,第二个目的是在没有Ada编译器的情况下给出执行结果。有时,您可能希望看到结果,而不需要实际执行编译、链接、加载和运行步骤,因此在这些情况下,列出的输出可以节省时间。
除了两个旨在展示糟糕的编程实践的程序外,每一个示例程序都试图说明良好的编程实践。当您学习本教程中的示例程序时,您将通过观察来发展良好的编程风格。
本教程是为谁编写的?
本教程是针对两组程序员,尤其是FORTRAN专业人员编写的,以及那些具有现代结构化语言(如Pascal、C或C++)的专家。由于Ada的规模和复杂性,一个很少或没有编程经验的人在完成本教程的过程中会遇到相当大的困难,但是只要有足够的耐心,即使是这个人也可以通过仔细学习本教程来学习Ada。
第一组可能由成熟的程序员组成,他们已经在这个行业工作了很多年,并且有大量使用FORTRAN的经验。本文作者是这个小组的成员,1961年开始用FORTRAN II编程。有经验的FORTRAN程序员会发现数据类型的概念对编程语言来说是一个新的、看起来很麻烦的补充,因此要仔细解释这个概念的细节以及其他对他来说是新概念的概念。
第二组将由那些拥有现代结构化语言(如Pascal)经验的程序员组成,他们已经理解了数据类型的概念,但是发现Ada的新添加完全是外来的。作者也是第二组的成员,在Pascal、C和C++中编程了大约十五年,艾达在十一年前被添加到列表中。
你是哪一组?
如果你是一个有经验的FORTRAN程序员,你几乎需要每章中给出的所有细节,但是如果你是现代结构化语言学校的学生,你只需要其中一些章节中的一小部分细节,因此可以很快地阅读它们。不过,需要注意的是,有些细节看起来很像帕斯卡,但实际上却大不相同,因此仔细研究那些你已经精通的东西也是值得的。
有经验的C程序员可能会对Ada编译器所要求的细节感到有点沮丧。你不会有你最喜欢的“技巧”来欺骗编译器去做一些不寻常的事情。Ada编译器不能被愚弄。
计算机字号注释
目前大多数通用计算机都使用32位字,因此预计大多数用户将使用32位系统。因此,在本教程中涉及字数大小的部分,将假定为32位,执行结果将反映该大小。如果您使用的是一个由16位组成的系统,或者任何其他大小的系统,那么您应该很容易确定系统的正确结果。大多数重要的地方是我们讨论某些类型的极限的地方。
编程练习
每一章的结尾都会给出一个或多个编程练习,以供您参考和指导。每一个练习的选择都是为了鼓励你在完成手头的一章时练习你的新知识,并且应该在继续下一章之前完成。如果你做这些练习,你将获得写Ada的经验,而不是简单地读Ada,你的整体理解能力将大大提高。通过理解编译过程中收到的编译器错误消息,您将获得更多的知识。您可以放心,您将得到编译器错误消息。有些练习甚至告诉你尝试一些东西,看看是否收到错误信息。
所有编程练习的答案都在可供下载的a95ans1.zip和a95ans2.zip文件中给出。文件命名格式为CHnn_ml.ADA,其中“nn”表示章节号,“m”表示该章节的具体练习,“l”表示给出了多个答案。第4章编程练习1的答案将在名为CH04_1.ADA的文件中,如果有两个答案,则它们将在名为CH04_1A.ADA和CH04_1B.ADA的文件中,并且每个答案在注释中都有自己的结果。在你看这些文件之前尝试一下这些练习对你是有利的。这些文件可以编译和执行,但由于它们的性质,它们可能有编译或运行时错误,因为它们是用来说明您可能遇到的一些问题的。编译和运行它们的结果将以注释的方式报告在文件末尾,与示例程序的注释方式大致相同。
一些编程练习是经过精心挑选的,用以说明一些附加的主题,以充实本章所教授的内容。如果您发现自己有点困惑,请直接转到提供的答案文件进行澄清并帮助解决问题。你应该先花点时间自己解决这个问题。
你自己的练习
许多示例程序不产生任何输出。这样做是为了强迫您编写一些输出语句来查看一些结果。你应该有目的地破坏一些程序,试图做一些奇怪的事情,看看你是否理解文本中所包含的内容。本教程的初始要求之一,正如在本项目开始时所概述的,是所有示例程序都可以无错误地编译。这使得演示一些编译器检查变得很困难,因此您可以自己查看这些错误。如果错误是由您引入的,那么编译器错误消息应该很容易被您破译。请记住,编程练习的一些答案将有编译或运行时错误。
推荐阅读清单
建议按任意顺序研究以下参考文献。如果你打算认真学习Ada,你应该有所有这些参考资料。
1.约翰·巴恩斯:“Ada 95编程”,艾迪生·韦斯利。这本书定义了从最低层次到非常高层次的语言,但没有教授软件工程。这是新生学习的最好的书。最好将其描述为ADA95编程语言的参考手册。
2.奈迪奇,大卫J.:“与ADA95的神交”,约翰威利父子公司。这本书是优秀的初学者或学生与知识的Ada 83希望升级到Ada 95他的知识。当信息与ADA95相关而与ADA83无关时,本书非常小心地在文本的左边空白处插入一个小图标,指出本书的哪些部分引用了ADA95。
3.ADA95参考手册(ARM);您的编译器可能附带了一份ARM的副本。ARM的超文本版本目前可从以下网站获得;http://www.adahome.com/rm95但是,由于web上的任何站点都会很快发生更改,因此此URL也可能会更改。如果此网站上没有,请使用其中一个搜索引擎进行查找。
4.Ada95基本原理;基本原理的副本可能包含在编译器中,但如果没有,则可以在以下网站上找到;http://sw-eng.falls-church.va.us/AdaIC。
注:上述参考文献3和4中列出的网站包含大量关于ADA95的信息,熟悉它们的内容对您有利。
---------------------------------------------------------------------------------------------------------------------------
原英文版出处:https://perso.telecom-paristech.fr/pautet/Ada95/a95list.htm
翻译(百度):博客园 一个默默的 *** 的人