跳轉至內容

Ada 程式設計

100% developed
來自 Wikibooks,開放世界中的開放書籍


歡迎來到 Wikibooks 上的Ada 程式設計教程。這是第一個涵蓋Ada 教程,涵蓋Ada 200520122022標準。如果您是初學者,您將學習最新的標準 - 如果您是經驗豐富的 Ada 使用者,您可以瞭解新功能。

Ada 程式設計的當前開發階段為“75% 開發完成 2024年6月8日 (2024年6月8日)”。到目前為止,本書已有 600 多頁,這使得Ada 程式設計成為最大的程式設計維基書籍之一。[1]

但仍然有改進的空間 - 請幫助我們擴充套件Ada 程式設計。即使是初學者也能找到參與的領域。

關於 Ada

[編輯 | 編輯原始碼]
奧古斯塔·阿達·金,勒芙蕾斯伯爵夫人。

Ada 是一種適用於所有開發需求的程式語言。它具有直接支援結構化面向物件泛型分散式併發程式設計的內建特性。

Ada 是快速應用開發極限程式設計 (XP)自由軟體開發的良好選擇。

Ada 以奧古斯塔·阿達·金-諾埃爾,勒芙蕾斯伯爵夫人的名字命名。

大型程式設計

[編輯 | 編輯原始碼]

Ada 對良好的軟體工程實踐給予了獨特的重視,並提供了強有力的支援,這些實踐可以很好地擴充套件到非常大的軟體系統(數百萬行程式碼和非常龐大的開發團隊)。以下語言特性在這方面特別相關

  • 一個極其強大、靜態且安全的型別系統,它允許程式設計師構建強大的抽象來反映現實世界,並允許編譯器在邏輯錯誤變成錯誤之前檢測到許多邏輯錯誤。
  • 模組化,編譯器直接管理從原始碼構建非常大的軟體系統。
  • 資訊隱藏;該語言將介面與實現分離,並提供對可見性的細粒度控制。
  • 可讀性,這有助於程式設計師審查和驗證程式碼。Ada 優先考慮程式的閱讀者而不是編寫者,因為程式編寫一次但閱讀多次。例如,語法禁止所有模稜兩可的結構,因此沒有意外,遵循程式設計之道中的最小驚奇原則。(一些 Ada 程式設計師不願意談論通常很神秘的原始碼;他們更喜歡程式文字,它更接近英語散文。)
  • 可移植性:語言定義允許編譯器僅在少數受控方式上有所不同,否則會非常精確地定義程式的語義;因此,Ada 原始碼在編譯器和目標硬體平臺之間非常可移植。大多數情況下,程式可以在沒有任何更改的情況下重新編譯。[2]
  • 標準化:標準一直是自 20 世紀 70 年代後期語言設計以來的目標和突出特徵。第一個標準於 1980 年釋出,距離設計開始僅 3 年。所有 Ada 編譯器都支援相同的語言;唯一的方言,SPARK,僅僅是一個帶註釋的子集,可以使用 Ada 編譯器進行編譯。

這些特性的結果是卓越的可靠性可重用性可維護性。例如,與用C編寫的程式相比,用 Ada 83 編寫的程式“內部修復減少了 70%,錯誤減少了 90%”,並且最初的開發成本降低了一半。[3] Ada 在軟體維護方面表現更加出色,軟體維護通常佔開發總成本的約 80%。藉助對面向物件程式設計的支援,Ada 95 可能會帶來更多成本效益,具體取決於物件的使用方式;儘管還沒有發表與 Zeigler 可比的嚴肅研究。

小型程式設計

[編輯 | 編輯原始碼]

除了支援適用於通用程式設計的良好軟體工程實踐外,Ada還具有強大的專業功能,支援底層程式設計,適用於即時、安全關鍵和嵌入式系統。這些功能包括但不限於機器碼插入、地址運算、對記憶體的低階訪問、對資料按位表示的控制、位操作,以及一個定義明確、靜態可證明的併發計算模型,稱為Ravenscar Profile

其他功能包括限制(可以限制程式中接受哪些語言功能)和有助於審查和認證編譯器生成的程式碼的功能。

一些供應商提供了Ada編譯器,並附帶了適用於認證的生命攸關應用的最小執行時核心。也可以編寫完全不需要執行時核心的Ada程式。

毫不奇怪,Ada廣泛應用於航空航天、國防、醫療、鐵路和核能行業。

語言參考手冊

[編輯 | 編輯原始碼]

Ada參考手冊 (RM) 是語言的官方定義。如果您遇到問題,其他人無法幫助您,您應該閱讀RM(儘管對於非語言律師來說,它通常有點晦澀)。因此,Ada程式設計中所有完整的(非草稿)頁面都包含到RM中相應頁面的連結。

本教程涵蓋了Ada參考手冊 - ISO/IEC 8652:2023 語言和標準庫,俗稱Ada 2022Ada

您可以在http://www.ada-auth.org/standards/22rm/html/RM-TOC.html瀏覽完整的參考手冊。

有兩個配套文件

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程式設計

[編輯 | 編輯原始碼]

線上閱讀文件通常非常麻煩。因此,如果您剛剛開始,您也可以下載所有章節PDF版本50% developed  as of Sep 23, 2005並打印出來。

在哪裡獲取編譯器,如何編譯原始碼,這裡都有答案

語言特性

[編輯 | 編輯原始碼]

這些章節從更廣闊的角度審視問題,以教程的方式向您介紹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 執行時庫中的包主體。

參考文獻

[編輯 | 編輯原始碼]
  1. 參見Category:Book:Ada Programming/所有章節
  2. Gaetan Allaert、Dirk Craeynest、Philippe Waroquiers (2003)。"歐洲空中交通流量管理:將大型應用程式移植到 GNU/Linux"2003 年 ACM SIGAda 國際 Ada 會議論文集。SIGAda'03。第 29-37 頁。doi:10.1145/958420.958426ISBN 1-58113-476-2. http://www.sigada.org/conf/sigada2003/SIGAda2003-CDROM/SIGAda2003-Proceedings/p29-allaert.pdf. 檢索於 2009 年 1 月 2 日. Eurocontrol 的關於可移植性的論文 (PDF,160 kB)。

  3. Stephen F. Zeigler (1995-03-30). "比較 C 和 Ada 的開發成本". 檢索於 2009-01-02. 我們的資料表明,Ada 為我們節省了數百萬美元的開發成本。 {{cite journal}}: Cite journal requires |journal= (幫助)

進一步閱讀

[編輯 | 編輯原始碼]

Ada 2005 教材

[編輯 | 編輯原始碼]

Ada 2012 教材

[編輯 | 編輯原始碼]

Ada 2022 教材

[編輯 | 編輯原始碼]

手冊和指南

[編輯 | 編輯原始碼]

高完整性軟體

[編輯 | 編輯原始碼]
[編輯 | 編輯原始碼]

作者和貢獻者

[編輯 | 編輯原始碼]

這本華夏公益教科書由以下人員撰寫

如果您也希望貢獻,請閱讀貢獻 並加入我們位於貢獻者休息室

華夏公益教科書