Ada，是一種程式設計語言。它源於美國國防部在二十世紀七十年代的計劃，旨在整合美軍系統程式設計語言，而當時美軍系統執行著上百種不同的程式設計語言，並提高除錯能力和效率，由 Pascal 及其他語言擴充套件而成，接近自然語言和數學表示式，用「Ada」命名以紀念 zhcn 埃達洛夫萊斯；zhtw 愛達勒芙蕾絲；zhhk 愛達勒芙蕾絲；zhsg 埃達洛夫萊斯；。 重要特徵 Ada 語言最早針對嵌入式和 zhhans 即時計算；zhtw 即時運算 設計，至今依然在這些領域廣泛使用。Ada95 版，是由 INTERMETRICS 公司的塔克塔夫特於 1992 到 1995 年間設計的，旨在改進對於系統、數字、財務軟體程式設計的支援。 Ada 語言的重要特徵就是其嵌入式風格，模組化程式設計，編譯檢查，平行處理，異常處理及泛型程式設計。Ada 在 1995 年加入了對面向物件設計的支援，包括動態分配等。 Ada 的編譯檢查主要是針對沒有分配的記憶體讀寫的保護，堆疊溢位錯誤，單個錯誤空閒，佇列讀寫錯誤以及其他可以避免的小問題。這些檢查可以在為增加效率的情況下被取消，但是在編譯的時候他們卻能帶來很高的效率。同樣它也包括對程式的嚴正的設定。因為這些原因，它被廣泛應用於一些非常重要的系統中，例如航空電子學，武器及航天飛行器的作業系統中。 同樣它支援很多的編譯時間檢查，這些檢查被用來避免一些錯誤的發生。這種錯誤往往是在其他語言中執行之前難以被察覺到的，需要在原始碼中加入特殊的檢查設定才能被發現。 Ada 的動態記憶體管理非常安全和高規格，它類似於 JAVA 語言卻不同於 C 語言的。這種特殊功能並不需要特殊的執行設定。儘管這種語言的語意結構允許對於不能讀寫的目標進行自動的碎片蒐集，但是大多數執行時都不支援該特性。Ada 卻支援有限形式基於區域的儲存管理。無效的讀寫常在執行時候被檢查出來（除非這種檢測被人為關閉）並且有時候在編譯時候就被發現。 Ada 語言的定義同國際標準化組織（ISO）的標準有很大不同，因為他是一個自由內容形式的。這種做法的後果是被廣大程式設計師只能從它的標準化文件（普遍認為是 Ada 的參考使用手冊（ARM））尋找細節性的技術問題，但是普遍情況是一本標準教科書卻可以在其他不同語言上使用。 Ada 語言由嚴格的巴斯特正規化定義，不適合一般人閱讀。它是第一種同時擁有 IECISO 美國軍用標準認證的語言，其編譯器經過嚴格的審查，以確保同樣的程式碼在任一編譯器上產生同樣的可執行效果，並且保證並行性在程式碼級可以在無作業系統下同樣執行。 歷史 在 1970 年代，美國國防部（DoD）所屬的嵌入式計算機系統專案中使用的程式語言數量逐日增多，其中的很多語言十分陳舊或者依賴於硬體，而且沒有一個支援安全的模組化程式設計，對此 DoD 感到十分擔心。基於這個原因，在 1975 年成立了高階語言工作組（HOLWG），它的使命是就是尋找或者創造某種適合國防部需要的程式語言，以便減少現有程式語言數量。該小組最終的工作成果就是 Ada 語言。由此，類似專案中使用的高階程式語言的數量大大減少了，1983 年的 450 種程式語言，到 1996 年只剩下 37 種。 工作組開發出了語言要求文件 文件。許多現存的語言都被仔細地檢查，但是 1977 年這個團隊聲稱沒有任何現存語言符合他們的條件。 Ada 語言的示例程式 Hello World 程式： with AdaText_IO use AdaText_IO procedure Hello is begin Put_Line Hello world end Hello 在 AdaText_IOPut_Line 處有一些捷徑，不需要很多的文字輸入，但是對於這裡的理解來講並沒有多大意義。細節性的問題請參考 Ada ProgrammingBasic。 判定一個字串是否為迴文的函式（遞迴） 判定一個字串是否是迴文 function is_palindrome str in String return Boolean is len Natural strLength begin if len 1 then return True elsif Element To_Unbounded_String str 1 Element To_Unbounded_String str len then declare new_str String 1len2 begin new_str Slice Source To_Unbounded_String str Low 2 High len 1 return is_palindrome str new_str end else return False end if end is_palindrome 定義一個函式用來判定一字串是否為迴文： 判定一個字串是否是迴文 function is_palindrome str in String return Boolean is len Natural strLength begin for i in 1 len 2 loop if Element To_Unbounded_String str i Element To_Unbounded_String str len i 1 then return False end if end loop return True end is_palindrome 參見 SPARK 參考書目 國際標準 ：Information technology Programming languages Ada ：Information technology Programming languages Ada Semantic Interface Specification（ASIS） ：Information technology Programming languages Ada Conformity assessment of a language processor（ACATS） IEEE Standard 10035b1996，the POSIX Ada binding Ada Language Mapping Specification，the CORBA IDL to Ada mapping 書目 Jan Skansholm：Ada 95 From the Beginning AddisonWesley ISBN 0201403765 ：Programming in Ada plus Language Reference Manual AddisonWesley ISBN 0201565390 ：Programming in Ada 95 AddisonWesley ISBN 0201342936 ：High Integrity Ada The SPARK Approach AddisonWesley ISBN 0201175177 ：High Integrity Software The SPARK Approach to Safety and Security AddisonWesley ISBN 0321136160 ：Ada Programmers Handbook BenjaminCummings Publishing Company ISBN 0805325298 ：Ada for Software Engineers John Wiley Sons ISBN 0471979120 ：Ada as a Second Language McGrawHill ScienceEngineeringMath ISBN 0070116075 ，：RealTime Systems and Programming Languages Ada 95 RealTime Java and RealTime POSIX AddisonWesley ISBN 0201729881 ，：Concurrency in Ada Cambridge University Press ISBN 052162911X ：ObjectOriented Reuse Concurrency and Distribution An AdaBased Approach AddisonWesley ISBN 0201565277 Grady Booch，Doug Bryan：Software Engineering with Ada AddisonWesley ISBN 0805306080 ，Neil W Webre：Data Structures with Abstract Data Types and Ada Brooks Cole ISBN 0534144489 Pascal Ledru：Distributed Programming in Ada with Protected Objects Dissertationcom ISBN 1581120346 Fintan Culwin：Ada a Developmental Approach Prentice Hall ISBN 0132646803 ，Fintan Culwin：Ada 95 the Craft of Object Oriented Programming Prentice Hall ISBN 0132303507 ：Ada 95 SpringerVerlag ISBN 0387948015 David R Musser，：The Ada Generic Library Linear List Processing Packages SpringerVerlag ISBN 0387971335 Michael B Feldman：Software Construction and Data Structures with Ada 95 AddisonWesley ISBN 0201887959 ：Ada95 for C and C Programmers AddisonWesley ISBN 0201403633 Michael B Feldman，：Ada 95 AddisonWesley ISBN 020136123X Nell Dale，Chip Weems，：Programming and Problem Solving with Ada 95 Jones Bartlett Publishers ISBN 0763702935 Nell Dale，Susan Lilly，：Ada Plus Data Structures An ObjectBased Approach Jones Bartlett Publishers ISBN 0669416762 Bruce C Krell：Developing With Ada LifeCycle Methods Bantam Dell Pub Group ISBN 0553091026 Judy Bishop：Distributed Ada Developments and Experiences Cambridge University Press ISBN 0521392519 Bo Sanden：Software Systems Construction With Examples in Ada Prentice Hall ISBN 013030834X Bruce Hillam：Introduction to Abstract Data Types Using Ada Prentice Hall ISBN 0130459496 ：Introduction to Software Design and Development With Ada Brooks Cole ISBN 0314028293 Ian C Pyle：Developing Safety Systems A Guide Using Ada Prentice Hall ISBN 0132042983 Louis Baker：Artificial Intelligence With Ada McGrawHill ISBN 0070033501 ，：HRTHOOD A Structured Design Method for Hard RealTime Ada Systems NorthHolland ISBN 0444821643 Walter Savitch Charles Peterson：Ada An Introduction to the Art and Science of Programming BenjaminCummings Publishing Company ISBN 0805370706 Mark Allen Weiss：Data Structures and Algorithm Analysis in Ada BenjaminCummings Publishing Company ISBN 0805390553 Ada 的百科 總體資訊 AdaKrischik 輔助工具書 Ada Programming Programación en Ada Programmation Ada 工程 AdaCL wikibookada ASIS GLADE Florist 參考文獻 外部連結 Ada World AdaPower The Web Site for Ada ACM SIGAda AdaEurope Organization Ada Information Clearinghouse ISO Home of Ada Standards Ada 95 Books Available Online Ada Rapporteur Group evolution of standard Ada Answers Building better software with Ada Ada Academic Initiative Libre Ada Software GNU Ada Homepage GNAVI Ada Visual RAD Citations from CiteSeer GNAT AdaGIDE the Ada GNAT Integrated Development Environment for Windows Forum Ada Tutorial Projects Using Ada A Ada on NET Conference announcements for the international Ada community Category 系統程式語言 CategoryAda 程式語言 CategoryIEC 標準 Category1980 年建立的程式語言