• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            Ada語言(程序設(shè)計語言)

            更新時間:2025-12-15 22:13:16 閱讀: 評論:0

            Ada語言(程序設(shè)計語言)

            Ada語言 (程序設(shè)計語言) 次瀏覽 | 2022.11.21 19:51:37 更新 來源 :互聯(lián)網(wǎng) 精選百科 本文由作者推薦 Ada語言程序設(shè)計語言

            Ada是一種表現(xiàn)能力很強的通用程序設(shè)計語言,它是美國國防部為克服軟件開發(fā)危機,耗費巨資,歷時近20年研制成功的。它被譽為第四代計算機語言的成功代表。與其他流行的程序設(shè)計語言不同,它不僅體現(xiàn)了許多現(xiàn)代軟件的開發(fā)原理,而且將這些原理付諸實現(xiàn)。因此,Ada語言的使用可大大改善軟件系統(tǒng)的清晰性,可靠性,有效性,可維護性。Ada的出現(xiàn),標(biāo)志著軟件工程成功地進入了國家和國際的規(guī)模。

            中文名

            Ada語言

            特點

            可靠性、有效性、可維護性

            屬于

            通用程序設(shè)計語言

            相關(guān)語言

            通用程序設(shè)計語言

            簡介

            Ada的出現(xiàn),標(biāo)志著軟件工程成功地進入了國家和國際的規(guī)模。在一定意義上說,Ada還刺破了“馮.諾依曼思維模式”(Von Newman Mind-t)的桎梏,連同Ada的支持環(huán)境(APSE)一起,形成了新一派的所謂Ada文化。

            它是最復(fù)雜,最完備的軟件工具。Ada語言是美國國防部指定的唯一的一種可用于軍用系統(tǒng)開發(fā)的語言,我國軍方也將Ada做為軍內(nèi)開發(fā)標(biāo)準(GJB 1383《程序設(shè)計語言Ada》)。

            Ada屬于一種強類型通用程序設(shè)計語言,它比較適用于大型的復(fù)雜軟件系統(tǒng),尤其是實時和嵌入式系統(tǒng)。[1]美國國防部之所以把這種語言取名為Ada,是為了紀念奧左斯特.艾達.洛夫萊斯伯爵夫人(Augusta Ada Lovlace 1815-1852),她是英格蘭詩人拜倫(Byron)勛爵的女兒,曾對現(xiàn)代計算機技術(shù)之父查爾斯.巴貝奇(Charles Babage)的筆記,手稿進行了整理和修正。

            從某種意義上說,她是世界上第一位計算機程序員。

            用途

            在明白這個問題之前,需要了解Ada的一系列特性。Ada最初設(shè)計就是一門大型語言,因此在很多編程的重要問題上都有所考慮,以下文字摘自《Ada Reference Manual》:

            Ada最初設(shè)計時關(guān)注于3個最重要的問題:程序的穩(wěn)定性和可維護性,程序設(shè)計和人的行為接近,并且高效。這份語言的修訂版是為了提供更大的靈活性和擴展性,存儲管理的額外控制和同步,以及標(biāo)準化的程序包以支持重要的應(yīng)用程序領(lǐng)域,同時保留原來的重點:穩(wěn)定性,可維護性,和高效。對于程序設(shè)計語言促進可靠性和簡化維護難度的需求已被確立。

            因此程序可讀性的重要性高于輕松地寫代碼。例如,語言規(guī)則要求程序變量應(yīng)當(dāng)明確聲明并指定它們的類型。由于變量的數(shù)據(jù)類型是不變的,編譯器可以確保對于變量的操作適用于該類型的對象。另外,有錯誤傾向的符號已經(jīng)避免,并且語言語法避免了編碼形式的使用,使更傾向于英語的結(jié)構(gòu)。

            最后,Ada語言提供了程序單元單獨編譯的功能,使程序開發(fā)和維護簡便,同樣也提供了在一個單元內(nèi)多個單元之間的檢測。考慮人類程序員的問題也在設(shè)計時被強調(diào)。總而言之,在繼續(xù)避免過多復(fù)雜句型的缺陷的同時,嘗試以一致系統(tǒng)的方式保持相對較少的底層概念。

            特性

            Ada語言最早是針對嵌入式和實時系統(tǒng)設(shè)計的,并且在今天依然在這方面使用廣泛。Ada95版,是由INTERMETR ICS公司的塔克。塔夫特于92到95年間設(shè)計的,當(dāng)時主要是希望改進對于系統(tǒng),數(shù)字,財務(wù)軟件編程的支持。

            Ada語言的重要特征就是其嵌入式風(fēng)格,模塊化設(shè)計,編譯檢查,平行處理,異常處理及泛型編程。Ada在95年加入了對面向?qū)ο笤O(shè)計的支持,包括動態(tài)分配等。

            Ada的編譯檢查主要是針對沒有分配的內(nèi)存讀寫的保護,堆棧溢出錯誤,單個錯誤空閑,隊列讀寫錯誤以及其他可以避免的小問題。這些檢查可以在為增加效率的情況下被取消,但是在編譯的時候他們卻能帶來很高的效率。同樣它也包括對程序的嚴正的設(shè)置。因為這些原因,它被廣泛應(yīng)用于一些非常重要的系統(tǒng)中,例如航空電子學(xué),武器及航天飛行器的操作系統(tǒng)中。

            同樣它支持很多的編譯時間檢查,這些檢查被用來避免一些錯誤的發(fā)生。這種錯誤往往是在其他語言中在運行以前都不能被察覺到的,需要在源碼中加入特殊的檢查設(shè)置才能被發(fā)現(xiàn)。

            Ada的動態(tài)內(nèi)存管理非常安全和高規(guī)格,它類似于JAVA語言卻不同于C語言的。這種特殊功能并不需要特殊的運行設(shè)置。盡管這種語言的語意結(jié)構(gòu)允許對于不能讀寫的目標(biāo)進行自動的碎片搜集,但是大多數(shù)運行都不支持它。Ada卻支持有限形式基于區(qū)域的存儲管理。無效的讀寫常在運行時候被檢查出來(除非這種檢測被人為關(guān)閉)并且有時候在編譯時候就被發(fā)現(xiàn)。

            Ada語言的定義同國際標(biāo)準化組織(ISO)的標(biāo)準有很大不同,因為他是一個自由內(nèi)容形式的。這種做法的后果是被廣大程序員只能從它的標(biāo)準化文檔(普遍認為是Ada的參考使用手冊(ARM))尋找細節(jié)性的技術(shù)問題,但是普遍情況是一本標(biāo)準教科書卻可以在其他不同語言上使用。

            Ada語言由嚴格的巴斯特范式定義,但是不適合一般人閱讀。它是第一種同時擁有IEC/ISO/美國軍用標(biāo)準認證的語言。其編譯器經(jīng)過嚴格的審查,以確保同樣的代碼在任一編譯器上產(chǎn)生同樣的可執(zhí)行效果。并且保證并行性在代碼級可以在無操作系統(tǒng)下同樣運行。

            Ada語言最初設(shè)計是為了構(gòu)建長周期的、高度可靠的軟件系統(tǒng)。它提供了一系列功能來定義相關(guān)的數(shù)據(jù)類型(type)、對象(object)和操作(operation)的程序包(package)。程序包可以被參數(shù)化,數(shù)據(jù)類型可以被擴展以支持可重用庫的構(gòu)建。操作既可以使用方便的順序控制結(jié)構(gòu),通過子程序(subprogram)來實現(xiàn),也可以通過包含并發(fā)線程同步控制的入口(entry)來實現(xiàn)。

            Ada也支持單獨編譯(parate compilation),在物理層上支持模塊性。Ada包含了很復(fù)雜的功能以支持實時(real-time),并發(fā)程序設(shè)計(concurrent programming)。錯誤可以作為異常(exception)來標(biāo)示,并可以被明確地處理。

            Ada也復(fù)蓋了系統(tǒng)編程(system programming);這需要對數(shù)據(jù)表示和系統(tǒng)特性訪問的精確控制。最后,提供了預(yù)定義的標(biāo)準程序包,包括輸入輸出、字符串處理、數(shù)值計算的基本函數(shù)和隨機數(shù)生成來。

            特點易讀性

            專業(yè)人員往往要讀很多程序,因此要避免像APL那種以過于簡單的符號編程的語言,雖然它們的編程速度快,但基本上是不可讀的。因此目前有種說法是:讀一個程序比寫類似的程序還要費時,這也是有一定道理的;特別是C/C++的風(fēng)格比較松散,很多語法都在濫用,使程序可讀性相當(dāng)?shù)停捎贏da的語法接近人的語言,即使是初學(xué)者,也不會感到很難讀懂。

            強類型---保證了每個對象有明確定義的值域,并防止了不同概念的邏輯混淆。許多錯誤可以被編譯器發(fā)現(xiàn),而對于其它語言來說,則可能導(dǎo)致一個不正確的程序。

            異常處理

            實際中,一個程序不可能保證它的正確性;因此,通過異常機制及分塊結(jié)構(gòu),將錯誤發(fā)生的影響控制在某一特定領(lǐng)域。

            抽象數(shù)據(jù)類型

            將數(shù)據(jù)描述的細節(jié)同基于該類型數(shù)據(jù)的操作相分離,以提高可移植性和可靠性。

            多任務(wù)---使程序變成一系類的并發(fā)活動,而不是單一的順序活動;這在很多領(lǐng)域,特別是對于服務(wù)器程序來說有重要意義,這比調(diào)用操作系統(tǒng)提供的功能更有易可移植性和可靠性。

            類屬單元

            很多情況下,程序的某邏輯部份與運行時值的類型無關(guān)。因此,需要提供一種機制,從一個樣板中產(chǎn)生多個相應(yīng)的程序段,以提高代碼的可重用性。

            大型編譯---封裝機制,單獨編譯及程序包的分層機制等對于編寫大規(guī)模的程序來說是必不可少的。

            一個Ada語言編寫的"你好世界"Hello world program程序:

            withAda.Text_IO;

            procedureHello isbegin

            Ada.Text_IO.Put_Line("Hello, world!");

            end Hello;

            在Ada.Text_IO.Put_Line處有一些快捷圖標(biāo),不需要很多的文字輸入,但是對于這里的理解來講并沒有多大意義。

            細節(jié)性的問題請參考Ada Programming/Basic。

            關(guān)于阿利亞納五號的失敗

            一個普遍的關(guān)于歐洲航天局阿利亞納五號火箭失敗的說法是因為Ada語言在編譯過程的檢查失敗導(dǎo)致的。將大的浮點數(shù)轉(zhuǎn)換成整數(shù)是一種常見的程序錯誤來源。1996年6月3日,對于Ariane 5火箭的初次航行來說,這樣一個錯誤產(chǎn)生了災(zāi)難性的后果。發(fā)射后僅僅37秒,火箭偏離它的飛行路徑,解體并爆炸了。火箭上載有價值5億美元的通信衛(wèi)星。6億美元付之一炬。

            后來的調(diào)查顯示,控制慣性導(dǎo)航系統(tǒng)的計算機向控制引擎噴嘴的計算機發(fā)送了一個無效數(shù)據(jù)。失事調(diào)查報告指出,火箭爆炸是因為:During execution of a data conversion from 64-bit floating point to 16-bit signed integer value, the floating point number which was converted had a value greater than what could be reprented by a 16-bit signed integer. This resulted in an Operand Error.

            它沒有發(fā)送飛行控制信息,而是送出了一個診斷位模式,表明在將一個64位浮點數(shù)轉(zhuǎn)換成16位有符號整數(shù)時,產(chǎn)生了溢出。溢出值測量的是火箭的水平速率,這比早先的Ariane 4火箭所能達到的高出了5倍。

            在設(shè)計阿利亞納4火箭的軟件時,他們小心地分析了數(shù)字值,并且確定水平速率絕不會超出一個16位的數(shù)。不幸的是,他們在阿利亞納5火箭的系統(tǒng)中簡單地重新使用了這一部分,而沒有檢查它所基于的假設(shè)。Ada代碼如下:

            beginnsor_get(vertical_veloc_nsor);nsor_get(horizontal_veloc_nsor); vertical_veloc_bias := integer(vertical_veloc_nsor);horizontal_veloc_bias := integer(horizontal_veloc_nsor); ... exceptionwhen numeric_error => calculate_vertical_veloc();when others => u_irs1(); end;

            宏語言

            Ada語言自身并不支持宏。但是強大的GCC卻同樣的可以為Ada語言提供宏支持。我們可以使用GCC預(yù)處理程序CPP來先進行對包含宏的源文件進行處理,輸出到文件,然后將該輸出文件讀取并除去以#開頭的行即獲得了標(biāo)準的Ada代碼。

            CPP命令:CPP SOURCE_FILE RECORD_FILE

            接著需要自己寫一個處理程序來去除CPP輸出文件中的#開頭的行。

            文件讀取函數(shù):type LPSTR is access all string;

            Load a file by file-name into memory,return pointer

            function Load(fn:in string) return LPSTR is

            u ada.streams;

            u ada.streams.stream_io;

            type LPSEA is access all STREAM_ELEMENT_ARRAY;

            PRAGMA WARNINGS(OFF);

            function UC is new ada.unchecked_conversion(LPSEA,LPSTR);

            PRAGMA WARNINGS(ON);

            FILE:FILE_TYPE;

            SIZE:COUNT;

            DATA:LPSEA:=NULL;

            begin

            open(FILE,IN_FILE,fn);

            SIZE:=STREAM_IO.SIZE(FILE);

            DATA:=NEW STREAM_ELEMENT_ARRAY(1..STREAM_ELEMENT_OFFSET(SIZE));

            READ(FILE,DATA.ALL,STREAM_ELEMENT_OFFSET(SIZE));

            CLOSE(FILE);

            RETURN UC(DATA);

            exception when NAME_ERROR=>

            GNAT.IO.PUT_LINE("Error : Can not find the file: "&fn);

            return null;

            end Load;

            去除#行函數(shù):函數(shù)將指定文件名文件讀出,除去#行并輸出到指定文件名。

            with ada.streams.stream_io; u ada.streams.stream_io;

            with ada.unchecked_deallocation;

            procedure clear(input_file:in string;output_file:in string) is

            src:lpstr:=load(input_file);

            procedure Free is new ada.unchecked_deallocation(string,LPSTR);

            file:ada.streams.stream_io.file_type;

            stream:ada.streams.stream_io.stream_access;

            i:integer:=0;

            begin

            if src/=null then

            loop

            i:=i+1;

            if src(i)='#' then

            loop

            src(i):=' ';

            i:=i+1;

            exit when i>src'last or src(i)=ASCII.LF;

            end loop;

            end if;

            exit when i>=src'last;

            end loop;

            create(file,out_file,output_file);

            stream:=ada.streams.stream_io.stream(file);

            string'write(stream,SRC.all);

            clo(file);

            Free(SRC);

            end if;

            end clear;

            在經(jīng)過除去#行獲得最終處理過的文件后即可交由GNAT編譯了。

            參考資料

            本文發(fā)布于:2023-06-02 04:07:21,感謝您對本站的認可!

            本文鏈接:http://www.newhan.cn/zhishi/a/92/190187.html

            版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除。

            本文word下載地址:Ada語言(程序設(shè)計語言).doc

            本文 PDF 下載地址:Ada語言(程序設(shè)計語言).pdf

            標(biāo)簽:語言   程序設(shè)計語言   Ada
            相關(guān)文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網(wǎng)旗下知識大全大全欄目是一個全百科類寶庫! 優(yōu)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 公天天吃我奶躁我的在线观看| 中国熟妇毛多多裸交视频| 国产欧美综合在线观看第十页| 精品无码一区二区三区的天堂| 啦啦啦啦在线视频免费播放6| 男女真人国产牲交a做片野外| 成人国产精品视频频| 国产精品毛片一区二区| 人妻少妇偷人一区二区| 欧美国产综合视频| 免费看婬乱a欧美大片| 中文文字幕文字幕亚洲色| 成全影院电视剧在线观看| 精品无码国产不卡在线观看| 亚欧成人精品一区二区乱| 91毛片网| 免费无码又爽又刺激网站直播| 午夜福利波多野结衣人妻| 日本乱码在线看亚洲乱码| 亚洲日本韩国欧美云霸高清| 久久亚洲日本不卡一区二区| 成av人电影在线观看| 亚洲一区久久蜜臀av| 自拍视频在线观看成人| 久久久一本精品99久久精品66直播 | 99RE6在线观看国产精品| 国产理论精品| 熟妇无码熟妇毛片| 四虎www永久在线精品| 97欧美精品系列一区二区| 国产精品麻豆成人AV电影艾秋| 少妇性bbb搡bbb爽爽爽欧美| 色偷偷久久一区二区三区| 日本高清一区二区不卡视频 | 免费人成在线观看网站| 国内a级毛片| 黄色特级片一区二区三区 | 亚洲第一国产综合| 三年片大全| 广东少妇大战黑人34厘米视频 | 国产亚洲精品久久久久久久软件 |