ADA 95教程 導言

2022-06-30 02:42:11 字數 3363 閱讀 8303

導言

歡迎來到ada95這個相對較新的程式語言的世界。儘管ada在過去曾被**授權用於某些專案,但該授權已被取消,ada是一種足夠強大的語言,基於其自身的優點,它將在市場上取得成功。

在2023年成功發布ada語言之後,成立了乙個標準委員會來審查該語言,並在必要時對其進行更新。自從ada最初發布以來,對於如何更好地構造**以提高效率和正確性的知識有了很大的增加,因此對ada語言進行了修改,以包含一些額外的知識。新標準於2023年完成並獲得批准,被稱為ada 95。原始語言通常被稱為ada 83,但兩者都可以適當地稱為ada。在本教程中,名稱ada或ada 95將交替使用,以指代ada 95,任何時候參考原始版本,名稱ada 83將明確指出。

ada是一種大型語言

就其本質而言,ada是一種比較難編譯的大型語言,因為它在編譯時進行了大量的檢查。據估計,乙個經過充分驗證的ada編譯器需要大約50人年的時間來編寫和除錯。這表明ada編譯器不會太多,也不會是小程式。此外,國防部要求任何稱為ada的實現都是乙個完整的系統。它必須包含ada規範的整個核心,但也可以包括定義為ada擴充套件的幾個附件中的任何乙個。更多關於這方面的內容將在本教程後面的部分中介紹。

由於ada語言的大小,本教程將分為兩部分。第1部分(ada入門)將介紹ada的大部分要點,並將以與pascal基本相同的方式指導您使用ada。如果您只完成了第1部分,您將能夠用ada編寫有用的程式,但是您將缺乏本教程第2部分(高階ada)中所涵蓋的ada高階功能的優雅。由於ada是一種大型的、靈活的語言,所以您最好完成本教程的兩個部分。

ada不僅僅是另一種語言

ada不僅僅是另一種程式語言,因為它體現了軟體工程的許多現代原理。例如,資訊隱藏的概念被設計到語言中,而不是作為程式設計技術來實現。ada也是為開發大型軟體系統而設計的,因此適用於包含數十萬甚至數百萬行源**的程式。很明顯,乙個人不可能在相當短的時間內編寫出這麼大的程式,需要團隊的努力才能完成。ada特別適合在團隊環境中使用。

本教程是如何編寫的?

一本好的參考手冊和一本好的教程是相互排斥的實體,一本參考手冊對於學習材料來說是糟糕的,而一本教程作為學習週期後的參考是非常糟糕的。本教程是作為乙個教程編寫的,沒有努力使它成為乙個參考手冊。因此,學生必須按照教程中給出的順序學習課程。正如本教程中所教的,許多新概念都使用了前面說明的概念,必須理解前面的概念,才能有效益地向前推進。

這些示例程式都是完整的程式,可以在任何計算機上用經過驗證的ada95編譯器編譯和執行。沒有乙個示例程式是片段,因此您面前有乙個完整的程式,其中包含執行每個新概念所需的所有**。庫命名已從ada83更改為ada95,因此在使用ada83編譯器時,本教程中很少有示例程式能夠無錯誤地編譯。ada83命名約定與ada95相容,但是我們覺得使用新的命名約定比使用舊的命名約定更好。

如果你沒有ada編譯器呢?

在每個示例程式的**之後,您將發現乙個結果列表,其形式為ada注釋,這些結果是通過使用經過驗證的ada編譯器執行程式獲得的。實際上,每個檔案使用了多達五種不同的編譯器,因此結果應該是可靠的。執行結果可以用於兩個目的之一,第乙個目的是檢查編譯器的輸出是否符合標準,第二個目的是在沒有ada編譯器的情況下給出執行結果。有時,您可能希望看到結果,而不需要實際執行編譯、鏈結、載入和執行步驟,因此在這些情況下,列出的輸出可以節省時間。

除了兩個旨在展示糟糕的程式設計實踐的程式外,每乙個示例程式都試圖說明良好的程式設計實踐。當您學習本教程中的示例程式時,您將通過觀察來發展良好的程式設計風格。

本教程是為誰編寫的?

本教程是針對兩組程式設計師,尤其是fortran專業人員編寫的,以及那些具有現代結構化語言(如pascal、c或c++)的專家。由於ada的規模和複雜性,乙個很少或沒有程式設計經驗的人在完成本教程的過程中會遇到相當大的困難,但是只要有足夠的耐心,即使是這個人也可以通過仔細學習本教程來學習ada。

第一組可能由成熟的程式設計師組成,他們已經在這個行業工作了很多年,並且有大量使用fortran的經驗。本文作者是這個小組的成員,2023年開始用fortran ii程式設計。有經驗的fortran程式設計師會發現資料型別的概念對程式語言來說是乙個新的、看起來很麻煩的補充,因此要仔細解釋這個概念的細節以及其他對他來說是新概念的概念。

第二組將由那些擁有現代結構化語言(如pascal)經驗的程式設計師組成,他們已經理解了資料型別的概念,但是發現ada的新新增完全是外來的。作者也是第二組的成員,在pascal、c和c++中程式設計了大約十五年,艾達在十一年前被新增到列表中。

你是哪一組?

如果你是乙個有經驗的fortran程式設計師,你幾乎需要每章中給出的所有細節,但是如果你是現代結構化語言學校的學生,你只需要其中一些章節中的一小部分細節,因此可以很快地閱讀它們。不過,需要注意的是,有些細節看起來很像帕斯卡,但實際上卻大不相同,因此仔細研究那些你已經精通的東西也是值得的。

有經驗的c程式設計師可能會對ada編譯器所要求的細節感到有點沮喪。你不會有你最喜歡的「技巧」來欺騙編譯器去做一些不尋常的事情。ada編譯器不能被愚弄。

計算機字型大小注釋

目前大多數通用計算機都使用32位字,因此預計大多數使用者將使用32位系統。因此,在本教程中涉及字數大小的部分,將假定為32位,執行結果將反映該大小。如果您使用的是乙個由16位組成的系統,或者任何其他大小的系統,那麼您應該很容易確定系統的正確結果。大多數重要的地方是我們討論某些型別的極限的地方。

程式設計練習

每一章的結尾都會給出乙個或多個程式設計練習,以供您參考和指導。每乙個練習的選擇都是為了鼓勵你在完成手頭的一章時練習你的新知識,並且應該在繼續下一章之前完成。如果你做這些練習,你將獲得寫ada的經驗,而不是簡單地讀ada,你的整體理解能力將大大提高。通過理解編譯過程中收到的編譯器錯誤訊息,您將獲得更多的知識。您可以放心,您將得到編譯器錯誤訊息。有些練習甚至告訴你嘗試一些東西,看看是否收到錯誤資訊。

你自己的練習

許多示例程式不產生任何輸出。這樣做是為了強迫您編寫一些輸出語句來檢視一些結果。你應該有目的地破壞一些程式,試圖做一些奇怪的事情,看看你是否理解文字中所包含的內容。本教程的初始要求之一,正如在本專案開始時所概述的,是所有示例程式都可以無錯誤地編譯。這使得演示一些編譯器檢查變得很困難,因此您可以自己檢視這些錯誤。如果錯誤是由您引入的,那麼編譯器錯誤訊息應該很容易被您破譯。請記住,程式設計練習的一些答案將有編譯或執行時錯誤。

推薦閱讀清單

建議按任意順序研究以下參考文獻。如果你打算認真學習ada,你應該有所有這些參考資料。

2.奈迪奇,大衛j.:「與ada95的神交」,約翰威利父子公司。這本書是優秀的初學者或學生與知識的ada 83希望公升級到ada 95他的知識。當資訊與ada95相關而與ada83無關時,本書非常小心地在文字的左邊空白處插入乙個小圖示,指出本書的哪些部分引用了ada95。

3.ada95參考手冊(arm);您的編譯器可能附帶了乙份arm的副本。arm的超文字版本目前可從以下**獲得;但是,由於web上的任何站點都會很快發生更改,因此此url也可能會更改。如果此**上沒有,請使用其中乙個搜尋引擎進行查詢。

4.ada95基本原理;基本原理的副本可能包含在編譯器中,但如果沒有,則可以在以下**上找到;

原英文版出處:

ADA 95教程 前置說明

請注意,完成本教程的第一部分將使學生能夠用ada編寫非常重要的程式,但完成第二部分將使學生能夠使用ada的所有功能。版本2.5 1998年2月1日 本教程作為共享軟體分發,這意味著您無需付費即可使用它。然而,作者花費了大量的時間和財力來開發本教程,並要求您以一種非常小的方式分擔經濟負擔,但前提是您認...

LINQ學習入門教程 導言

從今天開始就要開始學習linq了,這個是微軟最新的東西,現在園子裡也有很多的朋友作人寫這方面 的內容,都是哪麼的精美的文章啊。好久就著手學習了,可是沒有來得及把自己的文章寫出來與大家一起分享,今天有時間了給大一起分享自己所學到的東西,才這裡我將借住這強大的msdn,我園子朋友寫的文章作為參考一起學習...

艾達幣ADA錢包部署 初學著教程

1 建立使用者 非root使用者 aduser ada passwd ada gpasswd a ada root 將ada新增到root使用者組 chown r ada data chown r ada nix chown r ada etc chown r ada usr chown r ada...