概述
Ada語言是1979年由美國國防部歷時8年,耗資5億美元研製成功的一種商標準程式設計語言。原稱DOD一1語言,是在“Green”語言基礎上發展起來的。它的目的是設計一種國防部使用的通用高級程式語言。最初此語言用於若干研究課題。現在該語言已可以廣泛套用於數值計算、系統程式、實時套用及並行處理等方面。也可用於大型實時軍事防禦系統,符合美國國防部的“鋼人”語言要求。在美國國防(DOD)內部,自1984年7月以來已用Add語言實現了幾個重大系統(mis sion critical system),如世界範圍的軍事命令控制系統(WWMCCS)、
信息系統(WlS),MILSTAR和炮兵作戰數據系統(AFATDS)。各種使命支撐系統也正在開發之中。其他領域諸如人工智慧、石油地震分析、通訊、航空管理、資料庫管理及計算譏網路系統等方面的套用也在穩步發展。在教育領域,目前已有200多種不同版本的Ada語言教材,全國已有近30所大學開設了Ada語言課程。國際上,許多國家已宣布了軍用系統的Ada語言標準化策略。
標準Ada語言是一個用於嵌入式計算機系統的大型程式設計語言系統,配備有比較完善的程式設計環境支撐軟體包和標準Ada語言全集或子集。IBM PC/XT機上配置的JANUS/Add語言是非標準的(僅相當於Ada語言的一個予集)。其功能只能達到全系統功能的3/4左右。但由於Ada的功能可通過自身所攜帶的程式包擴充,因而,JANUS/Ada語言配置的功能已能滿足一般設計程式的要求。
Ada語言的風格受到
PASCAL語言的影響。它具有
PASCAL等通用語言和某些專用語言的長處,既具有通用控制結構,又具有定義數據類型和分程式的能力。它可使用抽象的數據類型且易於控制並行任務和處理意外情況,從而適用於實時並行處理。它也適用於民用與工業套用。Ada語言的數據有內部類型及結構類型兩種,數據的精度可由程式設計師控制。Ada語言提供了像PASCAL語言的控制結構,還可用EXIT語句中止循環,也可使用GOTO語句。另外,它還包括了過程及函式調用、並行處理等結構。
語言開發史
Ada語言的研製大致經歷了分析、需求定義、設計、測試、運行和維護五個階段。
分析階段
70年代初期,美國國防部就已經注意到大型防務系統的軟體費用由升高的勢頭。在此之前,這種系統的硬體費用遠遠超過軟體費用;雖然,軟體不可靠一級費用超支等問題才開始暴露,但大型軟體的開發問題還未被人們充分認識。1973年,美國國防部用於計算機的支出總數為75億美元,軟體費用占46%(超過30億美元)。另外,嵌入式計算機系統的軟體支出又占整個軟體支出的56%,而數據處理占19%,科學計算套用開支僅占5%,剩餘的20%包括其他的和非直接的軟體費用。
從1968年到1973年,雖然硬體開支大幅度減少,但是美國國防部用於計算機系統的直接開支仍然增加了5l%,實際上這些開支僅僅指出了美國國防部碰到的一部分問題。
此外,軟體工具本身存在的一些先天性缺陷,也影響著這些問題的解決。這些缺陷表現在如下幾個方面:
1.多種程式設計語言並存;
2.各種語言的套用水平低劣;
3.流行的語言不支持現代程式設計方法;
4.缺少有用的軟體環境。
在此期間,美國國防部系統至少有450種通用語言,若考慮到這些語言的計算機系統的特點,實際上有500種到1500種不同的高級語言和彙編語言。在那時美國國防部並不堅持控制每種語言的用途,每個設計機構實際上都在自由地創造自己的語言或使用與現代語言不兼容的各種版本。於是導致了訓練問題、不同課題之間的技術轉移問題的脫節與混亂,以致造成資源的普遍浪費.此種現象被稱為軟體危機。
美國國防部擁有龐大的形式各異的嵌入式計算機系統(即計算機通常並不單機使用,而是將它加入到網路中或聯到控制系統中,按這樣的套用方式組合起來的系統被稱為嵌入式計算機系統),它的套用也是多種多樣的。歸納起來,這些軟體系統的特徵是:
1.規模龐大,代碼達千百萬行;
2.生存期長,10年到15年;
3.持續變化,要根據需求的變化進行不斷的修改;
4.物理的約束,目標機的地址空間或運行速度方面的限制;
5.高可靠性,能容錯(某一個任務出現故障不影響其他任務的執行)。
除此之外,嵌入式系統又有自己特定的程式設計方面的要求:
1.並發處理(Parallel processing);
2.實時控制(Real time Control);
3.異常處理.(Exception handling);
4.獨特的輸入/輸出控制(Unique I/O Controd)。
鑒於美國國防部的大多數軟體費用與嵌入式計算機系統相聯繫這一事實,迫使國防部將注意力轉移到達個特定的領域,並開始理解從整個軟體生存期的費用角度來考察使用一個高級語言的效益。此外,硬體速度變得更快更可靠,而且編譯技術也已能使得高級語言的翻譯足夠有效,高級語言能夠使用於實時系統,然而還沒有一個能夠滿足嵌入式系統需求的合適的高級語言。於是,在1974年,美國陸軍、海軍和空軍各自獨立地建議開發一個高級語言,以便在所屬部門中使用,並且各自為此設立了一個研究項目或一個語言設計計畫。
1975年1月,國防研究和工程委員會(DDR&E)主任Malcolra Currie提出只使用一個通用高級語言的建議,根據此建議,建立了一個聯合機構——高級語言工作組(HOLWG)。高級語言工作組以美國空軍中校William Whitaker為主席,包括各軍種代表、美國國防蘸其他機構以及英國、原聯邦德國和法國的聯絡官員,高級工作組的任務是:
1.確定美國國防部高級語盲的需求;
2.針對這些盆求對現有語言作出評價;
3.推薦採用或實現這一程式設計語言的最小集合。
為保證高級語言工作組的工作不受干擾,與此同時,國防研究和工程委員會中止了所有其他新語言的研究和開發工作。
需求定義階段
確定美國國防部的需求是高級語言工作組的首要任務。
1975年4月,高級語言工作組向軍隊各部門、其他聯邦機構、工業界和其他學術團體公布了“稻草人,(STRAWMAN)需求檔案,並向歐洲計算機界的一些專家徵求了意見.
1975年容月,再次廣泛地公布了經過修改的“木頭人”(WOODENMAX)檔案。
1976年1月,根據評審的官方反應,產生並公布了“錫人(TINMAN)需求檔案。這是一整套完整的需求檔案,它說明了美國國防部對高級語言所期望的性能。
所有這些檔案都由代表85個美國國防部各組織、26個工業承包單位、16個大學及7個其他組織的200餘人進行了精心的修改,大多數組織都期望著能產生一個支持現代軟體方法論,並具有實時控制和異常處理結構的高級語言。
1976年4月,美國國防部發布了題為“重要國防系統中計算機資源管理’的5000.29號命令。它要求在國防系統中使用美國國防部批准的高級語言,除非能證明其他語育對某種特殊套用更節省費用。此外命令中還規定只能由美國國防部來審核批准採用何種語言。該命令的執行結果是限制彙編語言用於國防系統,而鼓勵使用已經證明是相當成功的高級語盲。由於只能使用經過批准的語言,使得語言數目增加的趨勢受到遏制。
1976年11月公布了一個過渡性的高級語言的清單,不久,高級語言工作組在康奈爾大學主持了一個國際專題討論會,公開討論了對這種語言的技術需求。並議“錫人”為準繩,開始對現存語言進行了正式評審。
評審組正式評審了
FORTRAN,
COBOL,PL/1,HAL/S,TACPOL,CMS一2,CS一4,SPL/1,JOVIALJ3,JOVIALJ73,ALGOL60,ALGOL68,CORAL66,Pascal等23種不同語言。此外,還研究了另外一些語言,以了解它們是否具有所期望的最後語言需要採納的一些特點。
這些語言被區分為三種不同類型:
1.不適合的,過時或在問題域之外的語言;
2.並非不適合的,含有適合問題域或某些性質的問題;
3.可接受的。
評審組寫出長達2 800頁的評述報告,報告的結論是:
1.現存語言都不適合作為美國國防部嵌入式計算機系統的通用高級語盲;
2.希望只使用一種語言;
3.尋求滿足所有需求的一種新語言是可行的;
4.新語盲應在適合的基礎上開發。
設計階段
由於DOD-1過於軍事化,非國防部門可能會輕視它,因此高級語育工作組從來投接受過將它作為新語言的名稱。Ada Lovelace(1815~1851年)是英格蘭詩人Jord Cooper(拜倫勳爵)的女兒,是一位數學家。她曾經和Charles Babbage一起研究過差分機和分析機,由於較早地研究了計算機的潛在能力而知名。特別是Ada提出了Babbnge的機器可以像Jacquard織布機一樣編程,因而公認她是世界上第一位程式設計師。
經國防部副部長和Jovelace的繼承人Lytton眾伯爵之間的正式信件來往,Lytton伯爵同意使用這個名字。
1979年5月,Ada語言正式成為美國國防部通用高級語言的官方名字。
測試階段
測試階段的目的是檢查軟體的執行是否滿足規格說明中的需求。為此,公開邀請自願者把一個現有的系統用Ada語言實現。作為交換這些志願者可以便用一個Ada語言測試翻譯器以及參加下列5個訓練班中的任一個:海軍研究生院學習班、空軍研究院學習班、西點軍校學習班、喬治亞技術學院訓練班及英國台丁頓國家物理實驗室訓練班。
1979年秋,高級語言工作組又建立了一個Ada語言配置控制委員會,以控制語言的任何變化。
至1979年11月,有15個國家提交了500多份語言報告。同月,高級語言工作組公布了 “石人”Ada語言環境需求方案,以作為Ada語言程式設計支持環境(APSE)的基礎。基於第三階段評審工作中制定的各種報告,Ada語言設計組據此報告糾正了初步設計中的不足。
1980年7月,經過修訂的Ada語言參考手冊交到高級語言工作組,同年8月獲得批淮,與此同時,David Fisher辭去高級語言工作組中擔任的職務,由Bill Carison接替。這標誌著語言設計和洲試工作的結束。
開發與維護階段
Ada語言的開發過程體現了世界各國兒千名計算機科學家的辛勤勞動和智慧,以至所有鄉加者的名單看起來就如同計算機界的名人錄。它不僅體現了現代軟體的開發原理,而且將這些原理付諸實現。它的誕生使我們有了一個能夠有效地建立軟體系統的統一的工具。
世界各國計算機科學界和軍事科學界一開始就對Ada語言的研製給予了十分的關注,並進行了廣泛的評淪和深入的研究。普遍認為Ada語言具有強類型、並行處理、異常處理、類民定義、信息隱藏等多種其他語言所不具備的特性,對改善軟體系統的清晰性、可靠性、有效性及可維護性提供了強有力的開發工具。它既適用於大型、實時、嵌入式系統,也適用於其他套用系統,既可用它開發系統軟體,又可用它開發套用軟體,紛紛預測,在20世紀末,Ada語言將成為世界範圍的通用語言。
Ada語宮棍序結構及其特點
Ada語言程式由基本程式單元組成,基本程式單元有四種類型;
子程式
它是這樣的單元:它的執行要由主程式調用引起。子程式有兩種形式,過程和函式,其差別在於,過程定義了要機器執行的一系列動作,而函式則定義了一個帶返回值的計算。
程式包
程式包定義了邏輯上相關的一組實體,如:它將一組相關的子程式從形式上封裝在一個程式包中,需要時又可以從程式包外面進行調用,這為程式單元的組織提供了很大的便利。
類屬程式單元
Ada語言是
強類型的,程式中的每一個數據類型必須預先說明。而Ada語言則提供了支持強類型特徵的類屬程式單元—類屬子程式或類屬程式包。
類屬單元定義了一個類型未經具體說明、通用的工作模組。該模組不能直接使用,但將其類型具體化後,就可像其他單元一樣被引用。這樣,一個類屬單元可很據不同的使用要求被實化為許多類型不同的程式單元,使大型程式的編制、修改變得更加容易。
任務
任務定義了一個可以與其他程式並行運行的程式單元。這種處理方式使得多個任務既可在多個處理器上同時運行,又可在單個處理器上交替運行。
Ada相關內容
1.Ada語言的研製是為擺脫軟體危機提出的,它的研製經歷了分析、需求定義、設計、測試、運行和維護五個階段。Ada語言本身沒有解決危機,但由於它為軟體工程實踐提供了一個良好的工具,利用它能使問題得到緩解。
2.Ada語言體現了現代軟體開發原理,是一個面向何題的語言。具有強類型、並行處理、異常處理、類屬定義、數據抽象、信息隱藏等多種其他語言所不具備的特性。所有這些強有力的功能使得它有可能代替現存的所有語言。因而有人預測:Ada語言將是自動程式設計語言到來前的最後一個語言。
Wegne:提出過一個公式.
成就=設計+實現+權勢+需要
Ada語言的崛起,就在於它在各方面都獲得了成功。
3.Aaa語言基本程式單元有子程式、程式包、類屬單元、任務等四種基本類型。其中子程式具有過程和函式兩種形式。
4.Ada語言程式要經過編輯、編譯、連線三個階段後才能運行。編輯的結果是生成可讀的源程式,即Ada語言程式,編澤的結果是將源程式翻譯成機器代碼漠塊,即目標碼模組,連線是將目標碼模組拼接成可執行程式,即命令程式。