版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
ZLLBeiHua第11章 程序設計語言與編碼
編碼——以詳細設計說明書為輸入,將該輸入用某種程序設計語言翻譯成計算機可以理解并最終可運行的代碼的過程。本章介紹程序設計語言的特點、發(fā)展和分類、開發(fā)時選擇程序設計語言的標準、編程質(zhì)量與程序設計語言的關系、編程標準和編程風格,最后簡單介紹目前程序設計的支持環(huán)境。ZLLBeiHua11.1程序設計語言——11.1.1特性及選擇
1.工程特性從軟件工程的觀點和程序設計語言的特性來說,進行軟件開發(fā)時要著重考慮軟件開發(fā)項目的需求,因此對程序編碼有如下要求:(1)可移植性指程序從一個計算機環(huán)境移植到另一個計算機環(huán)境的難易程度,計算機環(huán)境是指不同硬件、不同的操作系統(tǒng)版本。(2)開發(fā)工具的可利用性指軟件開發(fā)工具在縮短編碼時間,改進源代碼的質(zhì)量方面的能力。(3)軟件的可重用性指編程語言提供可重復使用的軟件成分的能力,如模塊化的程序可通過源代碼剪貼、使用繼承方式實現(xiàn)軟件重用。提供軟件重用性的程序設計語言可以大大提高源程序的利用率。(4)可維護性指將詳細設計轉(zhuǎn)變?yōu)樵闯绦虻哪芰蛯υ闯绦蜻M行維護的方便性。因此,將設計文檔轉(zhuǎn)化為源程序特性、源程序的可讀性和語言的文檔化特性對軟件的可維護性具有重大的影響。ZLLBeiHua11.1程序設計語言——11.1.1特性及選擇
2.技術特性
在確定了軟件需求之后,所選擇的語言的技術特性會對軟件工程的其余階段有一定的影響,因此要根據(jù)項目的特點選擇相應的語言。比如,有的要求實時處理能力強,有的要求對數(shù)據(jù)庫進行很方便的操作,有的要求能對硬件做一些操作。一般在軟件設計階段的設計質(zhì)量與語言的關系不大(面向?qū)ο笤O計除外),但在編碼階段,質(zhì)量往往受語言特點的影響,甚至可能會影響到設計階段的質(zhì)量。如面向?qū)ο蟮恼Z言可以提供抽象類、繼承等方法,JAVA會提供關于網(wǎng)絡設計方面的很多工具,而匯編語言可以直接對機器硬件進行操作。當選擇了一種語言,就可以影響到對概要設計和詳細設計的實現(xiàn)。語言的特性對于軟件的測試與維護也有一定的影響,支持結構化設計的語言有利于減少程序環(huán)路的復雜性,使程序易測試、易維護。ZLLBeiHua11.1程序設計語言——11.1.1特性及選擇
3.心理特性語言的心理特性指影響程序員心理的語言性能。程序的編寫最終要靠人來實現(xiàn),因此人的因素對程序的實現(xiàn)質(zhì)量有很大的影響。而程序語言的心理特點,主要是表現(xiàn)在編碼實現(xiàn)時對人的影響,包括對程序代碼的理解等。它在語言中的表現(xiàn)有以下幾個方面。(1)歧義性對于一個程序代碼,不同的人對它的意義有不同的解釋,這就是心理上的二義性。但是實際上編譯程序總是根據(jù)語法,按一種固定方法來解釋語句,不存在二義性。(2)簡潔性人們要掌握一種語言,就要記住語句的種類、各種數(shù)據(jù)類型、各種運算符、各種內(nèi)部函數(shù)和內(nèi)部過程,這些成分數(shù)量越多,簡潔性越差,人們越難以掌握。但過分簡潔會造成程序難以理解,一致性差。因此語言的簡潔必須有一個合適的度。(3)局部性和順序性程序語言的局部性是人的記憶的聯(lián)想方式的表現(xiàn)。(4)傳統(tǒng)性指人們在學習新的內(nèi)容時比較容易受到已有內(nèi)容的影響。而傳統(tǒng)性的表現(xiàn)影響人們學習新語種的積極性,若新語種的結構、形式與原來的類似,比較容易接受,若風格和設計思想差別很大,則在學習新的語言時,原有的語言知識會起到阻礙的作用。ZLLBeiHua11.1.2程序設計語言的選擇
為開發(fā)一個特定項目選擇程序設計語言時,必須從技術特性、工程特性和心理特性幾方面考慮。在選擇語言時,要從問題需求入手,確定它的要求是什么,以及這些要求的相對重要性,針對這種需求,需要什么特性的程序設計語言來實現(xiàn)。由于一種語言不可能同時滿足項目開發(fā)的各種需求,所以要對各種要求進行權衡,比較各種可用語言的適用程度,最后選擇認為是最適用的語言。選擇語言時,可以從以下幾個方面來考慮:ZLLBeiHua1.項目的應用領域項目應用領域是選擇語言的關鍵因素,有下列各種類型。1)科學工程計算該計算需要大量的標準庫函數(shù),以便處理復雜的數(shù)值計算,可供選用的語言有:(1)FORTRAN語言:是世界上第一個被正式推廣應用的計算機語言,產(chǎn)生于1954年,經(jīng)過FORTRAN0到FORTRAN4,又相繼擴展為FORTRAN77,F(xiàn)ORTRAN90,后來又陸續(xù)推出FORTRAN95、FORTRAN2003等更新版本,通過幾個版本不斷的更新,使它不僅面向科學計算,數(shù)據(jù)處理能力也很強。(2)Pascal語言:產(chǎn)生于19世紀60年代末,具有很強的數(shù)據(jù)和過程結構化的能力,它是第一個體現(xiàn)結構化編程思想的語言,由于該語言簡明、數(shù)據(jù)類型豐富、程序結構嚴謹,許多算法都用類Pascal來概括。用Pascal語言寫程序,也有助于培養(yǎng)良好的編程風格。(3)C語言:產(chǎn)生于20世紀70年代初,最初用于描述UNIX操作系統(tǒng)及其上層軟件,后來發(fā)展成具有很強功能的語言,支持復雜的數(shù)據(jù)結構,可大量運用指針,具有豐富靈活的操作運算符及數(shù)據(jù)處理操作符。還可以直接對位進行操作,程序運行效率高。(4)PL/1語言:是一個適用性非常廣泛的語言,能夠適用于多種不同的應用領域,但由于太龐大,難以推廣使用,目前,一些PL/1的子集被廣泛使用。(5)C++語言:支持面向?qū)ο蟮脑O計思想,支持繼承和多態(tài)性等概念,可以大大提高程序的重用性,是現(xiàn)代軟件設計的趨勢。11.1.2程序設計語言的選擇ZLLBeiHua1.項目的應用領域項目應用領域是選擇語言的關鍵因素,有下列各種類型。1)科學工程計算該計算需要大量的標準庫函數(shù),以便處理復雜的數(shù)值計算,可供選用的語言有:(1)FORTRAN語言:是世界上第一個被正式推廣應用的計算機語言,產(chǎn)生于1954年,經(jīng)過FORTRAN0到FORTRAN4,又相繼擴展為FORTRAN77,F(xiàn)ORTRAN90,后來又陸續(xù)推出FORTRAN95、FORTRAN2003等更新版本,通過幾個版本不斷的更新,使它不僅面向科學計算,數(shù)據(jù)處理能力也很強。(2)Pascal語言:產(chǎn)生于19世紀60年代末,具有很強的數(shù)據(jù)和過程結構化的能力,它是第一個體現(xiàn)結構化編程思想的語言,由于該語言簡明、數(shù)據(jù)類型豐富、程序結構嚴謹,許多算法都用類Pascal來概括。用Pascal語言寫程序,也有助于培養(yǎng)良好的編程風格。(3)C語言:產(chǎn)生于20世紀70年代初,最初用于描述UNIX操作系統(tǒng)及其上層軟件,后來發(fā)展成具有很強功能的語言,支持復雜的數(shù)據(jù)結構,可大量運用指針,具有豐富靈活的操作運算符及數(shù)據(jù)處理操作符。還可以直接對位進行操作,程序運行效率高。(4)PL/1語言:是一個適用性非常廣泛的語言,能夠適用于多種不同的應用領域,但由于太龐大,難以推廣使用,目前,一些PL/1的子集被廣泛使用。(5)C++語言:支持面向?qū)ο蟮脑O計思想,支持繼承和多態(tài)性等概念,可以大大提高程序的重用性,是現(xiàn)代軟件設計的趨勢。11.1.2程序設計語言的選擇ZLLBeiHua2)數(shù)據(jù)處理與數(shù)據(jù)庫應用數(shù)據(jù)處理與數(shù)據(jù)庫應用可供選用的語言如下:(1)COBOL語言:產(chǎn)生于20世紀50年代末,是廣泛用于商業(yè)數(shù)據(jù)處理的語言,它具有極強的數(shù)據(jù)定義能力,程序說明與硬件環(huán)境說明分開,數(shù)據(jù)描述與算法描述分開,結構嚴謹,層次分明,說明采用類英語的語法結構,可讀性強。(2)SQL語言:最初是為IBM公司開發(fā)的數(shù)據(jù)庫查詢語言,目前不同的軟件開發(fā)公司有不同的擴充版本,如20世紀80年代后期我國引入Informix_SQL,Microsoft的SQL可以方便地對數(shù)據(jù)庫進行存取管理。(3)4GL語言:稱為第4代語言,隨著信息系統(tǒng)的飛速發(fā)展,原來的第2代語言(如FORTRAN、COBOL)、第3代語言(如Pascal、C等)受硬件和操作系統(tǒng)的局限,其開發(fā)工具不能滿足新技術發(fā)展的需求,因此,在20世紀70年代末,提出了第4代語言的概念,4GL的主要特征是:①友好的用戶界面②兼有過程性和非過程性雙重特性③高效的程序代碼④完備的數(shù)據(jù)庫⑤應用程序生成器11.1.2程序設計語言的選擇ZLLBeiHua3)實時處理實時處理軟件一般對實時性能的要求很高,可選用的語言有:(1)匯編語言:是面向機器的,它可以完成高級語言無法滿足的特殊功能,如與外部設備之間的一些接口操作。(2)Ada語言:是美國國防部出資,在Pascal語言基礎上開發(fā)出來的,主要用于實時、并發(fā)和嵌入式系統(tǒng)的語言。它特別地支持程序的實時設計要求,包括多任務處理、中斷處理、任務間同步與通信等。到現(xiàn)在已經(jīng)發(fā)展成為安全、高效和靈活的面向?qū)ο蟮木幊陶Z言。4)系統(tǒng)軟件系統(tǒng)類軟件很多時候都需要同計算機的硬件打交道,因此在編寫操作系統(tǒng)、編譯系統(tǒng)等系統(tǒng)軟件時,可選用匯編語言、C語言、Pascal語言和Ada語言等。5)人工智能如果要完成專家系統(tǒng)、推理工程、語言識別、模式識別、知識庫系統(tǒng)、機器人視角及自然語言處理等和人工智能有關的系統(tǒng),可以選擇以下的幾種語言:(1)LISP(2)PROLOG11.1.2程序設計語言的選擇ZLLBeiHua3.軟件開發(fā)的環(huán)境良好的編程環(huán)境不但有效提高軟件生產(chǎn)率,同時能減少錯誤,有效提高軟件質(zhì)量。近幾年推出了許多可視化的軟件集成開發(fā)環(huán)境,特別是Microsoft公司的VisualBASIC、VisualC、VisualFoxPro及Borland公司的Delphi(面向?qū)ο蟮腜ascal)等,都提供了強有力的調(diào)試工具,幫助用戶快速形成高質(zhì)量的軟件。4.算法和數(shù)據(jù)結構的復雜性科學計算、實時處理和人工智能領域中的問題算法較復雜,而數(shù)據(jù)處理、數(shù)據(jù)庫應用和系統(tǒng)軟件領域內(nèi)的問題數(shù)據(jù)結構比較復雜,因此選擇語言時可考慮是否有完成復雜算法的能力,或者有構造復雜數(shù)據(jù)結構的能力。5.軟件開發(fā)人員的知識軟件開發(fā)人員原有的知識和經(jīng)驗對選擇編程語言也有很大的影響。一般情況下,軟件編程人員愿意選擇曾經(jīng)成功開發(fā)過項目的語言。新的語言雖然有吸引力,也會提供較多的功能和質(zhì)量控制方法,但軟件開發(fā)人員若熟悉某種語言,而且有類似項目的開發(fā)經(jīng)驗,往往愿選擇原有的語言。為了能選擇更好的適應項目的程序設計語言,開發(fā)人員應該經(jīng)常學習新的程序設計語言,掌握新技術。
11.1.2程序設計語言的選擇ZLLBeiHua11.2程序設計風格
開發(fā)軟件項目過程中,測試和維護都是很重要的一個階段。不論測試與維護,都必須要閱讀源程序。因此,閱讀程序是軟件開發(fā)和維護過程中的一個重要組成部分。因為對源程序中的變量和語句所表達的實際意義不了解,技巧性強的程序,讀程序的時間比寫程序的時間還要多,并且很難理解。程序員編碼過程中應培養(yǎng)和形成良好的編碼風格,這是編寫出易讀、易維護、高質(zhì)量程序的前提。程序設計風格指一個人編制程序時所表現(xiàn)出來的特點、習慣及邏輯思路等。一個公認的、良好的編程風格可以減少編碼的錯誤,減少讀程序的時間,從而提高軟件的開發(fā)效率。下面從幾個方面來闡述良好的編碼風格。ZLLBeiHua1.源程序文檔化編寫源程序文檔化的原則為:(1)標識符應盡量具有實際意義(2)程序應加注釋①說明每個模塊的用途、功能。②說明模塊的接口形式、參數(shù)描述及從屬模塊的清單。③該模塊的數(shù)據(jù)描述:特殊的數(shù)組或變量的說明、約束或其他信息。④開發(fā)歷史:指程序的編寫者、審閱者姓名及日期、修改說明及日期。功能性注釋嵌入在源程序內(nèi)部,說明程序段或語句的功能以及數(shù)據(jù)的狀態(tài)。加入功能性注釋的原則有以下幾點:①只給重要的、理解困難的程序段添加注釋,而不是每一行程序都要加注釋。②書寫上要注意形式,以便很容易區(qū)分注釋和程序。③修改程序時,要注意修改相應的注釋部分。11.2程序設計風格
ZLLBeiHua2.數(shù)據(jù)說明為了使數(shù)據(jù)定義更易于理解和維護,一般有以下的書寫原則:(1)數(shù)據(jù)說明順序應規(guī)范,將同一類型的數(shù)據(jù)書寫在同一段落中,從而有利于測試、糾錯與維護。例如按常量說明、類型說明、全程量說明及局部量說明順序。(2)當一個語句中有多個變量聲明時,將各變量名按字典順序排列,便于查找。(3)對于復雜的和有特殊用途的數(shù)據(jù)結構,要加注釋,說明在程序中的作用和實現(xiàn)時的特點。3.語句構造語句構造的原則為:簡單直接,使用規(guī)范的語言,在書寫上要減少歧義。不要一行多個語句,造成閱讀的困難。不同層次的語句采用縮進形式,使程序的邏輯結構和功能特征更加清晰。要避免復雜、嵌套的判定條件,避免多重的循環(huán)嵌套,一般嵌套的深度不要超過三層。表達式中多使用括號以提高運算次序的清晰度,不要簡單地依靠程序設計語言自身的運算符優(yōu)先級等。11.2程序設計風格
ZLLBeiHua4.輸入和輸出在編寫輸入和輸出程序時考慮以下原則:(1)輸入操作步驟和輸入格式盡量簡單,提示信息要明確,易于理解。(2)輸入一批數(shù)據(jù)時,盡量少用計數(shù)器來控制數(shù)據(jù)的輸入進度,使用文件結束標志。(3)應對輸入數(shù)據(jù)的合法性、有效性進行檢查,報告必要的輸入信息及錯誤信息。(4)交互式輸入時,提供明確可用的輸入信息。(5)當程序設計語言有嚴格的格式要求時,應保持輸入格式的一致性。5.效率效率一般指對處理機時間和存儲空間的使用效率,對效率追求要注意下面幾個方面:(1)效率是一個性能要求,需求分析階段就要對效率目標有一個明確的要求。(2)追求效率應該建立在不損害程序可讀性或可靠性基礎之上。(3)選擇良好的設計方法才是提高程序效率的根本途徑,設計良好的數(shù)據(jù)結構與算法,都是提高程序效率的重要方法。編程時對程序語句做調(diào)整是不能從根本上提高程序效率的。11.2程序設計風格
ZLLBeiHua
一個良好的工程系統(tǒng)的標準是要求各種資源的使用達到臨界狀態(tài)。而處理器的時間周期和內(nèi)存的利用通常被看做是臨界資源,而編碼則被看做是能節(jié)省出幾微秒或幾位的最后的地方。盡管效率是值得追求的目標,但是不能一味地追求效率而損害了程序的質(zhì)量。首先,效率是一種性能需求。因此在軟件需求分析階段就應該根據(jù)實際情況來規(guī)定。軟件效率只要滿足實際的要求就可以了,而不是越高越好。其次,一個良好的程序設計是提高效率的根本途徑。最后,要知道代碼效率與代碼的簡單性緊密聯(lián)系??傊灰獮榱俗非蠓潜匦璧男侍岣叨鵂奚a的清晰性、可讀性和正確性。
11.3程序設計效率
ZLLBeiHua11.3.1代碼效率
對代碼效率影響最大的是詳細設計階段所確定的算法的效率。除此之外,編碼風格也會影響運行速度和對內(nèi)存的需要,它的影響體現(xiàn)在以下幾個方面。(1)在進行編碼以前,應簡化算法中的算術表達式和邏輯表達式,使之顯得簡潔。(2)對嵌套循環(huán)仔細審查,在循環(huán)內(nèi)部的語句和表達式越少越好。(3)應盡量避免使用多維數(shù)組。(4)應盡量避免使用指針和復雜的列表。(5)采用效率高的算術運算。(6)要避免采用混合數(shù)據(jù)類型。(7)只要有可能,就應當采用占用內(nèi)存少的數(shù)據(jù)類型。ZLLBeiHua11.3.2內(nèi)存效率
由于硬件技術的發(fā)展,內(nèi)存的容量增加得很快,因此在現(xiàn)在的微機中,大多數(shù)程序都不用考慮內(nèi)存限制了。而虛擬內(nèi)存管理技術又為應用軟件提供了巨大的邏輯地址空間,在這種情況下,內(nèi)存效率不等于節(jié)約內(nèi)存。內(nèi)存效率必須注意考慮操作系統(tǒng)內(nèi)存管理的分頁特征,而根據(jù)代碼的局域性或通過結構化構造功能域的設計方法才是減少程序在運行時產(chǎn)生頻繁的頁面置換和提高內(nèi)存效率的最好辦法。雖然低成本、大容量的內(nèi)存芯片發(fā)展很快,但在嵌入式系統(tǒng)領域中,內(nèi)存限制仍是一個非常實際和不得不考慮的問題。如果系統(tǒng)需求要求最小內(nèi)存,那就得必須非常細心地對高級語言編譯后的目標代碼進行估算,甚至采用匯編語言。在嵌入式系統(tǒng)中,提高運行效率的技術往往會導致內(nèi)存的高效。例如,限制3維或4維數(shù)組的使用,不僅使得數(shù)組元素存取算法快,占用的內(nèi)存也少。因此,優(yōu)化算法才是內(nèi)存高效的關鍵。ZLLBeiHua11.3.3I/O效率
在計算機的運行中,有很大的一部分時間在處理I/O,它的效率也影響到程序的效率。一般有兩類I/O要考慮。(1)由人支配的I/O。(2)取決于其他設備(如磁盤或另一臺計算機)的I/O。以下幾個方面來提高I/O效率。(1)I/O要求的數(shù)量應當減至最小,比如將讀寫文件的功能合并,盡量一次完成。(2)所有I/O應當緩存,以減少過
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高新技術企業(yè)財務人員招聘合同
- 工業(yè)園區(qū)人行道鋪設合同
- 節(jié)日禮品快速分發(fā)外倉租賃合同
- 文化設施制造勞務合同樣本
- 特殊教育學校校長聘用合同
- 終止農(nóng)產(chǎn)品種植合同
- 幼兒園合作建校協(xié)議
- 建筑工程轉(zhuǎn)包合同樣式
- 橋梁加固用漆施工合同協(xié)議書
- 展覽館接待區(qū)吊頂裝修項目合同
- 軍事理論(2024年版)學習通超星期末考試答案章節(jié)答案2024年
- 二年級下冊混合計算題100道及答案
- DBJ∕T 15-19-2020 建筑防水工程技術規(guī)程
- 2025屆浙江省杭州市學軍中學生物高一第一學期期末統(tǒng)考試題含解析
- 互助資金管理辦法
- 青島版科學四年級下冊課程綱要
- 金葡素注射液與血小板功能的關聯(lián)
- 澳門的英文5篇
- 財富:2024年《財富》世界500 強排行榜
- NB/T 11434.5-2023煤礦膏體充填第5部分:膠凝材料技術要求
- NB-T32036-2017光伏發(fā)電工程達標投產(chǎn)驗收規(guī)程
評論
0/150
提交評論