C語(yǔ)言是在70年代初問(wèn)世的。一九七八年由美國(guó)電話電報(bào)公司(AT&T)貝爾實(shí)驗(yàn)室正式發(fā)表了C語(yǔ)言。同時(shí)由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一書。通常簡(jiǎn)稱為《K&R》,也有人稱之為《K&R》標(biāo)準(zhǔn)。但是,在《K&R》中并沒(méi)有定義一個(gè)完整的標(biāo)準(zhǔn)C語(yǔ)言,后來(lái)由美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì)在此基礎(chǔ)上制定了一個(gè)C 語(yǔ)言標(biāo)準(zhǔn),于一九八三年發(fā)表。通常稱之為ANSI C。
從學(xué)習(xí)C++到現(xiàn)在已經(jīng)有四個(gè)年頭了,但是從來(lái)沒(méi)有很深入學(xué)習(xí),有人說(shuō)C++是面向?qū)ο蟮木幊陶Z(yǔ)言,但是我在這里想說(shuō)的是,C++是一個(gè)多泛型的編程語(yǔ)言,它既可以面向過(guò)程,比如我們完全可以用C++寫C的代碼,這是沒(méi)問(wèn)題的,它也是一個(gè)面向?qū)ο蟮恼Z(yǔ)言,它具有面向?qū)ο蟮奶卣鳎梢阅M現(xiàn)實(shí)世界中的各種事物;它也是一個(gè)泛型編程語(yǔ)言,里面包含大量的模板特性,比如C++的標(biāo)準(zhǔn)庫(kù)STL就是基于模板的一個(gè)庫(kù),C++語(yǔ)言的難學(xué)也就是因?yàn)樗墓δ苁謴?qiáng)大。
C++初學(xué)者一般可以按照下列的順序進(jìn)行學(xué)習(xí):
剛開始接觸C++時(shí),如果是學(xué)校開了C++課程的話那就更好了,可以跟著老師的進(jìn)度學(xué)習(xí),在課余時(shí)間可以多做一些習(xí)題或上機(jī)練習(xí)。如果你是完全自學(xué),你可以找一本面向大學(xué)生的教材(譚浩強(qiáng)的教材比較適合入門)。掌握了一些基本的C++概念了,那就開始學(xué)習(xí)面向?qū)ο蟮牟糠至,這部分內(nèi)容比較多,初學(xué)者理解起來(lái)也會(huì)感覺(jué)比較吃力,建議多上機(jī)練習(xí)。在基本了解了C++的面向?qū)ο笾,可以開始學(xué)習(xí)模板庫(kù),比如STL,因?yàn)镾TL在我們的軟件開發(fā)中非常重要,甚至有些招聘都要求會(huì)STL,(STL:標(biāo)準(zhǔn)模板庫(kù)),這里面包含了大量的數(shù)據(jù)結(jié)構(gòu)和算法的實(shí)現(xiàn),有些可以直接拿來(lái)用,但是如果你對(duì)數(shù)據(jù)結(jié)構(gòu)有特殊需求,那么你就要自己去實(shí)現(xiàn)這些數(shù)據(jù)結(jié)構(gòu)。
如果你已經(jīng)進(jìn)入了C++的世界,那么你就可以進(jìn)階學(xué)習(xí)了,學(xué)習(xí)了這些你或許感覺(jué)有疑惑,為什么我不能開發(fā)出一個(gè)帶界面的程序呢,呵呵,如果你又這樣的需求,那么你可以學(xué)習(xí)一些界面庫(kù),比如QT,MF等,這兩個(gè)是比較常用的,QT入門稍微容易些,但是往后深入會(huì)比較困難,MFC入門起來(lái)會(huì)麻煩一點(diǎn),有很多人也就是因此而放棄,但是甜頭在后面,只要入門了后面的路將會(huì)是一馬平川,障礙比較少。
庫(kù),在c++的世界里具有很高的位置,你如果對(duì)某一領(lǐng)域感興趣,你就需要去了解和學(xué)習(xí)相關(guān)的庫(kù),比如三維圖形庫(kù)OPENGL,網(wǎng)絡(luò)通信庫(kù)ACE等等,這些庫(kù)基本是都是標(biāo)準(zhǔn)C++寫成的,一般都是跨平臺(tái)的。也許有很多會(huì)有疑問(wèn),我學(xué)習(xí)了C++以后能做什么樣的軟件開發(fā)工作?目前C++軟件開發(fā)主要集中在以下領(lǐng)域:
1、服務(wù)器端開發(fā):很多游戲或者互聯(lián)網(wǎng)公司的后臺(tái)服務(wù)器程序都是基于C++開發(fā)的,而且大部分是linux,unix等類似操作系統(tǒng),所以說(shuō),你如果想做這樣的工作,你需要熟悉linux操作系統(tǒng)及其在上面的開發(fā),熟悉數(shù)據(jù)庫(kù)開發(fā),精通網(wǎng)絡(luò)編程。
2、游戲:目前很多游戲客戶端都是基于C++開發(fā)的,除了一些網(wǎng)頁(yè)游戲可能不是,這個(gè)領(lǐng)域需要學(xué)習(xí)的東西就比較多,個(gè)人不太了解就不多說(shuō)。
3 、虛擬現(xiàn)實(shí)仿真:這個(gè)也是發(fā)展很快的計(jì)算機(jī)領(lǐng)域,目前各種數(shù)字地球,數(shù)字城市,虛擬地理環(huán)境什么的,出現(xiàn)了這方面的大量應(yīng)用,不過(guò)也不限于這些方面,比如科學(xué)計(jì)算可視化也是其中一個(gè)方向。這個(gè)方向重點(diǎn)需要學(xué)習(xí)的是圖形學(xué)。
4 、數(shù)字圖像處理:現(xiàn)在市面上有很多VC++圖像處理的書籍,可見在這個(gè)領(lǐng)域的應(yīng)用軟件開發(fā)也是占了很大比重,需要深入學(xué)習(xí)數(shù)字圖像處理和模式識(shí)別等課程。
呵呵,說(shuō)到這里都感覺(jué)好像跑題了,都沒(méi)看到具體什么學(xué)習(xí)路線啊,就當(dāng)是自己的學(xué)習(xí)感言吧,有什么不對(duì)的,也歡迎大家討論。