ADA 95教程 入门

什么是ADA?

Ada是美国国防部开发的一种相对较新的程序设计语言,它试图解决70年代中期存在的软件混乱问题。人们认为,当时使用的2000种左右的程序设计语言在很大程度上可以被一种用于嵌入式实时系统的计划良好的语言所取代。在国防部做出重大努力之后,Ada作为软件问题的解决方案被开发出来,这在许多其他地方都有很好的解决方案。

 

什么是ADA 95?

ada95是Ada编程语言的ISO更新,它将软件开发的最新知识融入到语言中。1983年的版本被称为Ada已经很多年了。因为更新的版本最终将取代原来的版本,所以更新的版本也被称为Ada。因此,由读者根据上下文或直接的意图陈述来决定作者讨论的是哪一个版本的Ada。为了使它尽可能简单,本教程将在讨论新版本的语言时交替使用术语Ada和ada95,所有对原始语言的引用都将使用ada83。在任何地方,他们正在被比较,文本将使用全名,ADA95,以减轻任何可能的混淆。

Ada是一种经过精心规划和精确定义的语言,可以在广泛的软件应用程序中使用。这种语言已经存在了足够长的时间,以至于有相当数量的有能力的编译器可以在大型计算机、小型计算机甚至微型计算机上使用。Ada编译器有一个很大的工作要做,你会看到我们通过学习语言的进展。因此,将一个经过验证的Ada编译器推向市场并非易事。尽管如此,至少有三家公司已经开发出在PC机上MS-DOS和/或Windows下运行的经过充分验证的Ada编译器。尽管其中一些编译器将在最小的PC机上运行,但由于编译所需的时间,建议使用功能相对强大的PC机与任何Ada编译器配合使用。

Ada编程语言的设计方式是,在编译时而不是在程序开始执行后检测并报告我们人类非常有能力生成的许多琐碎错误。正是在这一点上,错误是最容易修复的,因为一个好的编译器可以给程序员一个非常好的错误提示。

本章将给出一些定义,以便我们可以在第2章开始讨论Ada的使用。这些定义在本质上是非常广泛的,因为它们在Ada程序的许多地方都有使用,但是它们非常重要。

 

什么是标识符?

标识符是我们用来引用Ada中任何对象的名称,它必须遵循一些相当严格的规则。我们将列出形成有效标识符的规则,然后为说明目的补充一些规则。

1.标识符必须以字母表中的字母开头。

2.在首字母之后,标识符可以由任意多个字母、数字和下划线组成,前提是下划线只能单独出现,并且下划线不是最后一个字符。

3.字母大小写并不重要。

4.标识符的长度没有限制,但每个标识符必须适合一行文本,编译器的编写者可以施加一个行长度限制。最小行长度必须至少为200个字符。

5.不能将空格或特殊字符用作标识符的一部分。

 

记住这些规则,让我们编几个好的标识符和几个无效的标识符。

    Ada            -- 完全有效的标识符
    ADA            -- 同样的,大小写不重要
    Ada_Compiler   -- 一个非常描述性的标识符
    The_Year_1776  -- 另一个描述性标识符
    a1b2c3d4e5f6   -- 很不起眼,但很有效
    12_times_each  -- 不能从数字开始
    This__is__neat -- 多下划线非法
    This is neat   -- 空格非法
    Ada_"tutorial" -- 特殊字符非法

此时,您应该了解什么是有效的Ada标识符。定义一个标识符似乎是一件很费劲的事情,但是你将忙于命名Ada中使用的所有东西,所以你必须知道如何命名,然后才能用这种语言做任何有意义的事情。

标识符选择

除了标识符是正确的之外,它还应该是可用的和有意义的。作为一个例子,请考虑下面的有效标识符列表,看看哪些标识符向您传达了它们所指内容的一些想法。

    Time_Of_Day
    Final_Score
    Get_the_Present_Temperature
    X12
    Ztx
    t

Ada被设计成一次写,多次读。这是真正发生在任何由一群人设计和开发的非平凡程序上的事情。因此,很少有人注意到这样一个事实,即在编写程序时输入长标识符可能有点乏味。当它被反复读取时,额外的努力会得到回报,因为它很容易遵循程序的逻辑。上面的前三个标识符是首选的,因为它们向读取器传递了信息,而后三个标识符在定义程序逻辑时没有什么价值。当然,如果您使用的数学关系在计算中使用了名为“t”的变量,那么变量的特定名称可能是一个不错的选择。

 

什么是保留字?

ADA95使用69个标识符,这些标识符被称为保留字。请注意,相比之下,ada83只有63个保留字。保留字是为Ada程序中的特定用途而保留的,不能用于任何其他目的。当你学习这门语言时,你会非常清楚地看到如何使用每一个保留的单词,以及为什么选择这些特定的单词。由于Ada是一种包含许多选项和交叉检查的大型语言,因此编写Ada编译器是一项艰巨的工作,但是保留字的使用简化了这项工作。保留字也使最终的程序更容易阅读和理解。

此时不要担心保留字。有必要提及的是,它们确实存在,并且构成了我们在上一节中讨论的标识符命名的附加限制。花几分钟时间浏览ADA95参考手册(ARM)第2.9节中的列表可能是个好主意。请注意,在本教程的文本部分使用时,所有保留字都将以黑体字列出。

 

本教程中使用的案例惯例

Ada允许您对标识符中的字母字符使用任何一种大小写,并且您可以以任何方式自由地混合它们。然而,良好的编程实践会引导您选择在哪里使用大写和在哪里使用小写的约定。一个好的案例选择可能有助于理解程序,因为它会传递一些关于标识符是什么的信息。

为了以标准格式编写示例程序,作者对Ada程序进行了搜索,以确定是否存在一个标准,该标准规定字母字符应使用哪种大小写。搜索是通过研究本教程简介中提到的书籍以及其他12本书中的代码来进行的。没有发现与任何标准的一致性,因此本教程中的所有示例程序都将采用以下内容。因为你刚刚开始学习Ada,你可能不明白每一个类别是什么。完成一些课程后,可以返回此处查看示例程序中列出的字母大小写规则。

reserved words保留字 - 所有保留字将写在小写。这是在Ada程序搜索中发现的唯一一致性。

Variables变量 - 所有变量的首字母大写,所有其他字母小写。

TYPES 类型 - 所有类型都将用大写字母书写。

CONSTANTS 常量 - 所有常量都用大写字母书写。

ENUM VALUES枚举值 - 所有枚举值都将用大写字母书写。

ATTRIBUTES属性 - 所有属性都将用大写字母书写。

Procedure Names程序名称 - 所有程序名称将用每个单词的首字母大写,其他所有用小写字母书写。

Function Names函数名 - 与程序名称Procedure相同。

Package Names包名称 - 与程序名称Procedure相同。

Library Names库名称 - 与程序名称Procedure相同。 (页尾说明1)

请注意,在本教程的文本部分中引用所有程序标识符时,它们都将以粗体形式列出。(页尾说明2)

 

编程风格是什么呢?

编程风格对理解一个完整的程序有很大帮助,本教程将对风格进行大量讨论。您可以自由地以自己的方式向程序中添加缩进和空行,以提高可读性,同时使程序看起来像您自己的作品。然而,在早期的课程中,遵循示例程序中给出的样式并将其作为自己的样式来采用对您有利。随着您获得经验,您将开发自己风格的Ada源代码格式。

 

初步定义

Ada独有的几个主题在语言的许多地方都有使用。由于在我们讨论之前的一些主题之前,不可能对这些问题有一个完整的定义,因此我们必须将完整的定义推迟到以后。另一方面,它们的使用很快就变得必要了,所以我们现在将对它们给出一个简短的定义,稍后将给出一个完整的定义。如果您不完全理解这些早期的定义,不要担心,因为我们稍后将返回一个更完整的定义。

Exceptions异常-当大多数语言发现致命的运行时错误时,它们只是中止程序。这对于实时语言来说是不可接受的,因为它必须继续运行,如果可能的话可以纠正错误。异常是程序执行过程中出现的异常或错误情况。一个Ada程序,如果它被正确地编写的话,就有能力定义如何处理这些错误条件,并继续操作。

Renaming重命名-Ada为程序员提供了为程序中的各种实体分配新名称的能力,以方便您自己。Ada允许重命名对象、异常、任务条目和子程序。它只是一个别名,可以用来引用被重命名的实体。

Overloading重载-Ada允许您对几个不同的项目使用相同的名称。当您使用重载名称时,系统足够聪明,可以通过其使用的直接上下文来知道您引用的是哪个实体。例如,如果我说,“杰克用千斤顶换了瘪胎”,你就知道“杰克”这个词有两种用法,而且你也明白这两种用法在陈述中的用法。Ada还可以使用同一个名称来表示不同的事物,并且聪明地知道各种用法的含义。我们将在本教程后面的部分重新讨论这个主题。

 

 

---------------------------------------------------------------------------------------------------------------------------

原英文版出处:https://perso.telecom-paristech.fr/pautet/Ada95/a95list.htm

翻译(百度):博客园  一个默默的 *** 的人

 

 

(页尾说明1):procedure 当程序和过程翻译,后续校对可能有遗漏,结束上下文对照

(页尾说明2):中文版忽略

posted @ 2021-03-14 13:25  yangjianfeng  阅读(856)  评论(0编辑  收藏  举报