跳转到内容

Ada 编程/Ada 2005

来自 Wikibooks,开放世界中的开放书籍

Ada. Time-tested, safe and secure.
Ada.经久耐用、安全可靠。

这是对Ada 2005主要功能的概述,Ada 2005 是 Ada 标准的版本,于 2007 年 1 月由 ISO 接受(为了与之前的版本 Ada 83Ada 95 区分,Ada 2005 的非正式名称通常被大家接受)。有关其基本原理和更详细(且非常技术性)的描述,请参阅 修正案,该修正案是对 Ada 参考手册的修正,链接到每个 Ada 问题文档(AI)的最新版本。

尽管该标准现已发布,但并非所有编译器都能够处理它。以下 免费软件 编译器已经实现了其中许多新增功能:

下载并安装它们中的任何一个后,请记住在编译 Ada 2005 代码时使用 -gnat05 开关。请注意,在 GNAT GPL 2007 版中,Ada 2005 是默认模式。

语言特性

[编辑 | 编辑源代码]

字符集

[编辑 | 编辑源代码]

Ada 2005 不仅支持新的 32 位字符类型——称为Wide_Wide_Character——而且源代码本身也可以使用此扩展字符集。因此,例如,俄罗斯人和印度人将能够在标识符和注释中使用他们的母语。数学家也会欣喜若狂:整个希腊语和弗拉克图尔字符集都可以在标识符中使用。例如,Ada.Numerics 将扩展为包含一个新的常量

π : constant := Pi;

这不是一个新想法——GNAT 始终拥有-gnatic编译器选项来指定字符集 [1]。但是现在这个想法已经成为标准,所以所有 Ada 编译器都需要支持 Unicode 4.0 用于标识符——正如新标准要求的那样。

另请参阅

接口允许以类似于 Java 和 C# 的有限形式实现多重继承。

您可以在此处找到完整的描述:Ada 编程/面向对象

另请参阅

除了 Ada 的安全变体记录之外,现在还提供了未检查的 C 样式联合。

您可以在此处找到完整的描述:Ada 编程/类型/记录#联合

另请参阅

With 语句得到了巨大改进。首先,有新的 有限 with,它允许两个包相互 with。然后有 私有 with,它使包仅在规范的私有部分中可见。

另请参阅

访问类型

[编辑 | 编辑源代码]

非空访问

[编辑 | 编辑源代码]

访问类型定义可以指定访问类型永远不能为 null。

请参阅 Ada 编程/类型/访问#空排除

另请参阅:AI95-00231-01 访问常量参数和空排除访问子类型

匿名访问

[编辑 | 编辑源代码]

匿名访问类型的可能用法已扩展。它们几乎可以在每个类型或对象定义中使用,包括访问子程序参数。匿名访问类型也可以指向常量对象。此外,可以将它们声明为非空。

通过在包 标准 中添加以下操作,可以测试匿名访问类型的相等性。

   function "=" (Left, Right : universal_access) return Boolean;
   function "/="(Left, Right : universal_access) return Boolean;

请参阅 Ada 编程/类型/访问#匿名访问

另请参阅

语言库

[编辑 | 编辑源代码]

语言库中的一项重大新增功能是用于容器的泛型包。如果您熟悉 C++ STL,那么在使用 Ada.Containers 时,您可能会感觉非常熟悉。不过,有一点要注意:Ada 是一种块结构语言。许多关于如何使用 STL 的想法都利用了语言的这一特性。例如,可以向迭代方案提供局部子程序。

原始的 Ada 问题文本 AI95-00302-03 容器库 现已转换为 A.18 容器 (带注释的)

如果您了解如何编写 Ada 程序,并且需要使用向量、列表、集合或映射(表),请查看上面提到的 AI95-00302-03 AI 文档。 文档中有一个 !示例 部分详细解释了容器的使用。 Matthew Heaney 在他针对 AI-302 的参考实现中提供了一些演示程序(Ada.Containers),您可以在 tigris 上找到它们。

Ada 编程/容器 中,您会找到一个使用容器的演示。

历史旁注:C++ STL 借鉴了 David R. Musser 和 Alexander A. Stepanov 的工作。 他们曾在一些泛型编程研究中使用 Ada 83。 Stepanov 文件集 提供了一些出版物。

扫描文件系统目录和环境变量

[编辑 | 编辑源代码]

另请参阅

除了包 Ada.Numerics 的新常量(请参阅上面的 字符集),最重要的新增内容是用于操作向量和矩阵的包。

另请参阅

(关于 Ada 编程工具的相关说明:AI-388 包含一个有趣的评估,说明了编译器编写者如何被迫持续保持对编程支持工具中国际字符的处理不足。 作为 Ada 程序的作者,请注意您的工具提供商或 Ada 顾问可能会建议程序文本仅使用 7 位 ASCII。)

实时和高完整性系统

[编辑 | 编辑源代码]

另请参阅

Ravenscar 配置

[编辑 | 编辑源代码]

另请参阅

新的调度策略

[编辑 | 编辑源代码]

另请参阅

受保护对象动态优先级

[编辑 | 编辑源代码]

另请参阅:AI95-00327-01 动态上限优先级

新增内容概述

[编辑 | 编辑源代码]

新增关键字

[编辑 | 编辑源代码]

新增 3 个关键字(共计 72 个)

新增编译指示

[编辑 | 编辑源代码]

新增 11 个编译指示

新增属性

[编辑 | 编辑源代码]

新增 7 个属性

新增包

[编辑 | 编辑源代码]

另请参阅

[edit | edit source]

维基教科书

[edit | edit source]

Ada 2005 类别页面

[edit | edit source]
[edit | edit source]

论文和演示文稿

[edit | edit source]

基本原理

[edit | edit source]
  • Ada 2005 基本原理John Barnes 撰写
    1. 介绍
    2. 面向对象模型
    3. 访问类型
    4. 结构和可见性
    5. 任务和实时
    6. 异常、泛型等
    7. 预定义库
    8. 容器
    9. 结语
参考文献
索引

可作为单个 打印文档 获取。

语言要求

[edit | edit source]

Ada 参考手册

[edit | edit source]

Ada 问题

[edit | edit source]


华夏公益教科书