複製鏈接
請複製以下鏈接發送給好友

ada

(計算機程序設計語言)

鎖定
Ada,是一種程序設計語言。源於美國軍方的一個計劃,旨在整合美軍事系統中運行着上百種不同的程序設計語言。其命名是為了紀念世界上第一位程序員阿達·洛芙萊斯。Ada不僅體現了許多現代軟件的開發原理,而且將這些原理付諸實現。同時,Ada語言的使用可大大改善軟件系統的清晰性、可靠性、有效性、可維護性。Ada是現有的語言中無與倫比的一種大型通用程序設計語言,它是現代計算機語言的成功代表,集中反映了程序語言研究的成果。Ada的出現,標誌着軟件工程成功地進入了國家和國際的規模。在一定意義上説,Ada打破了約翰·馮·諾依曼思維模式的桎梏,連同Ada的支持環境(APSE)一起,形成了新一派的Ada文化。它是迄今為止最複雜、最完備的軟件工具。Ada曾是美國國防部指定唯一可用於軍用系統開發的語言 [1-2] 
外文名
Ada Programming Language
類 別
計算機程序設計語言
創 始
美國軍方一個計劃
創始時間
1979年5月
發    源
ALGOL 68, Pascal, smalltalk
啓發語言
Ruby,C++,JavaRust語言
操作系統
多平台

ada歷史背景

在20世紀70年代,美國國防部注意到其嵌入式計算機系統項目中使用的眾多不同編程語言,其中許多是過時或依賴於硬件,而其中更沒有一個可以支援安全的模塊化編程。於是在1975年成立高級語言工作組(HOLWG),意圖創造適合於美英兩國國防部需要的編程語言,以及精簡現有編程語言數量。該項目最終成就了Ada語言 [1]  [2] 

ada發展歷程

1975年4月,HOLWG工作組成立後先制訂了Strawman語言要求系列文檔,以祈將國防部高級語言的需求規劃化。8月,更新為Woodenman版;
1976年1月更新為Tinman版,1977年1月更新為Ironman版,最終於1978年6月制訂出Steelman語言要求系列文檔。期間工作組對眾多編程語言正式進行檢討,結果發現現存語言中並無任何一種能符合文檔規格。工作組亦曾向四個分別以紅(Benjamin Brosgol等)、綠(Jean Ichbiah等)、藍(John Goodenough等)、黃(Jay Spitzen等)為名的承包商發出聘任,請求他們提供發展暫新程式設計語言的建議。
1978年4月,紅組與綠組的建議在大眾注目下均通過並進階。
1979年5月,Jean Ichbiah率領的綠組建議方案被釆納並被命名為Ada,紀念計算機程序創始人Ada Lovelace
1979年6月,Ada語言的設計初步參考手冊由ACM在SIGPLAN Notices雜誌上發表。
1979年10月,Ada語言在波士頓舉行了公開測試和評估會議;因應會議後修正的需求説明Stoneman版文檔於1980年2月發佈。
1980年7月,Ada的修訂版完成;軍事標準參考手冊於12月獲得批准,並被授予Ada Lovelace出生年份數字1815命名為MIL-STD 1815。
1982年7月,Ada另一個修訂版本的參考手冊發佈。
1983年,美國國家標準學會(ANSI)對Ada語言進行了標準化,Gerhard Goos和Juris Hartmanis對此最終版本進行了説明。
1983年4月,紐約大學採用高格別SETL的Ada/Ed編譯器首次執行Ada語言驗證,隨後多間商業機構加入提供Ada編譯器和相關開發工具行列。
1991年開始,美國國防部要求所有軟件運用必用Ada語言。 1997年,此規則被撤回 [1]  [2]  [3] 

ada語言特點

Ada語言最早是針對嵌入式和實時系統設計的,並且在現今依然在這些方面廣泛使用。Ada95版,是由INTERMETRICS公司的塔克·塔夫特於1992到1995年間設計的,當時主要是希望改進對於系統、數字、財務軟件編程的支持。
Ada語言的重要特徵就是其嵌入式風格,模塊化設計,編譯檢查,平行處理,異常處理泛型編程。Ada在95年加入了對面向對象設計的支持,包括動態分配等。
Ada的編譯檢查主要是針對沒有分配的內存讀寫的保護,堆棧溢出錯誤,單個錯誤空閒,隊列讀寫錯誤以及其他可以避免的小問題。這些檢查可以在為增加效率的情況下被取消,但是在編譯的時候他們卻能帶來很高的效率。同樣它也包括對程序的嚴正的設置。因為這些原因,它被廣泛應用於一些非常重要的系統中,例如航空電子學,武器及航天飛行器的操作系統中。
同樣它支持很多的編譯時間檢查,這些檢查被用來避免一些錯誤的發生。這種錯誤往往是在其他語言中運行之前難以被察覺到的,需要在源碼中加入特殊的檢查設置才能被發現。
Ada的動態內存管理非常安全和高規格,它類似於JAVA語言卻不同於C語言的。這種特殊功能並不需要特殊的運行設置。儘管這種語言的語意結構允許對於不能讀寫的目標進行自動的碎片蒐集,但是大多數運行都不支持它。Ada卻支持有限形式基於區域的存儲管理。無效的讀寫常在運行時候被檢查出來(除非這種檢測被人為關閉)並且有時候在編譯時候就被發現。
Ada語言的定義同國際標準化組織的標準有很大不同,因為它是一個自由內容形式的。這種做法的後果是被廣大程序員只能從它的標準化文檔(普遍認為是Ada的參考使用手冊(ARM))尋找細節性的技術問題,但是普遍情況是一本標準教科書卻可以在其他不同語言上使用。
Ada語言由嚴格的巴斯特範式定義,但是不適合一般人閲讀.它是第一種同時擁有IEC/ISO/美國軍用標準認證的語言.其編譯器經過嚴格的審查,以確保同樣的代碼在任一編譯器上產生同樣的可執行效果,並且保證並行性在代碼級可以在無操作系統下同樣運行 [4] 

ada語言組成

ada數據類型

Ada對數據類型不作預設而由編寫者按其目標而界定,在編譯運行時便可靈活地決斷出該類型適當的體積,亦能易於辨識類型設置類型。
Ada支援以系列、模類型、聚合類型和列舉類型定義的數值類別,不允許非類型化指標。
數據類型可以副類型設置來細緻優化,可作limited、abstract、private等修整式運行。
Ada提供任務類及受保護類作特殊類型。

ada語句結構

Ada是一種結構化程序設計語言,在標準句語的構成上可掌控流程,支援所有標準化構造及深層早退指令。
程序包、過程和函數可以嵌套在任意深度並各自可作邏輯上的覆蓋,亦可各自為其常數、類型、變數等等作任何順序的定義聲明。

ada關鍵字

Ada為ALGOL算法語言類程序設計語言,具備系內關鍵字if、 then、 else、 while、 for等等。亦有轉化自Pascal的 type definitions、 records、 pointers、 enumerations等關鍵字的使用。
Ada關鍵字列:
abort, abs, abstract(Ada 95), accept, access, aliased (Ada 95),
all, and, array, at, begin, body, case, constant, declare, delay,
delta, digits, do, elsif, end, entry, exception, exit, for,
function, generic, goto, if, in, interface (Ada 2005), is, limited,
lop, mod, not, null, of, or, others, out, overriding (Ada 2005),
package, pragma, private, procedure, protected (Ada 95), raise,
range, record, rem, renames, requeue (Ada 95), reverse, return,
select, separate, some (Ada 2012), subtype, synchronized (Ada 2005),
tagged (Ada 95), task, terminate, then, type, until (Ada 95),
use, when, while, with, xor

ada語言執行

Ada語法,可透過執行Hello World程序來體現。此程序能輕易地以GCC轄下的GNAT編譯器執行。
with Ada.Text_IO; use Ada.Text_IO;

procedure Hello is

begin

  Put_Line ("Hello, world!");

end Hello;
以上資料來源 [4-5]  [3] 

ada語言標準

Ada曾認證於以下標準:
ANSI MIL-STD 1815A - 1983年,程式語言Ada(Ada Programming language [6] 
ISO 8652:1987- 1987年,程式語言Ada(Ada Programming language [7]  )已撤回
ISO/ANSI 8652:1995 - 1995年,程式語言Ada(Ada Programming language [8]  ),首個ISO標準面嚮對象語言認證。
ISO/IEC 8652:1995/Amd 1:2007 - 2007年, 修正版程式語言Ada(Ada Programming language [9]  )已撤回
ISO/IEC 8652:2012 - 2012年,程式語言Ada(Ada Programming language [10] 

ada語言應用

Ada語言出色的安全把關功能除了服務於歐美軍事體系,亦廣泛地被應用於商業火箭衞星、空中交通控制、鐵路運輸及銀行等領域 [11] 
參考資料
  • 1.    Rojas, Raúl; Hashagen, Ulf ..The First Computers: History and Architectures .美國麻省劍橋市 :MIT Press,2002:297-302
  • 2.    Robert W. Sebesta.Concepts of Programming Languages.美國新澤西:Pearson Education,2004:89-96
  • 3.    The Ada Programming Language  .University of Michigan.2010-05-21[引用日期2015-08-06]
  • 4.    Ada: An Advanced Introduction.Gehani, Narain,.美國新澤西: Prentice-Hall, Engelwood Cliffs,1983:227-256
  • 5.    Geoff Gilpin.Ada: A Guided Tour and Tutorial.美國新澤西:Prentice Hall Trade,1991:18-46
  • 6.    Ada 83程式語言參考手冊  . Ada Information Clearinghouse.1983-04-11[引用日期2015-08-07]
  • 7.    程式語言Ada  .國際標準化組織.1987-06-04[引用日期2015-08-07]
  • 8.    程式語言Ada  .Ada Information Clearinghouse.1995-02-01[引用日期2015-08-07]
  • 9.    修正版程式語言Ada  .國際標準化組織.2007-03-09[引用日期2015-08-07]
  • 10.    Ada程式語言  .國際標準化組織.2012-12-01[引用日期2015-08-07]
  • 11.    Who's using Ada?  .The George Washington University .2014-11-01[引用日期2015-08-10]
展開全部 收起