Ada 語言簡介(轉(zhuǎn)自ADA IN CHINA)
發(fā)表時(shí)間:2023-07-31 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]-- 什么是 Ada ? --Ada是一種表現(xiàn)能力很強(qiáng)的通用程序設(shè)計(jì)語言,它是美國國防部為克服軟件開發(fā)危機(jī),耗費(fèi)巨資,歷時(shí)近20年研制成功的。它被譽(yù)為 第四代計(jì)算機(jī)語言的成功代表。與其他流行的程序設(shè)...
-- 什么是 Ada ? --
Ada是一種表現(xiàn)能力很強(qiáng)的通用程序設(shè)計(jì)語言,它是美國國防部為克服軟件開發(fā)危機(jī),耗費(fèi)巨資,歷時(shí)近20年研制成功的。它被譽(yù)為 第四代計(jì)算機(jī)語言的成功代表。與其他流行的程序設(shè)計(jì)語言不同,它不僅體現(xiàn)了許多現(xiàn)代軟件的開發(fā)原理,而且將這些原理付諸實(shí)現(xiàn)。因此,Ada語言的使用可大大改善軟件系統(tǒng)的 清晰性, 可靠性, 有效性, 可維護(hù)性。Ada是現(xiàn)有的語言中無與倫比的一種 大型通用程序設(shè)計(jì)語言,它是現(xiàn)代計(jì)算機(jī)語言的成功代表,集中反映了 程序語言研究的成果。 Ada的出現(xiàn),標(biāo)志著軟件工程成功地進(jìn)入了國家和國際的規(guī)模。在一定意義上說,Ada還刺破了“馮.偌依曼思維模式” (Von Newman Mind-set) 的桎梏,連同Ada的 支持環(huán)境(APSE)一起,形成了新一派的所謂 Ada文化。它是迄今為止 最復(fù)雜,最完備的軟件工具。 Ada語言是 美國國防部指定的 唯一的一種可用于 軍用系統(tǒng)開發(fā)的語言,我國軍方也將Ada做為軍內(nèi)開發(fā)標(biāo)準(zhǔn)(GJB 1383《程序設(shè)計(jì)語言Ada》)。
--------------------------------------------------------------------------------
-- 為什么稱作 Ada --
美國國防部之所以把這種語言取名為Ada,是為了紀(jì)念奧左斯特. 艾達(dá).洛夫萊斯伯爵夫人 (Augusta Ada Lovlace 1815-1852),她是英格蘭詩人拜倫(Byron)勛爵的女兒,曾對現(xiàn)代計(jì)算機(jī)技術(shù)之父查爾斯.巴貝奇(Charles Babage)的筆記,手稿進(jìn)行了整理和修正。從某種意義上說,她是世界上第一位計(jì)算機(jī)程序員。
--------------------------------------------------------------------------------
-- 為什么使用 Ada? --
在明白這個(gè)問題之前,需要了解 Ada 的一系列特性。Ada 最初設(shè)計(jì)就是一門大型語言,因此在很多編程的重要問題上都有所考慮,以下文字摘自《 Ada Reference Manual》:
Ada最初設(shè)計(jì)時(shí)關(guān)注于 3 個(gè)最重要的問題:程序的穩(wěn)定性和可維護(hù)性,程序設(shè)計(jì)和人的行為接近,并且高效。這份語言的修訂版是為了提供更大的靈活性和擴(kuò)展性,存儲管理的額外控制和同步,以及標(biāo)準(zhǔn)化的程序包以支持重要的應(yīng)用程序領(lǐng)域,同時(shí)保留原來的重點(diǎn):穩(wěn)定性,可維護(hù)性,和高效。對于程序設(shè)計(jì)語言促進(jìn)可靠性和簡化維護(hù)難度的需求已被確立。因此程序可讀性的重要性高于輕松地寫代碼。例如,語言規(guī)則要求程序變量應(yīng)當(dāng)明確聲明并指定它們的類型。由于變量的數(shù)據(jù)類型是不變的,編譯器可以確保對于變量的操作適用于該類型的對象。另外,有錯誤傾向的符號已經(jīng)避免,并且語言語法避免了編碼形式的使用,使更傾向于英語的結(jié)構(gòu)。最后,Ada 語言提供了程序單元單獨(dú)編譯的功能,使程序開發(fā)和維護(hù)簡便,同樣也提供了在一個(gè)單元內(nèi)多個(gè)單元之間的檢測?紤]人類程序員的問題也在設(shè)計(jì)時(shí)被強(qiáng)調(diào)。總而言之,在繼續(xù)避免過多復(fù)雜句型的缺陷的同時(shí),嘗試以一致系統(tǒng)的方式保持相對較少的底層概念。
上面的文字還是過分抽象,但 Ada 的以下特性幾乎是公認(rèn)的:
易讀性---專業(yè)人員往往要讀很多程序,因此要避免像 APL 那種以過于簡單的符號編程的語言,雖然它們的編程速度快,但基本上是不可讀的。因此目前有種說法是:讀一個(gè)程序比寫類似的程序還要費(fèi)時(shí),這也是有一定道理的;特別是 C/C++ 的風(fēng)格比較松散,很多語法都在濫用,使程序可讀性相當(dāng)?shù)停捎?Ada 的語法接近人的語言,即使是初學(xué)者,也不會感到很難讀懂。
強(qiáng)類型---保證了每個(gè)對象有明確定義的值域,并防止了不同概念的邏輯混淆。許多錯誤可以被編譯器發(fā)現(xiàn),而對于其它語言來說,則可能導(dǎo)致一個(gè)不正確的程序。
異常處理---實(shí)際中,一個(gè)程序不可能保證它的正確性;因此,通過異常機(jī)制及分塊結(jié)構(gòu),將錯誤發(fā)生的影響控制在某一特定領(lǐng)域。
抽象數(shù)據(jù)類型---將數(shù)據(jù)描述的細(xì)節(jié)同基于該類型數(shù)據(jù)的操作相分離,以提高可移植性和可靠性。
多任務(wù)---使程序變成一系類的并發(fā)活動,而不是單一的順序活動;這在很多領(lǐng)域,特別是對于服務(wù)器程序來說有重要意義,這比調(diào)用操作系統(tǒng)提供的功能更有易可移植性和可靠性。
類屬單元---很多情況下,程序的某邏輯部份與運(yùn)行時(shí)值的類型無關(guān)。因此,需要提供一種機(jī)制,從一個(gè)樣板中產(chǎn)生多個(gè)相應(yīng)的程序段,以提高代碼的可重用性。
大型編譯---封裝機(jī)制,單獨(dú)編譯及程序包的分層機(jī)制等對于編寫大規(guī)模的程序來說是必不可少的。
--------------------------------------------------------------------------------
-- 為什么 Ada 不流行? --
1) 一些知名人物狠批了 Ada一頓。Tony Hoare 在他的圖靈獎的演講中將 Ada 狠貶了一頓,從字面上說就是:如果我們使用 Ada,人類的前途將很危險(xiǎn)。但他的批評似乎有點(diǎn)過時(shí)了。他所說的多種將使地球上的生物完蛋的事物之一就是使用異常!雖然異常會被濫用,但這是所有語言特性共有的毛病,并且,現(xiàn)在,每個(gè)人似乎都認(rèn)為異常是一個(gè)很不錯的主意。Ada 在 1983 年以前沒有標(biāo)準(zhǔn)化,而 Hoare 的講話是在 1980 年。Ada 語言從 1980 的草案到 1983 年的最終版本,變化還是相當(dāng)大。Parnas, Dijkstra 也批評 Ada 語言,特別是它的規(guī)模,Hoare 的言論可能影響了 ACM 的投票人,以致在投票中反對 Ada 語言。
2) 大部份程序員還無法接受 Ada 的一些設(shè)計(jì)。如在程序運(yùn)行時(shí)發(fā)現(xiàn)錯誤,再用調(diào)試器去尋找和修正錯誤是編程的正常方法。他們不知道很多錯誤可以由編譯器檢測,并且,他們知道,沒必要這樣做,因?yàn)樾拚e誤相當(dāng)具有挑戰(zhàn)性,可以說有點(diǎn)有趣。因此,對于新特性的不解,也就將 Ada 貶了一頓。
3) 早期編譯器過分昂貴,并且編譯器(直至今天)很難實(shí)現(xiàn)。作為語言設(shè)計(jì)者,Jean Ichbiah 對于語言的具體實(shí)現(xiàn)關(guān)注不夠。(作為對比,Tucker 是編譯器程序員的語言設(shè)計(jì)者。)對此的明顯的一個(gè)回應(yīng)就是沒有便宜的編譯器(在 US$50 - US$100 之間)你能在家里的 PC 上運(yùn)行,所以沒人可體驗(yàn) Ada 語言。Ada 本就錯過了 PC 革命的大船,并且沒有可能和 Pascal,C 一樣有群眾基礎(chǔ)(因?yàn)檫@些語言相對來說實(shí)現(xiàn)較簡單,因此更加容易的存在) (更少的播放時(shí)間)。市場只選擇實(shí)用性,編譯器的成本比語言本身的質(zhì)量更加重要。這可能不是很明智的選擇,因?yàn)槿肆趧觼沓e所消耗的成本遠(yuǎn)大于編譯器,但因?yàn)樵跇I(yè)界這沒有度量標(biāo)準(zhǔn),決策制定者不知道這些。
4) 整個(gè)業(yè)界都致力于銷售彌補(bǔ) C 語言缺陷的軟件,如尋找內(nèi)存泄漏,類型錯誤等。像 Les Hatton 他們要維護(hù)自己的既得利益,這樣就要維護(hù)事情的原樣,因?yàn)樗麄兊纳?jì)依賴于那些使用錯誤較多的語言的人。當(dāng)你告訴他們,如果使用 Ada,他們可以扔掉其它工具時(shí),這些人不會站在你這邊,因?yàn)閷λ麄兌猿燥埍刃录夹g(shù)更重要。
5) Ada 83 沒有類型擴(kuò)展和動態(tài)聯(lián)編(type extension and dynamic binding),因此錯過了對象技術(shù)革命的船,而在80年代流行使用面向?qū)ο蟮恼Z言。當(dāng)時(shí),Smalltalk 是很流行的面向?qū)ο笳Z言,并且速度相當(dāng)慢,因?yàn)樗且婚T解釋性語言。令人傷心的是,很多人至今沒注意到這點(diǎn),并得出結(jié)論:面向?qū)ο蟪绦蛟O(shè)計(jì)使你的程序效率低下;這就壓制了包含面向?qū)ο筇匦缘酱_定性的實(shí)時(shí)語言中去的想法。(例如:在 SIGAda *今年*(1998) 有人打電話詢問,解釋說他是搞時(shí)實(shí)時(shí)系統(tǒng)的,他想明白他是否要擔(dān)心面向?qū)ο蟪绦蛟O(shè)計(jì)!有些謠言實(shí)在頑固。)
6)政府的管制。國防部對于 Ada 的開發(fā)介入比較多,其中有些做法令人比較不滿。同時(shí)掛著美國國防部名頭的語言,可能給人兩種感覺:1.出于對政府的不滿,將氣也出到 Ada 頭上,認(rèn)為 Ada 只是政府作的東西,不怎么樣;2.國防部的語言,跟我們這些民用程序程序沒什么關(guān)系?梢哉f,由于對于 Ada 的誤解,致使目前 Ada 還很不流行。