Ada 程式設計
| Ada 程式設計 是華夏公益教科書上的一個精選書籍,因為它包含大量內容,格式良好,華夏公益教科書社群決定將其展示在首頁或其他地方。請繼續完善它,感謝您迄今為止的辛勤工作!您可以編輯它的廣告模板。 |

歡迎來到華夏公益教科書的Ada 程式設計教程。這是第一個涵蓋 Ada 教程,涵蓋 Ada 2005、2012 和 2022 標準。如果您是初學者,您將學習最新的標準——如果您是經驗豐富的 Ada 使用者,您可以瞭解新功能。
Ada 程式設計的當前開發階段是“”。截至目前,這本書有 600 多頁,這使得Ada 程式設計成為最大的程式設計華夏公益教科書之一。 [1]
但是仍然有改進的空間——幫助我們擴充套件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 (貢獻)