這篇文章主要介紹“C++設計目標及原則是什么”,在日常操作中,相信很多人在C++設計目標及原則是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C++設計目標及原則是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

創(chuàng)新互聯(lián)長期為上千多家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為夏河企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站制作,夏河網(wǎng)站改版等技術服務。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
一. C++的設計目標(C++ Design Aims)
C++的設計目標,就是要讓C++既具有適合于系統(tǒng)程序設計的C語言所具有的可適應性和高效性,又能在其程序組織結(jié)構方面具有像Simula那樣的語言設施(Simula所支持的這種程序組織結(jié)構通常被稱為面向?qū)ο蟪绦蛟O計風格)。在設計的時候,還做了很大的努力,使得引借自Simula的高層次的程序設計技術能夠應用于系統(tǒng)程序設計之中。這即是說,C++所提供的抽象機制能夠被應用于那些對效率和可適應性具有極高要求的程序設計任務之中。
上述的C++之設計目標可以小結(jié)如下:
對于要解決實際問題的程序員而言,C++使程序設計變得更有樂趣;C++是一門通用目的的程序設計語言,它:
是一個更好的C;
支持數(shù)據(jù)抽象;
支持面向?qū)ο蟪绦蛟O計;
支持范型程序設計。
對范型程序設計的支持在C++設計的后期才被作為一個明確、獨立的目標來實現(xiàn)。而在C++演化過程的大部分時間里,我一直把范型程序設計以及支持它的語言特性劃歸在“數(shù)據(jù)抽象”的大標題之下。
二. C++的設計原則(Design Principles)
在[Stroustrup,1994]中,C++的設計規(guī)則被分為基本規(guī)則、基于設計的規(guī)則、語言的技術性規(guī)則以及基于低層次程序設計的規(guī)則四個方面,分列在下文中。
1. 基本規(guī)則(General rules)
A: C++的每一步演化和發(fā)展必須是由于實際問題所引起的;
B: C++是一門語言,而不是一個完整的系統(tǒng);
C: 不能無休止的一味追求***;
D: C++在其存在的“當時”那個時期必須是有用處的;
E: 每一種語言特性必須有一個有根據(jù)的、明確的實現(xiàn)方案;
F: 總能提供一種變通的方法;
G: 能為意欲支持的每一種程序設計風格提供易于理解的支持方法;
H: 不強制于人。
可以注意到,基本規(guī)則的***三條暗示了兩點:對適用于真實世界中各種應用的便捷工具的強調(diào);對程序員的技術和取向(偏好)的充分考慮。從一開始,C++面向的就是那些要做實際項目的程序員。所謂的“***”被認為是不可能達到的,這是由于C++用戶在需求、背景和待解決問題上存在著太大的不同。況且,在一門通用目的的程序設計語言的整個生存期之內(nèi),連對“***”一詞的詮釋都可能會有極大的改變。由此可知,在語言的演化過程中,來自用戶的反饋和語言實現(xiàn)者們積累的經(jīng)驗才是最為重要的。
2. 基于設計的規(guī)則(Design-support rules)
A: 支持良好的設計方案;
B: 提供用于程序組織的語言設施;
C: 心口如一(Say what you mean);
D: 所有的語言特性必須具有切實有效的承受能力;
E: 開啟一個有用的特性比避免所有的誤用更為重要;
F: 能將獨立開發(fā)的部件組合成完整的軟件。
C++的一個目標就是提供更易用并具有一定承受能力的設計思想和程序設計技術,進一步提高程序的質(zhì)量。這些技術中的絕大部分都源自Simula ,并通常被作為面向?qū)ο蟪绦蛟O計和面向?qū)ο笤O計思想來討論。然而,C++的設計目標總還是在于要支持一定范圍內(nèi)的各種程序設計風格和設計思想。這與一般在語言設計方面的觀點形成一定對比。一般在語言設計上總是試圖將所有系統(tǒng)內(nèi)建于單獨一個被重點支持的、帶有強制性的程序設計風格之中(或稱典范paradigm)。
3. 語言的技術性規(guī)則(Language-technical rules)
A: 與靜態(tài)型別系統(tǒng)(Static type system)沒有內(nèi)在的沖突;
B: 像對內(nèi)建(built-in)型別一樣對用戶自定義型別提供很好的支持;
C: 個異化(locality)行為是可取的;
D: 避免產(chǎn)生順序上的依賴關系;
E: 在對語言產(chǎn)生疑惑時,可以選取其特性中最易掌握的部分;
F: 可以因為不正當?shù)恼Z法使用而產(chǎn)生問題(Syntax matters (often in perverse ways))
G: 削弱對預處理器的使用。
當然,這些規(guī)則要具體結(jié)合更多關于基本目標的上下文環(huán)境來考慮。應該注意到的是,在“與C有較高的兼容性”、“不損失效率”以及“具有便捷的可用性來解決實際問題”這三個方面的要求,與在“完整的型別安全性”、“完全的通用性”以及“完善的抽象之美”這三個方面的要求形成對立。
C++從Simula中借鑒了用戶自定義型別和類層次機制。然而,在Simula及許多類似的語言中,其對用戶自定義型別的支持與其對內(nèi)建型別的支持存在著根本上的不同。例如,Simula中不允許在棧中為用戶自定義型別的對象分配空間,并且只允許通過指針(這在Simula中稱為引用——reference)來對這些對象進行訪問。而相反的,內(nèi)建型別的對象只在棧中被分配空間,不能在動態(tài)存儲區(qū)中分配,而且不能使用指針指向它。這種在對待內(nèi)建型別與對待用戶自定義型別上的差異,暗示著對效率問題的嚴格考慮。比如,當作為一個在動態(tài)存儲區(qū)中被分配的對象之引用時,如果該對象屬于自定義型別(比如complex),那么就會為運行期及空間帶來負荷;而這些負荷在有些應用中被認為是不可接受的。這些正是C++意欲涉足解決的問題。同時,在用法上的不同也決定了:不可能在范型程序設計中統(tǒng)一對待那些語義上近似的型別。
在維護一個較龐大的程序時,一個程序員不可避免的會基于某些不完整的知識來對程序作一些修改,只關注全部程序代碼中的一小部分。基于此,C++提供了class、namespace和訪問控制,使設計決策的各異化(locality)成為可能。
在基于一趟編譯(one-pass compilation)的語言中,某些順序上的依賴性是不可避免的。例如在C++中,一個變量或者函數(shù)在其被聲明之前是無法使用的。然而,C++中類成員的名字規(guī)則和重載解析(overload resolution)的規(guī)則還是在獨立于聲明順序的原則下被制定出來,以便將發(fā)生混亂和錯誤的可能性降至***。
4. 基于低層次程序設計的規(guī)則(Low-level programming support rules)
A: 使用傳統(tǒng)的(笨拙的)連接器(linker);
B: 與C語言不存在無故的不兼容性;
C: 不給C++之下層級的更低層語言留出余地(匯編語言除外);
D: 你不會為你所不使用的部分付出代價(零負荷規(guī)則);
E: 在產(chǎn)生疑惑時,能提供完全自主控制的途徑。
在C++的設計中只要在不嚴重影響其對強型別檢查(strong type checking)的支持的地方,都盡量做到與C的“source-link”方式相兼容。C++與C的兼容性使得C++程序員立刻就能有一個完整的語言和工具集可用。還有兩點也很重要,一是有大量關于C的高質(zhì)量的教學素材已經(jīng)存在,二是C++程序員可以利用C++與C的兼容性而直接并有效的使用大量現(xiàn)成的程序庫。在決定將C作為C++的基礎的時候,C還沒有像后來那樣出類拔萃、炙手可熱,所以在考慮這個問題的時候,與C語言所提供的可適應性和高效性相比,C語言的流行程度只是個次要的考慮因素。
然而,與C的兼容性也使得C++在某些語法和語義上保留了C的一些瑕疵之處。比如,C語言的聲明語法就實在遠不及優(yōu)美;而其內(nèi)建型別的隱式轉(zhuǎn)換規(guī)則也是混亂無章法的。還有另一個大問題,就是許多從C轉(zhuǎn)向C++的程序員并沒有認識到,代碼質(zhì)量上的顯著提高只能通過在程序設計風格上的顯著改變來達到。
到此,關于“C++設計目標及原則是什么”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)站題目:C++設計目標及原則是什么
URL分享:http://www.chinadenli.net/article2/piicic.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、網(wǎng)站改版、微信小程序、App設計、ChatGPT、品牌網(wǎng)站設計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)