更好的設(shè)計面向?qū)ο蟮腃++語言
C++語言以其獨特的語言機制在計算機科學的各個領(lǐng)域中得到了廣泛的應(yīng)用,C語言簡潔、高效,但是C語言也有其自身的缺點,例如弱的類型檢查機制等,使得使用C語言開發(fā)大型的應(yīng)用程序比較困難。
面向?qū)ο蟮脑O(shè)計思想是在原來結(jié)構(gòu)化程序設(shè)計方法基礎(chǔ)上的一個質(zhì)的飛躍,C++***地體現(xiàn)了面向?qū)ο蟮母鞣N特性。剛開始形成的是c語言,那些想建立更快更有效的代碼的程序員非常欣賞c語言,有一位名叫bjarne stroustrup的人卻不滿足于僅僅是生產(chǎn)快速代碼,他想創(chuàng)建面向?qū)ο蟮腸語言編程。他開始對c語言的內(nèi)核進行必要的修改,使其能滿足面向?qū)ο竽P偷囊蟆?FONT>C++從此產(chǎn)生。
bjarne stroustrup是C++的最初設(shè)計者和實現(xiàn)者。它自誕生以來,經(jīng)過開發(fā)和擴充已成一種完全成熟的編程語言?,F(xiàn)在C++已由ansi、bsi、din、其他幾個國家標準機構(gòu)和iso定為標準。iso標準于1997年11月4日經(jīng)投票正式通過。
C++標準演變了許多年。C++模板是近幾年來對此語言的一種擴展,模板是根據(jù)類型參數(shù)來產(chǎn)生函數(shù)和類的機制,有時也稱模板為“參數(shù)化的類型”。使用模板,可以設(shè)計一個對許多類型的數(shù)據(jù)進行操作的類,而不需要為每個類型的數(shù)據(jù)建立一個單獨的類。標準模板庫(standard tempalte library,stl )和微軟的活動模板庫(active tempalte library,atl )都基于這個C++語言擴展。#t#
C++標準可分為兩部分, C++語言本身和C++標準庫。C++標準庫對于visual C++是相當新的,實際上微軟只是在發(fā)布visual C++ 5.0時去除了一些“bug”。標準庫提供了標準的輸入/輸出、字符串、容器(如矢量、列表和映射等)、非數(shù)值運算(如排序、搜索和合并等)和對數(shù)值計算的支持。應(yīng)該說, c/C++包含了相對少的關(guān)鍵字,而且很多最有用的函數(shù)都來源于庫,C++標準庫實現(xiàn)容器和算法的部分就是stl。
stl是數(shù)據(jù)結(jié)構(gòu)和算法的一個框架,數(shù)據(jù)結(jié)構(gòu)包括矢量、列表和映射等,算法包括這些數(shù)據(jù)結(jié)構(gòu)的查找、拷貝和排序等。1994年7月,ansi/iso C++標準委員會投票決定接受stl為C++標準庫的一部分,這個建議是根據(jù)alex stepanov、meng lee和david musser這三人的編程和軟件庫研究提出的。stl的產(chǎn)生是為了滿足通用性的設(shè)計目標,而不是為了提高性能。
那么微軟對C++標準的態(tài)度怎什么樣?微軟運行vC++與plum-hall C++,想比較得到的分數(shù)在92%和93%之間。為什么不是100%的一個原因是跟蹤這個標準并同時建立一個編譯器比較困難,微軟也考慮了對現(xiàn)有編碼兼容的重要性,有時他們不得不偏離標準以保持這個兼容性。
C++的發(fā)展
***階段從80年代到1995年。這一階段C++語言基本上是傳統(tǒng)類型上的面向?qū)ο笳Z言,在工業(yè)界使用的開發(fā)語言中占據(jù)了相當大份額;
第二階段從1995年到2000年,這一階段由于標準模板庫(STL)和后來的Boost等程序庫的出現(xiàn),泛型程序設(shè)計在C++中占據(jù)了越來越多的比重性;
第三階段從2000年至今,由于產(chǎn)生式編程和模板元編程的出現(xiàn),C++出現(xiàn)了發(fā)展歷史上又一個新的高峰,使C++已經(jīng)成為當今主流程序設(shè)計語言中最復(fù)雜的一員。
一,算法研究,注重理論研究和基層編程技能的積累。多參加編程競賽。
二,學習j2ee或者c#,同時了解數(shù)據(jù)庫應(yīng)用。
三,網(wǎng)絡(luò)編程,做網(wǎng)頁,熟悉網(wǎng)頁三劍客,無論哪個劍客學到無敵了,都是前途無量,還要熟悉相關(guān)的網(wǎng)頁開發(fā)工具。
應(yīng)該有充分的理由使用C++創(chuàng)建服務(wù)器組件,而不只是為了給上司一個好印象才使用C++。如果以前沒用過C++,你必須要盡力學習。
1. 性能
性能有個兩方面,算法速度和機器代碼效率。一個算法可以定義為數(shù)據(jù)通過系統(tǒng)的概念化的路徑,它描述一些點,在這些點上,數(shù)據(jù)能夠被操作并可轉(zhuǎn)換產(chǎn)生某個結(jié)果。例如,一個算法定義為獲取一個字符串,計算字符串中的字符個數(shù),并作為結(jié)果返回的過程。算法與
語言是獨立的,所以在編程之前必須設(shè)計算法,編寫一個快速程序的***個步驟是設(shè)計良好的算法,能以最少的操作步驟得出問題的答案。第二個步是選擇語言,這也影響程序的速度。
從性能的角度考慮,用匯編語言編寫程序是***的選擇,它是計算機能理解的自然語言。但是,幾乎沒有人用匯編語言編寫完整的程序,因為這樣做極其乏味。另一個***的選擇是c語言。然而,由C++語言提供的所有工具都產(chǎn)生C++,而不是c。使用C++的向?qū)Э梢陨纱罅康氖褂么a,而不必人工地編寫代碼。從編寫程序的難易程度和程序的性能綜合考慮, C++是***的選擇。
C++性能良好,因為它被編譯為機器代碼。對于vbscript和java等語言,代碼在運行時由程序解釋,而且每次運行程序時都要將代碼轉(zhuǎn)換為機器碼,這樣做效率比較低,不僅僅是已編譯過的C++程序運行得較快。
而且微軟C++語言已存在多年。這意味著微軟的編譯器程序員已經(jīng)把許多優(yōu)點集中到編譯器上,以致于它能產(chǎn)生非常高效的機器碼。因為C++是編譯語言,而且非常自然,比vb更接近機器代碼,所以由C++編譯器產(chǎn)生的代碼一定比vb的編譯代碼效率更高。