當前位置:編程學習大全網 - 編程語言 - 學習C++有什麽用途?

學習C++有什麽用途?

C++概述 子語言 語言發展 C++入門 C++的設計原則 C++的Hello World程序 C++程序員的數量 C++語言的應用 C++編程技巧 C++的集成開發環境 C++著作 C++概述子語言語言發展C++入門C++的設計原則C++的Hello World程序C++程序員的數量C++語言的應用C++編程技巧C++的集成開發環境C++著作

c++ [編輯本段]C++概述  C++這個詞在中國大陸的程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,“CPP”。 它是壹種使用非常廣泛的計算機編程語言。C++是壹種靜態數據類型檢查的,支持多重編程範式的通用程序設計語言。它支持過程化程序設計、數據抽象、面向對象程序設計、制作圖標等等泛型程序設計等多種程序設計風格。

C++發展歷史簡單介紹

C語言之所以要起名為“C”,是因為它是主要參考那個時候的壹門叫B的語言,它的設計者認為C語言是B語言的進步,所以就起名為C語言;但是B語言並不是因為之前還有個A語言,而是B語言的作者為了紀念他的妻子,他的妻子的第壹個字母是B; 當C語言發展到頂峰的時刻,出現了壹個版本叫C with Class,那就是C++最早的版本,在C語言中增加class關鍵字和類,那個時候有很多版本的C都希望在C語言中增加類的概念;後來C標準委員會決定為這個版本的C起個新的名字,那個時候征集了很多種名字,最後采納了其中壹個人的意見,以C語言中的++運算符來體現它是C語言的進步,所以就叫C++,也成立了C++標準委員會;

美國AT&T貝爾實驗室的本賈尼·斯特勞斯特盧普(Bjarne Stroustrup)博士在20世紀80年代初期發明並實現了C++(最初這種語言被稱作“C with Classes”)。壹開始C++是作為C語言的增強版出現的,從給C語言增加類開始,不斷的增加新特性。虛函數(virtual function)、運算符重載(operator overloading)、多重繼承(multiple inheritance)、模板(template)、異常(exception)、RTTI、名字空間(name space)逐漸被加入標準。1998年國際標準組織(ISO)頒布了C++程序設計語言的國際標準ISO/IEC 1488-1998。C++是具有國際標準的編程語言,通常稱作ANSI/ISO C++。1998年是C++標準委員會成立的第壹年,以後每5年視實際需要更新壹次標準,下壹次標準更新將是在2009年,目前我們壹般稱該標準C++0x。遺憾的是,由於C++語言過於復雜,以及他經歷了長年的演變,直到現在(2009年)只有Visual C++ 2010 CTP開發環境的編譯器完全符合這個標準。

另外,就目前學習C++而言,可以認為他是壹門獨立的語言;他並不依賴C語言,我們可以完全不學C語言,而直接學習C++。根據《C++編程思想》(Thinking in C++)壹書所評述的,C++與C的效率往往相差在正負5%之間。所以有人認為在大多數場合C++ 完全可以取代C語言(然而我們在單片機等需要謹慎利用空間、直接操作硬件的地方還是要使用C語言)。 [編輯本段]子語言  根據Effective C++第三版第壹條款的描述,現在C++由以下四個“子語言”組成:

1、C子語言。C++支持C語言的幾乎全部功能,在語法上與C語言僅有極微妙的差別(如括號表達式的左右值性,具體請參考C++標準文獻)。

2、面向對象的C++。C++首先作為壹門面向對象的語言而聞名,這個特點在這裏不再詳述。

3、泛型編程語言。C++強大(但容易失控的)模板功能使它能在編譯期完成許多工作,從而大大提高運行期效率。

4、STL(C++標準模板庫)。隨著STL的不斷發展,它已經逐漸成為C++程序設計中不可或缺的部分,其效率可能比壹般的naive代碼低些,但是其安全性與規範性使它大受歡迎。 [編輯本段]語言發展  C++語言發展大概可以分為三個階段:第壹階段從80年代到1995年。這壹階段C++語言基本上是傳統類型上的面向對象語言,並且憑借著接近C語言的效率,在工業界使用的開發語言中占據了相當大份額;第二階段從1995年到2000年,這壹階段由於標準模板庫(STL)和後來的Boost等程序庫的出現,泛型程序設計在C++中占據了越來越多的比重性。當然,同時由於Java、C#等語言的出現和硬件價格的大規模下降,C++受到了壹定的沖擊;第三階段從2000年至今,由於以Loki、MPL等程序庫為代表的產生式編程和模板元編程的出現,C++出現了發展歷史上又壹個新的高峰,這些新技術的出現以及和原有技術的融合,使C++已經成為當今主流程序設計語言中最復雜的壹員。 [編輯本段]C++入門  C++是壹種語言,僅僅是它的語法、特性、標準類庫就已經是壹門非常高深的課程,所以在開始學習的時候,必須先要打好基礎。在市面上有很多Visual C++的書,雖然其中可能會花1-2章來介紹C++的基本特性,但是那絕對不會讓妳入門。因此,初學者學習C++應該選擇針對C++語言本身的書籍,而不能是針對Visual C++、MFC或者Windows API的。

學習C++應該由易至難,循序漸進。以前經常有人說學習C++之前應該學習C語言。事實上那不是必須的,C++和C語言雖然有關系,但仍然是兩種不同的語言。當然,在學習C++之前學習過其他編程語言是很有好處的。那會使學習C++的速度更快,畢竟很多計算機語言的概念都是相通的。而對於零基礎的初學者來說,則是應該靜下心來,不要急躁。要成為C++的高手,不是那麽容易的,必須要花很大的努力。

從入門教材的選擇上,主要看學習者的自身情況。如果已經有過學習高級語言的經歷,那麽推薦使用譚浩強的《C++程序設計》。註意是04年版的,06年版的那本書是閹割版,上來就面向對象。雖然說C和C++是相似的,但是前面已經說了,C和C++應該作為兩種語言來學習,所以06年的那本內容就稍微欠缺壹點了。譚浩強04版的這本書內容比較規整的,條理也很清晰。如果有過其他高級語言的基礎,那麽估計半年就能對C++的概況有個了解了。譚浩強老師的書已經成為了全國各大高等院校的教科書,是比較受到認可的。

如果是從零基礎開始學C++,那麽推薦使用潘嘉傑的《易學C++》。這本書是2008年出的新書,聽說是個學生在讀書的時候寫的。這本書網上有下載免費的電子版。。這本書主要就是針對初學者的,講得也比較生動有趣,比較提得起學習的興趣。所以沒有基礎的初學者選這本書也是不錯的,就是想要很快成為高手,可能看這本書還不夠。

至於看完入門的書之後,就應該看壹些高層次的書了。比如The C++ Programming Language和C++ Primer,同時也可以向STL、MFC、API等各個方向發展。如果對別的語言感興趣,還能去看看C#和Java,它們和C++從語法和很多概念上都是類似的。 [編輯本段]C++的設計原則  ?6?1 C++設計成靜態類型、和C同樣高效且可移植的多用途程序設計語言。

6?1 C++設計成直接的和廣泛的支援多種程序設計風格(程序化程序設計、資料抽象化、面向對象程序設計、泛型程序設計)。

6?1 C++設計成給程序設計者更多的選擇,即使可能導致程序設計者選擇錯誤。

6?1 C++設計成盡可能與C兼容,籍此提供壹個從C到C++的平滑過渡。

6?1 C++避免平臺限定或沒有普遍用途的特性。

6?1 C++不使用會帶來額外開銷的特性。

6?1 C++設計成無需復雜的程序設計環境。

出於保證語言的簡潔和運行高效等方面的考慮,C++的很多特性都是以庫(如STL)或其他的形式提供的,而沒有直接添加到語言本身裏。關於此類話題,C++之父的《C++語言的設計和演化》 裏做了詳盡的陳述。 [編輯本段]C++的Hello World程序  在使用兼容C89標準(也稱為ANSI C)的編譯器時,下面這個程序顯示“Hello, world!”然後結束運行:

(事實上這並不是符合98標準[ISO C++]的C++程序,而且在多數編譯器上這個程序也不能運行,若要在比較舊的編譯器上編譯該程序,應將iostream改為iostream.h)

#include <iostream>

int main()

{

printf("Hello, world!\n");

return 0;

}

在使用兼容C++98標準(ISO/IEC 14882-1998)的編譯器時,下面的程序也是可以的:

#include <iostream.h>

int main()

{

cout << "Hello, world!" << endl;

return 0;

}

在使用兼容C++ STL的編譯器時,應當是:

#include <iostream>

using namespace std;

int main()

{

cout<<"Hello,world!"<<endl;

return 0;

}

根據ISO C++的規定,main函數的形式只能是

int main(void)

{

...

}

以及

int main(int argc,char * argv[])

{

...

}

盡管如此,但在Visual C++ 2003以前的Microsoft Studio編譯器上,

void main()

{

...

}

也被支持,但這並不正確,也不標準。這樣的寫法會使程序代碼喪失跨平臺的特性。 [編輯本段]C++程序員的數量  分析機構EvansData定期對開發人員展開調查,其調查結果與Stroustrup提出的C++正在擴張的說法相違背。EvansData的數據顯示,以C++為工具的開發人員在整個開發界所占的比例由1998年春天的76%下降至2004年秋的46%。

Forrester最新的調查顯示,C++、微軟VisualBasic和Java是眾多公司產品體系的首選語言。對100家公司的調查顯示,C/C++、VisualBasic和Java在產品體系中的使用比例分別是59%、61%和66%。

傳統上認為,C++相對於目前壹些新潮的語言,如Java、C#,優勢在於程序的運行性能。這種觀念並不完全。如果壹個人深信這壹點,那麽說明他並沒有充分了解和理解C++和那個某某語言。同時,持有這種觀念的人,通常也是受到了某種誤導(罪魁禍首當然就是那些財大氣粗的公司)。對於這些公司而言,他們隱藏了C++同某某語言間的核心差別,而把現在多數程序員不太關心的差別,也就是性能,加以強化。因為隨著CPU性能的快速提升,性能問題已不為人們所關心。這叫“李代桃僵”。很多涉世不深的程序員,也就相信了他們。於是,大公司們的陰謀也就得逞了。

壹般認為,使用Java或C#的開發成本比C++低。但是,如果妳能夠充分分析C++和這些語言的差別,會發現這句話的成立是有條件的。這個條件就是:軟件規模和復雜度都比較小。如果不超過3萬行有效代碼(不包括生成器產生的代碼),這句話基本上還能成立。否則,隨著代碼量和復雜度的增加,C++的優勢將會越來越明顯。造成這種差別的就是C++的軟件工程性。在Java和C#大談軟件工程的時候,C++實際上已經悄悄地將軟件工程性提升到壹個前所未有的高度。這壹點被多數人忽視,並且被大公司竭力掩蓋。

語言在軟件工程上的好壞,依賴於語言的抽象能力。從面向過程到面向對象,語言的抽象能力有了壹個質的飛躍。但在實踐中,人們發現面向對象無法解決所有軟件工程中的問題。於是,精英們逐步引入、並拓展泛型編程,解決更高層次的軟件工程問題。(實際上,面向對象和泛型編程的起源都可以追溯到1967年,但由於泛型編程更抽象,所以應用遠遠落後於面向對象)。 [編輯本段]C++語言的應用  哪些程序是用C++寫的:

主流的3種操作系統Windows,Linux,Unix,內核都是用C語言和匯編寫的,上層高級特性是用C++寫的。

《魔獸世界》等幾乎所有的網絡遊戲,百度搜索引擎(Baidu.com),我們所用的大多數軟件都是用C++寫的(硬件也有很多用到C++的)。

C++之父Bjarne Stroustrup列舉的C++應用:

Amazon.com:Software for large-scale e-commerce

Apple: OS X is written in a mix of language, but a few important parts are C++. The two most interesting are

AT&T:The largest US telecommunications provider.

o provisioning systems

o systems for rapid network recovery after failure

Autodesk: A large number of major number of application in the CAD domain

Ericsson:o server platform.

o TDMA-CDMA HLR

o GSM-TDMA-CDMA mobility gateway

Google: web search engine, etc。

HP: Here is a tiny fraction of HP's C++ apps:

o C, C++, Fortran90 compilers, and linker for the new HP IA64 platform (these add to more than 1 million lines of C++ code).

IBM: o OS/400.

o K42: a high performance, open source, general-purpose operating system kernel for cache-coherent multiprocessors.

Intel:o Vtune performace analysis software

o compilers and optimizers

o lots of chip design and manufacturing software

JPL (Jet Propulsion Lab, NASA): Mars rover autonomous driving system (incl. scene analysis and route planning). C++ on Mars! Also lots of supporting software "on the ground" (i.e. Earth).

Microsoft:o Windows XP

o Windows NT (NT4 and 2000)

o Windows 9x (95, 98, Me)

o Microsoft Office (Word, Excel, Access, PowerPoint, Outlook)

o Internet Explorer (including Outlook Express)

o Visual Studio

o SQL

Mozilla: Firefox browser and Thunderbird mail client (open source)

MySQL: MySQL Server (about 250,000 lines of C++) and MySQL Cluster. Arguably the world's most popular open source database

Nokia: o Mobile Communications radio-station/internet bridges: FlexiGGSN (Gateway GPRS Support Node) and FlexiSGSN (Server GPRS Support Node).

o MSC/HLR

Sun: o The HotSpot Java Virtual Machine is written in C++

Symbian OS: rationale: "[...] using C++ for all system code, from the kernel upwards." This is one of the most widespread OS's for cellular phones

KDE from linux is written in C++.

telephone systems: I think it would be almost easier to list the systems which aren't written in C++

  • 上一篇:魔獸爭霸中jass 的詳細講解 ?
  • 下一篇:在線看電影會有TC版。所謂的TC版是什麽意思?
  • copyright 2024編程學習大全網