Ada 编程
Ada 编程 是维基教科书上的一个精选书籍,因为它包含大量内容,格式良好,维基教科书社区决定将其展示在首页或其他地方。请继续完善它,感谢您迄今为止的辛勤工作!您可以编辑它的广告模板。 |
欢迎来到维基教科书的Ada 编程教程。这是第一个涵盖 Ada 教程,涵盖 Ada 2005、2012 和 2022 标准。如果您是初学者,您将学习最新的标准——如果您是经验丰富的 Ada 用户,您可以了解新功能。
”。截至目前,这本书有 600 多页,这使得Ada 编程成为最大的但是仍然有改进的空间——帮助我们扩展Ada 编程。即使是初学者也会发现可以参与的领域。
关于 Ada
[edit | edit source]Ada 是一种适用于所有开发需求的编程语言。它具有直接支持 结构化、面向对象、泛型、分布式 和 并发 编程的内置功能。
Ada 是 快速应用开发、极限编程 (XP) 和 自由软件 开发的良好选择。
Ada 以 奥古斯塔·阿达·金-诺埃尔,洛夫莱斯伯爵夫人命名。
大型编程
[edit | edit source]Ada 对良好的 软件工程 实践给予独特的重视,并提供强有力的支持,这些实践可以很好地扩展到非常大的软件系统(数百万行代码和非常庞大的开发团队)。以下语言特性在这方面特别相关
- 一个极其强大、静态且安全的类型系统,它允许程序员构建反映现实世界的强大抽象,并允许编译器在逻辑错误成为错误之前检测到许多逻辑错误。
- 模块化,编译器直接管理从源代码构建非常大的软件系统。
- 信息隐藏;该语言将接口与实现分开,并提供对可见性的细粒度控制。
- 可读性,这有助于程序员检查和验证代码。Ada 优先考虑程序的读者而不是编写者,因为程序只写一次,却要读很多次。例如,语法禁止所有含糊不清的结构,因此没有意外,遵循编程之道中的最小惊讶原则。(一些 Ada 程序员不愿意谈论通常很神秘的源代码;他们更喜欢程序文本,它更接近英语散文。)
- 可移植性:语言定义允许编译器仅在几种受控方式下有所不同,否则非常精确地定义程序的语义;因此,Ada 源代码在编译器和目标硬件平台之间非常便携。大多数情况下,程序可以在没有任何更改的情况下重新编译。 [2]
- 标准化:标准一直是自 1970 年代后期语言设计以来目标和突出特征。第一个标准于 1980 年发布,在设计开始仅 3 年后。所有 Ada 编译器都支持相同的语言;唯一的一种方言,SPARK,仅仅是一个带注释的子集,可以用 Ada 编译器进行编译。
这些品质带来的结果是卓越的可靠性、可重用性和可维护性。例如,与用 C 编写的程序相比,用 Ada 83 编写的程序“内部修复减少了 70%,错误减少了 90%”,并且开发成本最初低了一半。 [3] Ada 在软件维护方面更是大放异彩,软件维护通常占开发总成本的 80% 左右。借助对面向对象编程的支持,Ada 95 可能会带来更多成本效益,具体取决于对象的用途;虽然没有发表与齐格勒研究类似的严肃研究。
小型编程
[edit | edit source]除了对良好软件工程实践的支持,这些实践适用于通用编程之外,Ada 还具有支持低级编程的强大专门功能,用于实时、安全关键和嵌入式 系统。此类功能包括但不限于机器代码插入、地址运算、对内存的低级访问、对数据位表示形式的控制、位操作以及一个定义明确、静态可证明的并发计算模型,称为Ravenscar 配置文件。
其他功能包括限制(可以限制程序中接受哪些语言功能)以及有助于审查和认证编译器生成的代码的功能。
一些供应商提供 Ada 编译器,以及适合在经过认证的生命攸关应用程序中使用的最小运行时内核。也可以编写不需要任何运行时内核的 Ada 程序。
Ada 被航空航天、国防、医疗、铁路和核工业广泛使用也就不足为奇了。
语言参考手册
[edit | edit source]Ada 参考手册 (RM) 是官方的语言定义。如果您遇到问题,其他人无法提供帮助,您应该阅读 RM (虽然对于非语言律师来说,它通常有点难以理解)。出于这个原因,所有完整的 (不是草稿) 页面的 Ada 编程 包含指向 RM 中相应页面的链接。
本教程涵盖 Ada 参考手册 — ISO/IEC 8652:2023 语言和标准库,俗称 Ada 2022 或简称为 Ada。
您可以在 http://www.ada-auth.org/standards/22rm/html/RM-TOC.html 浏览完整的参考手册。
有两个配套文件
- 《注释参考手册》,是 RM 的扩展版本,面向编译器编写者或希望了解语言细节的其他人员。
- 《Ada 2022 概述》,解释了本语言版本的特性。
《Ada 信息交流中心》还提供旧的 Ada 83、95、2005 和 2012 标准以及配套文件。
RM 是 Ada 用户控制下的集体作品。如果您认为在 RM 中发现了问题,请将其报告给 Ada 符合性评估机构 (Ada RM 解释了如何执行此操作,请参阅 http://www.ada-auth.org/standards/22rm/html/RM-0-2.html 简介 (58/1) ff)。在此网站上,您还可以查看其他人提出的“Ada 问题”列表。
与其他编程语言不同,Ada 编译器经过官方测试,只有通过测试的编译器才被接受,用于军事和商业工作。这意味着所有 Ada 编译器 (几乎) 都是一样的,因此您不必学习任何方言。但是,Ada 标准允许编译器编写者包含不在标准中的附加功能和库。
从哪里获取编译器,如何编译源代码,这里都有答案
这些章节着眼于更广泛的画面,以教程的方式向您介绍主要的 Ada 特性。
- 表达式
- 控制结构
- 类型系统
- 常量
- 表示子句
- 字符串
- 子程序
- 包
- 输入输出
- 异常
- 泛型
- 任务
- 面向对象
- 基于契约的编程
- 内存管理(访问类型)
- Ada 2005 中的新内容
- Ada 2012 中的新内容
- Ada 2022 中的新内容
- 容器
- 与其他语言的接口
- 编码规范
- Ada 编程技巧
- 常见编程错误
以下文章是从《计算机编程》书籍中改编的 Ada 版本。这些文章的文本是与语言无关的,但所有示例都是 Ada。
在以下章节中,我们将探讨 Ada 的基础知识。这些章节可用于参考特定关键字、分隔符、运算符等。
本节是对 Ada 标准库的参考,该库非常广泛且结构良好。它有以下四个根包
除了标准库之外,编译器通常还附带一个内置库。本章特别介绍了 GNAT 库。
本节是对第三方 Ada 库的参考,这些库不是编译器预定义环境的一部分,但可以免费使用。
以下是集合页面。所有集合页面都包含已存在页面的分组。您可以使用它们进行打印或快速浏览。请注意,这些页面部分非常长。
- 教程
- 显示 HTML (1,839 kb) — 下载 PDF (2,663 kb,243 页)
- 关键词
- 显示 HTML (470 kb) — 下载 PDF (290 kb,59 页)
- 运算符
- 显示 HTML (232 kb) — 下载 PDF (189 kb,27 页)
本书的源代码可供 下载 和 在线浏览。后者允许“深入挖掘”,意味着您可以一直向下跟踪链接到 Ada 运行时库中的包体。
- ↑ 参见 Category:Book:Ada Programming 或 /所有章节
- ↑ Gaetan Allaert, Dirk Craeynest, Philippe Waroquiers (2003). "欧洲空中交通流量管理:将大型应用程序移植到 GNU/linux". 2003 年 ACM SIGAda 国际 Ada 年度会议论文集. SIGAda'03. pp. 29–37. doi:10.1145/958420.958426. ISBN 1-58113-476-2. http://www.sigada.org/conf/sigada2003/SIGAda2003-CDROM/SIGAda2003-Proceedings/p29-allaert.pdf. Retrieved 2009-01-02. Eurocontrol 关于可移植性的论文 (PDF,160 kB)。
- ↑ Stephen F. Zeigler (1995-03-30). "Comparing Development Costs of C and Ada". Retrieved 2009-01-02.
Our data indicates that Ada has saved us millions of development dollars.
{{cite journal}}
: Cite journal requires|journal=
(help)
进一步阅读
[edit | edit source]Ada 2005 教科书
[edit | edit source]- John Barnes (2006). Programming in Ada 2005. Addison Wesley. ISBN 0-321-34078-7.
- Mordechai Ben-Ari (2009). Ada for Software Engineers (Second Edition with Ada 2005). Springer. ISBN 978-1-84882-313-6.
- Alan Burns, Andy Wellings (2007). Concurrent and Real-Time Programming in Ada. Cambridge University Press. ISBN 978-0-521-86697-2.
- Nell Dale, John W. McCormick (2007). Ada Plus Data Structures: An Object Oriented Approach (2nd ed.). Jones and Bartlett. ISBN 0-7637-3794-1.
- John W. McCormick, Frank Singhoff, Jérôme Hugues (2011). Building Parallel, Embedded, and Real-Time Applications with Ada. Cambridge University Press. ISBN 978-0-521-19716-8.
{{cite book}}
: CS1 maint: multiple names: authors list (link)
Ada 2012 教科书
[edit | edit source]- John Barnes (2014). Programming in Ada 2012. Cambridge University Press. ISBN 978-1-107-42481-4.
- Andrew T.Shvets (2020). Beginning Ada Programming: From Novice to Professional. Apress Media LLC, A Subsidiary of Springer Nature. ISBN 978-1-4842-5427-1.
Ada 2022 教科书
[edit | edit source]- John Barnes (2022). Programming in Ada 2012 with a Preview of Ada 2022. Cambridge University Press. ISBN 9781009181341
- John Barnes (2024) [计划中]. Programming in Ada 2022. Cambridge University Press. ISBN 9781009564779
手册和指南
[edit | edit source]- Ada 质量和风格指南: 专业程序员指南 (维基教科书)
- Ada 2005 的基本原理,由 John Barnes (2007) 撰写
- Ada 2005 参考手册 (2007)
- Ada 参考卡 (PDF 格式)
高完整性软件
[edit | edit source]- ISO/IEC TR 15942:2000,在高完整性系统中使用 Ada 编程语言的指南. ISO 免费标准 [1]
- ISO/IEC TR 24718:2005,在高完整性系统中使用 Ada Ravenscar 配置文件的指南. ISO 免费标准 [2]
- John Barnes (2003). High Integrity Software: The SPARK Approach to Safety and Security. Addison-Wesley. ISBN 0-321-13616-0.
外部链接
[edit | edit source]资源
[edit | edit source]- Ada 信息中心 — 新闻和资源
- comp.lang.ada (网络存档, Google groups) — 国际 Usenet 新闻组
- ada-lang.io — 社区网站和论坛
研究和用户组
[edit | edit source]- 期刊
- 国际会议/研讨会
- 本地会议
- ACM SIGAda — ACM Ada 特别兴趣小组
- Ada-Europe
- Ada 德国
- Ada 西班牙
- Ada-Belgium
- Ada-France
- Ada 瑞士
- learn.adacore.com
- Linux Ada 编程大型在线书籍
- Ada 精华
- Ada 实战
- Ada 95 简介
- 网络学习 Ada
- 快速 Ada
- Ada 95: 面向对象编程的技巧 — Prentice Hall 原版免费教科书
- 在线 Ada 书籍
本维基教科书由以下人员撰写
- Martin Krischik (贡献)
- Manuel Gómez (贡献)
- Santiago Urueña (贡献)
- C.K.W. Grein (贡献,更多 和 更多贡献)
- Bill Findlay (贡献)
- B. Seidel (贡献)
- Simon Wright (贡献)
- Allen Lew (贡献)
- John Oleszkiewicz (贡献)
- Nicolas Kaiser (贡献)
- Larry Luther (贡献)
- Georg Bauhaus (贡献)
- Samuel Tardieu (贡献)
- Ludovic Brenta (贡献)
- Mateus de Lima Oliveira (贡献)
- Ed Falis
- Pascal Obry
- Bent Bracke (贡献)