- C++面向?qū)ο蟪绦蛟O(shè)計(第三版)
- 陳維興 林小茶
- 1444字
- 2019-10-25 14:55:28
1.2 面向?qū)ο蟪绦蛟O(shè)計的特點
1.2.1 面向過程程序設(shè)計的局限性
傳統(tǒng)的程序設(shè)計是面向過程的結(jié)構(gòu)化程序設(shè)計,其局限性至少有以下幾個方面:
1.面向過程程序設(shè)計開發(fā)軟件的生產(chǎn)效率低下
眾所周知,從1946年第一臺電子計算機問世以來,計算機的硬件已經(jīng)歷了四代變化,從電子管時代、晶體管時代、集成電路時代到大規(guī)模集成電路時代,其硬件性能取得了長足的發(fā)展,速度、容量等成倍地增長,而價格卻一直下降,并且計算機的硬件水平還在突飛猛進地發(fā)展著。但相比之下,軟件的生產(chǎn)能力還比較低下,開發(fā)周期長、效率低、費用不斷上升,以至出現(xiàn)了所謂的“軟件危機”。
硬件生產(chǎn)之所以效率高,一個重要原因就是,其生產(chǎn)方式已從當(dāng)初的分立元件一級的設(shè)計,發(fā)展到今天的芯片(超大規(guī)模集成電路)一級的設(shè)計。這就是說,硬件有大粒度的構(gòu)件,而且這些構(gòu)件有很好的重用性。于是,也就便于實現(xiàn)生產(chǎn)過程的工程化和自動化,生產(chǎn)效率自然也就提高了。
然而,盡管傳統(tǒng)的程序設(shè)計語言經(jīng)歷了第一代語言、第二代語言以及第三代語言的發(fā)展過程,但是其編制程序的主要工作還是圍繞著設(shè)計解題過程來進行的,故稱之為面向過程的程序設(shè)計,面向過程程序設(shè)計語言為過程性語言。這種程序設(shè)計的生產(chǎn)方式仍是采用較原始的方式進行,程序設(shè)計基本上還是從語句一級開始。軟件的生產(chǎn)中缺乏大粒度、可重用的構(gòu)件,軟件的重用問題沒有得到很好的解決,從而導(dǎo)致軟件生產(chǎn)的工程化和自動化屢屢受阻。
復(fù)雜性問題也是影響軟件生產(chǎn)效率的重要方面。傳統(tǒng)程序設(shè)計的特點是數(shù)據(jù)與其操作分離,而且對同一數(shù)據(jù)的操作往往分散在程序的不同地方。這樣,如果一個或多個數(shù)據(jù)的結(jié)構(gòu)發(fā)生了變化,那么這種變化將波及程序的很多部分甚至遍及整個程序,致使許多函數(shù)和過程必須重寫,嚴重時會導(dǎo)致整個軟件結(jié)構(gòu)的崩潰。隨著計算機技術(shù)的大規(guī)模推廣,軟件的應(yīng)用范圍越來越廣,軟件的規(guī)模越來越大,要解決的問題越來越復(fù)雜。面向過程程序設(shè)計的復(fù)雜性控制是一個很棘手的問題,這也是傳統(tǒng)程序難以重用的一個重要原因。
維護是軟件生命周期中的最后一個環(huán)節(jié),也是非常重要的一個環(huán)節(jié)。面向過程程序設(shè)計是面向過程的,其數(shù)據(jù)和操作相分離的結(jié)構(gòu),使得維護數(shù)據(jù)和處理數(shù)據(jù)的操作過程要花費大量的精力和時間,嚴重地影響了軟件的生產(chǎn)效率。
總之,要提高軟件生產(chǎn)的效率,就必須很好地解決軟件的重用性、復(fù)雜性和可維護性問題。但是面向過程程序設(shè)計是難以解決這些問題的。
2.面向過程程序設(shè)計難以應(yīng)付日益龐大的信息量和多樣的信息類型
隨著計算機科學(xué)與技術(shù)的飛速發(fā)展和計算機應(yīng)用的普及,當(dāng)代計算機的應(yīng)用領(lǐng)域已從數(shù)值計算擴展到了人類社會的各個方面,所處理的數(shù)據(jù)已從簡單的數(shù)字和字符發(fā)展為具有多種格式的多媒體數(shù)據(jù),如文本、圖形、圖像、影像、聲音等,描述的問題從單純的計算問題到仿真復(fù)雜的自然現(xiàn)象和社會現(xiàn)象。于是,計算機處理的信息量與信息類型迅速增加,程序的規(guī)模日益龐大,復(fù)雜度不斷增加。這些都要求程序設(shè)計語言有更強的信息處理能力。然而,面對這些龐大的信息量和多樣的信息格式,面向過程程序設(shè)計方法是無法應(yīng)付的。
3.面向過程程序設(shè)計難以適應(yīng)各種新環(huán)境
當(dāng)前,并行處理、分布式、網(wǎng)絡(luò)和多機系統(tǒng)等,已經(jīng)或?qū)⑹浅绦蜻\行的主流方式和主流環(huán)境。這些環(huán)境的一個共同特點是都具有一些有獨立處理能力的結(jié)點,結(jié)點之間有通信機制,即以消息傳遞進行聯(lián)絡(luò)。顯然傳統(tǒng)的面向過程程序設(shè)計技術(shù)很難適應(yīng)這些新環(huán)境。
綜上所述,面向過程程序設(shè)計不能夠滿足計算機技術(shù)迅猛發(fā)展的需要,軟件開發(fā)迫切需要一種新的程序設(shè)計范型的支持。那么,面向?qū)ο蟪绦蛟O(shè)計是否能擔(dān)當(dāng)此任呢?下面分析面向?qū)ο蟪绦蛟O(shè)計的主要優(yōu)點。
- Redis Applied Design Patterns
- 深度學(xué)習(xí)經(jīng)典案例解析:基于MATLAB
- 單片機C語言程序設(shè)計實訓(xùn)100例:基于STC8051+Proteus仿真與實戰(zhàn)
- Go語言高效編程:原理、可觀測性與優(yōu)化
- AngularJS深度剖析與最佳實踐
- Bootstrap 4 Cookbook
- Advanced Express Web Application Development
- Learning Node.js for .NET Developers
- 零基礎(chǔ)學(xué)C語言程序設(shè)計
- Instant Automapper
- Java 9 with JShell
- XML程序設(shè)計(第二版)
- Learning WordPress REST API
- 精益軟件開發(fā)管理之道
- PHP程序設(shè)計高級教程