?? 新建 文本文檔.txt
字號(hào):
1,入門書(shū)籍的選擇一定要慎之又慎,不然會(huì)大大影響初學(xué)者對(duì)C++的認(rèn)識(shí)。好比在一塊木板上釘一顆釘子,如果開(kāi)頭幾錘子敲下去就敲歪了,那么以后要想糾正就非常困難了。很多人最后放棄學(xué)習(xí)C++,就是因?yàn)樗麄儽灰恍┎缓玫臅?shū)所誤導(dǎo),以至于他們還沒(méi)有來(lái)得及領(lǐng)略C++的恢宏與壯美就鳴金收兵了。這種情況非常令人可惜。有鑒于此,只要有人問(wèn)我初學(xué)C++應(yīng)該選那本書(shū),我就會(huì)毫不猶豫地推薦由C++創(chuàng)始人Bjarne Stroustrup執(zhí)筆的鴻篇巨制:《The C++ Programming Language》!之所以向大家推薦這本對(duì)于初學(xué)者而言可能略顯艱深的書(shū)籍,是因?yàn)椋哼x擇C++作為學(xué)習(xí)對(duì)象的人一般都是下定決心專業(yè)從事軟件研發(fā)的技術(shù)人員。一般而言,他們對(duì)計(jì)算機(jī)領(lǐng)域的各種基礎(chǔ)知識(shí)是具備一定功底的。如果初學(xué)者并不想在程序設(shè)計(jì)領(lǐng)域深入地走下去,那么,我不會(huì)推薦他學(xué)習(xí)C++,而會(huì)推薦他去學(xué)習(xí)其他語(yǔ)言。
2,不像市面上常見(jiàn)的一些強(qiáng)調(diào)學(xué)習(xí)過(guò)程短平快的編程書(shū)籍,學(xué)習(xí)這本書(shū)不要貪圖速成。因?yàn)镃++本來(lái)就不是一門可以速成的語(yǔ)言。所謂的速成無(wú)非是僅僅學(xué)會(huì)C++的一丁點(diǎn)皮毛。《The C++ Programming Language》這本書(shū)可以長(zhǎng)時(shí)期放在你的枕邊伴你入眠,它將伴隨著你度過(guò)編程生涯的每一個(gè)成長(zhǎng)階段。因此買這本書(shū)的投資是絕對(duì)劃算的。表面上看,學(xué)習(xí)這樣的經(jīng)典著作可能會(huì)很慢,會(huì)很吃力,但是我相信這才是真正的捷徑,因?yàn)樗粫?huì)讓你走彎路,不會(huì)讓你在學(xué)習(xí)過(guò)程中一次又一次地糾正自己在閱讀其他低質(zhì)量C++書(shū)籍過(guò)程中所慢慢形成的錯(cuò)誤觀念,所以說(shuō):似遠(yuǎn)實(shí)近!
3,OO觀念的初步建立是學(xué)習(xí)C++的前提,必須時(shí)刻用OO觀念去理解C++的設(shè)計(jì)決策。OO觀念的核心有三條:封裝,繼承,多態(tài)。網(wǎng)上關(guān)于OO基本觀念的介紹也是多如牛毛。初學(xué)者不必急于一下子完全理解它們,因?yàn)镺O觀念的深刻理解只能從長(zhǎng)時(shí)期的思考和實(shí)踐過(guò)程中獲得。這本書(shū)的最大特點(diǎn)就是在引入C++各項(xiàng)語(yǔ)法特征的過(guò)程中特別注重交待清楚它們的來(lái)龍去脈,尤具價(jià)值的是,書(shū)中每一章后面都給出了極其實(shí)用的編程建議(Advice),這些編程建議是國(guó)內(nèi)那些C++作者不可能寫(xiě)得出來(lái)的。我這么說(shuō)絕對(duì)不是崇洋媚外。如果說(shuō)中國(guó)的IT技術(shù)水平落后國(guó)外20年的話,那么中國(guó)的IT教育水平至少要落后國(guó)外30年。中國(guó)目前在IT技術(shù)寫(xiě)作領(lǐng)域沒(méi)有哪一個(gè)稱得上是大師級(jí)別的原創(chuàng)技術(shù)作家,大多是靠剪刀加漿糊吃飯的。檔次低一點(diǎn)的,直接抄襲和拼湊國(guó)外名家的作品;檔次高一點(diǎn)的,熟讀一下技術(shù)標(biāo)準(zhǔn)和規(guī)范,然后再翻譯成中文,就變成著作了。
4,讀完國(guó)內(nèi)作者寫(xiě)的C++書(shū)籍之后,你很難獲得一種C++究竟強(qiáng)大在何處的認(rèn)識(shí),好像你只不過(guò)是在熟悉一種普通編程語(yǔ)言的語(yǔ)法細(xì)節(jié)罷了。很多人發(fā)出這樣的疑問(wèn):絕大多數(shù)C++的語(yǔ)法概念其他語(yǔ)言也有,比如函數(shù)的概念,結(jié)構(gòu)的概念,子程序的概念,類的概念等等,那么究竟是什么樣的的特性使得C++成為了目前最具有影響力的編程語(yǔ)言之一呢?這是那些國(guó)內(nèi)C++書(shū)籍所不能告訴你的。國(guó)內(nèi)C++書(shū)籍大量的著墨點(diǎn)基本上全部落在各種編程語(yǔ)言都具有的這些共性上面,基本上沒(méi)有看見(jiàn)過(guò)有哪本書(shū)專門介紹過(guò)C++所獨(dú)具的“特性”。為什么這些作者不講呢?那是因?yàn)镃++獨(dú)具的“特性”通常隱藏于C++的整體設(shè)計(jì)之中,如果不是像Bjarne Stroustrup那樣的骨灰級(jí)C++大師,一般的中國(guó)作者絕對(duì)不可能具備俯瞰C++設(shè)計(jì)全局的能力。
5,各種編程語(yǔ)言的語(yǔ)法共性基本上人人都可以在很短時(shí)間內(nèi)熟練掌握。關(guān)于C++的入門語(yǔ)法介紹,網(wǎng)上免費(fèi)資料暴多,初學(xué)者完全可以一邊跟隨著這些入門資料的指導(dǎo),一邊在電腦上敲敲打打,從而快速度過(guò)學(xué)習(xí)一門語(yǔ)言的語(yǔ)法熟悉階段。一旦初學(xué)者在短時(shí)間內(nèi)熟悉了C++的基本語(yǔ)法,那么這些國(guó)內(nèi)作者編寫(xiě)的C++書(shū)籍基本上就可以束之高閣了。因?yàn)檫@些書(shū)籍大多沒(méi)有什么思想價(jià)值,作為技術(shù)手冊(cè)參考一下勉強(qiáng)可以,但如果用來(lái)深入掌握C++就只能說(shuō)是緣木求魚(yú)了。況且這些書(shū)通常并不便宜,一般也要30-50元人民幣。同學(xué)們一般資金有限,所謂好鋼要用在刀刃上,與其買一本利用價(jià)值不高的書(shū),還不如加一點(diǎn)點(diǎn)錢去購(gòu)買真正經(jīng)典的書(shū)籍。所以我絕對(duì)不會(huì)推薦初學(xué)者去購(gòu)買國(guó)內(nèi)作者寫(xiě)的C++書(shū)籍。
6,不是說(shuō)中國(guó)在IT領(lǐng)域沒(méi)有高手,就我所知,中國(guó)的技術(shù)高手還是有不少的,但是愿意把自己的寶貴經(jīng)驗(yàn)和心得體會(huì)用筆寫(xiě)成書(shū)的高手我就極少看到過(guò)了。首先,這些經(jīng)年累月積累下來(lái)的知識(shí)財(cái)富對(duì)于一個(gè)吃技術(shù)飯的人來(lái)說(shuō)實(shí)在太寶貴,寫(xiě)成書(shū)公開(kāi)對(duì)作者而言實(shí)在太吃虧。希望大家承認(rèn)并接受這個(gè)事實(shí)。知識(shí)本來(lái)就具有財(cái)產(chǎn)的屬性,不然“知識(shí)產(chǎn)權(quán)”一詞從何而來(lái)?其次,寫(xiě)書(shū)很花時(shí)間,基本上是一件燃燒自己照亮別人的雷鋒行為。當(dāng)然,這里的寫(xiě)書(shū)指的是作者毫無(wú)保留地把自己的精華經(jīng)驗(yàn)寫(xiě)出來(lái)而不是為了斂財(cái)而瞎編。最后,目前在中國(guó),通過(guò)奉獻(xiàn)自己的技術(shù)經(jīng)驗(yàn)來(lái)獲得合理的收益和報(bào)酬還不現(xiàn)實(shí),中國(guó)還不具備產(chǎn)生專職技術(shù)作家的土壤,原因是多方面的,大家都明白。
7,為什么國(guó)外有那么多高手愿意寫(xiě)書(shū)呢?原因有多種。一、國(guó)外有良好的知識(shí)產(chǎn)權(quán)保護(hù)制度,技術(shù)高手可以通過(guò)寫(xiě)書(shū)來(lái)獲得不低于當(dāng)一個(gè)資深工程師的收入。二、國(guó)外的技術(shù)積累實(shí)在太雄厚,有些東西在中國(guó)可能是技術(shù)秘密,但是對(duì)于國(guó)外作家而言,算不上是技術(shù)秘密,因此可以寫(xiě)成書(shū)公開(kāi)。三、對(duì)某些作家而言,他公布自己的經(jīng)驗(yàn)越多,對(duì)自己越有利。比如Bjarne Stroustrup,很顯然,對(duì)他來(lái)說(shuō),全世界使用C++的程序員越多,他的地位就越不可動(dòng)搖。所以,Bjarne Stroustrup完全可以把自己關(guān)于C++的一切技術(shù)思考和經(jīng)驗(yàn)毫無(wú)保留地告訴給全世界的C++程序員。微軟和SUN免費(fèi)公布自己的技術(shù)規(guī)范也是同樣道理。所以在國(guó)外,作者,讀者,出版商共同構(gòu)成了一個(gè)良性循環(huán)的知識(shí)生態(tài)系統(tǒng)。毫無(wú)疑問(wèn),這樣的結(jié)果必定是多贏。但是,請(qǐng)牢記,真正有商業(yè)價(jià)值的技術(shù)你絕對(duì)不可能通過(guò)買書(shū)學(xué)習(xí)來(lái)獲得,比如,你絕對(duì)不可能在市面上買到Adobe公司關(guān)于字體引擎的算法講解書(shū)籍。要是你恰恰需要這些技術(shù)怎么辦?回答是:購(gòu)買!買不起或者買不到就只有脫下外套挽起袖子自己來(lái)搞了。沒(méi)有技術(shù)的封鎖就沒(méi)有技術(shù)的進(jìn)步,這又是一個(gè)需要用辯證法來(lái)解釋的問(wèn)題。
8,我相信,只有通過(guò)精讀C++創(chuàng)始人撰寫(xiě)的這本書(shū),你才可以最準(zhǔn)確地理解和把握C++區(qū)別于其他語(yǔ)言的精髓。Bjarne Stroustrup不僅僅介紹了C++的語(yǔ)法,更重要的是全面闡釋了C++各種基本設(shè)施的設(shè)計(jì)動(dòng)機(jī)以及在應(yīng)用過(guò)程中應(yīng)當(dāng)注意避免那些問(wèn)題。這本書(shū)不僅僅告訴你How,更重要的是他會(huì)告訴你Why!況且,世界上沒(méi)有哪個(gè)人能比Bjarne Stroustrup更加了解C++!世界上也沒(méi)有哪個(gè)人能比Bjarne Stroustrup把C++闡釋得更加清楚!這就是我為什么強(qiáng)烈推薦此書(shū)的最根本理由!我覺(jué)得學(xué)習(xí)C++的過(guò)程中最好時(shí)刻審問(wèn)自己:C++中的某些規(guī)范為什么要這么制定?比如:為什么要搞運(yùn)算符重載?為什么要保留廣受詬病的多重繼承機(jī)制?等等。思考這些問(wèn)題就是在揣摩C++標(biāo)準(zhǔn)委員會(huì)的設(shè)計(jì)意圖,而這些設(shè)計(jì)意圖實(shí)際上深刻地反映了工業(yè)界所面臨的各種現(xiàn)實(shí)問(wèn)題。
9,是否懂得C語(yǔ)言并不是學(xué)習(xí)C++的前提。不僅僅是因?yàn)镃++本身兼容C語(yǔ)言,更重要的是C++所倡導(dǎo)的程序設(shè)計(jì)觀念是和C語(yǔ)言完全不同的。C語(yǔ)言在某種意義上是對(duì)CPU模型的抽象。盡管C++完全保留了C語(yǔ)言的機(jī)器模型,但是C++更加注重對(duì)現(xiàn)實(shí)世界進(jìn)行抽象。為此,C++創(chuàng)始人Bjarne Stroustrup專門寫(xiě)過(guò)一篇著名的文章:《Learning Standard C++ as a New Language》(把標(biāo)準(zhǔn)C++作為一種全新的語(yǔ)言來(lái)學(xué)習(xí))
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -