雖然TTIAN里搞開(kāi)發(fā)的人少之又少,但是這里畢竟是我網(wǎng)上唯一的家,所以有什么想法還是發(fā)到這里比較
合適。我不準(zhǔn)備說(shuō)C++的任何技術(shù),只想說(shuō)明如何成為C++高手,只想告訴你什么書(shū)可以解決你的什么問(wèn)
題!
________________________________________________________

      經(jīng)過(guò)十分漫長(zhǎng)的C++學(xué)習(xí)過(guò)程,我總算完成了我自己的C++心愿,看完了我想看的所有C++書(shū)籍,回
顧我C++的整個(gè)學(xué)習(xí)過(guò)程,頗有一些心得和經(jīng)驗(yàn),希望與各位分享,也希望給正處在摸索學(xué)習(xí)階段的
XDJM一點(diǎn)學(xué)習(xí)參考。
    首先看看我第一次接觸編程語(yǔ)言,唔,那可能要追述上到世紀(jì),在我小學(xué)4年紀(jì)的時(shí)候第一次接觸到
BASIC,那個(gè)時(shí)候?qū)W習(xí)這個(gè)東西完全是為了要爸爸給我買一臺(tái)386,沒(méi)想到的是,BASIC開(kāi)啟了我對(duì)于計(jì)算
機(jī)的一切興趣與追求。5年紀(jì)的時(shí)候參加少年的計(jì)算機(jī)奧賽,我用BASIC寫(xiě)的一個(gè)彩色立體可旋轉(zhuǎn)移動(dòng)的正
方體拿了一個(gè)銅牌,從此計(jì)算機(jī)編程成為了最大的愛(ài)好,現(xiàn)在我還保留著源代碼,是保存在一盤(pán)普通單放
機(jī)的磁帶上的,我估計(jì)很少有人用過(guò)錄音機(jī)和串口的轉(zhuǎn)換器吧,呵。我用BASIC寫(xiě)的第二個(gè)大程序是給我
媽媽用的財(cái)務(wù)程序,初中二年紀(jì)的時(shí)候,我媽媽在單位做出納,我總看到媽媽每天晚上拿個(gè)計(jì)算機(jī)算一堆
表,所以我寫(xiě)了這個(gè)程序幫助媽媽快速完成她的工作,其實(shí)我的根本目的是為了一臺(tái)打印機(jī),因?yàn)檫@個(gè)程
序,生成了簡(jiǎn)單的報(bào)表,她可以直接打印,當(dāng)然為了這個(gè)便利,她必須花錢給我買一臺(tái)當(dāng)時(shí)還算價(jià)值不低
的打印機(jī)。不過(guò)現(xiàn)在回顧起來(lái),BASIC雖然是我編程的第一位啟蒙老師,但是在我開(kāi)始C++的學(xué)習(xí)之后,他
確實(shí)使我我思想上產(chǎn)生了很大的困繞,主要是OOP思想,我花費(fèi)了將近1年多的時(shí)間才真正體會(huì)到什么是OO!
    到了大學(xué),我才真正開(kāi)始系統(tǒng)的學(xué)習(xí)編程。在此之間走過(guò)一些歪路,比如高中的時(shí)候研究HACKING,
之所以說(shuō)學(xué)習(xí)hacking是條歪路,原因很簡(jiǎn)單,因?yàn)檠芯康揭欢ǖ某潭龋瑳](méi)有十分穩(wěn)固的編程基礎(chǔ),根本
的無(wú)法繼續(xù)深入學(xué)習(xí)。中國(guó)**聯(lián)盟解體前,位列第三的kender給了我這方面很大的打擊,從此我就退出了
,從此對(duì)于hacking我就不聞不問(wèn),從此看到那些下三爛的貨色也要學(xué)hacking,我就感到可笑。第一次接
觸的是C,沒(méi)什么好說(shuō)的,我C學(xué)的不好,因?yàn)槲掖蠖臅r(shí)候經(jīng)商去了,而且我覺(jué)得C能做的,我用BASIC都
能做到,為什么要學(xué)C?當(dāng)然那個(gè)時(shí)候我成績(jī)真是北大的BBS...然后接觸到的就是C++,教材的錢能的
《C++程序設(shè)計(jì)》,這本書(shū)其實(shí)還是很不錯(cuò)的,不過(guò)很多看了兩本名著的朋友都對(duì)這本書(shū)嗤之以鼻,也許是
我天生很笨,在我看完了《C++PRIMER》后還經(jīng)常番看《C++程序設(shè)計(jì)》。《C++程序設(shè)計(jì)》雖然出書(shū)的時(shí)
候ANSI C++還沒(méi)有確定下來(lái),不過(guò)它還是含蓋了C++所有語(yǔ)法,建議對(duì)C++感興趣卻又沒(méi)有任何基礎(chǔ)的人先
從這本書(shū)開(kāi)始,簡(jiǎn)單而高效,不要認(rèn)為人家一上來(lái)就看《C++ PRIMER》或是《the c++ programming
language》就覺(jué)得自己的檔次很低,你要確信,你肯定能超過(guò)他!這本書(shū)課后習(xí)題在我看來(lái)是典型的結(jié)構(gòu)
化編程,即使到了CLASS,也全部可以用STRUCT代替。不過(guò)在這個(gè)階段做習(xí)題十分必要,用處我不想敲了
,推薦使用的編譯器就是書(shū)中所說(shuō)到的編譯器(我忘記叫什么了:P)看完之后,如果你想說(shuō)C++很簡(jiǎn)單的話
,建議你在看完了《C++ PRIMER》或是《the c++ programming language》之后再說(shuō)。這兩本書(shū)都是基于
標(biāo)準(zhǔn)C++的,十分苛求的說(shuō),后者對(duì)標(biāo)準(zhǔn)的兼容性稍差:)。對(duì)這兩本書(shū),我的看法是,如果你確實(shí)想仔細(xì)
的學(xué)習(xí),建議你看《C++ PRIMER》,如果你想跳過(guò)我將要寫(xiě)到的下面兩本書(shū)的話,建議你看
《the c++ programming language》。對(duì)這兩本書(shū),前者最高到中文第三版,因?yàn)榈谒陌妫笳叩教貏e版
。對(duì)于前者,我看后的感覺(jué)是它的優(yōu)點(diǎn)在于解析,特別是函數(shù),類,模板的解析,但是它并沒(méi)有含蓋C++
的方方面面,后者就不是這樣。實(shí)際上我并沒(méi)有仔細(xì)看過(guò)后者,只是同學(xué)總是拿這本書(shū)上的問(wèn)題來(lái)與我商
量,所以有機(jī)會(huì)偷窺了幾眼。暫定你選擇的是前者繼續(xù)學(xué)習(xí),在看完后,也許你用C++編制普通的程序已
經(jīng)能夠運(yùn)用自如,但是你仍然應(yīng)該會(huì)有很多問(wèn)題和遺憾,比如,類繼承,虛擬繼承,類訪問(wèn)控制,類繼承
下的訪問(wèn)控制,還有雖然我已經(jīng)對(duì)如何解析十分清楚,但是我仍然感覺(jué)我對(duì)語(yǔ)法掌握得不系統(tǒng),遺憾的是
,書(shū)中出現(xiàn)了很多的庫(kù)函數(shù),我為什么都不知道?這個(gè)時(shí)候建議你看看《標(biāo)準(zhǔn)C++寶典》,這本書(shū)對(duì)于語(yǔ)
法正所謂事無(wú)巨細(xì),一一道來(lái)啊,再就是回顧一下《C++ 程序設(shè)計(jì)》(錢能),對(duì)類的部分講解的還是十
分精辟的。在掌握了一切牢固的語(yǔ)法基礎(chǔ)之后,我選擇的下一步不是STL,而是IOSTREAM,原因之一是因
為《C++ PRIMER》并沒(méi)有把這一部分講述的很好,對(duì)了,《C++ PRIMER》也沒(méi)有把STL講述的很好,所以
我看《C++ PRIMER》的時(shí)候這些章節(jié)都跳過(guò)了,我的目標(biāo)是不求知道,只求精通。對(duì)于IOSTREAM,我選的
書(shū)是《Standard C++ IOStream and Locales》,我當(dāng)時(shí)還是看的E文原版,事實(shí)證明,我錯(cuò)了,這本對(duì)于
當(dāng)時(shí)的我,難度突然拔的太高,所以在看完了第一章之后我就放棄了,只是暫時(shí)的擱置下來(lái)了。對(duì)了,忘
記說(shuō),對(duì)于《C++ PRIMER》或是《the c++ programming language》的學(xué)習(xí),你應(yīng)該十分認(rèn)真的選擇編譯
器了,我推薦3個(gè)首選dev-cpp最高4.9.9.2,然后是vc.net(千萬(wàn)看清楚,不是vc6.0!),最后就是
borland c++ builder-X,具體我就不介紹了,相信你學(xué)習(xí)到這一步,自己應(yīng)該已經(jīng)掌握很多的信息了.繼
續(xù),下一步,我的選擇是〈深入探索C++對(duì)象模型〉,我是在圖書(shū)館借閱的,現(xiàn)在也有電子版了,不過(guò)我
看了以下,效果一般,但是可以和E文原版的電子版一起看。這本書(shū)看完。如果你是跟我一樣,把
《C++ PRIMER》翻爛掉,能把《深入探索C++對(duì)象模型》的知識(shí)要點(diǎn)全部背出來(lái)的話,我恭喜你,你的
C++水平已經(jīng)到中級(jí)了:)接下來(lái),我的選擇是對(duì)C++這門(mén)語(yǔ)言為我提供的所有服務(wù)設(shè)施通透的學(xué)習(xí)一邊。
說(shuō)穿了,就是庫(kù)函數(shù),C++庫(kù)函數(shù)分兩部分,一部分來(lái)自C語(yǔ)言,一部分就是STL,對(duì)于C語(yǔ)言部分,我建議
你可以買一本C++函數(shù)庫(kù)的書(shū),最近好象剛出了一本,不過(guò)我還沒(méi)有機(jī)會(huì)看,我看的是〈C和C++代碼精
粹〉,里面把C語(yǔ)言部分的庫(kù)函數(shù)分為3類,這本書(shū)我也就看了這3個(gè)章節(jié),其他的東西我知道,看他做
甚?而對(duì)于STL,你如果真想成為C++出類拔萃的高手,你應(yīng)該看3本<<C++標(biāo)準(zhǔn)程序庫(kù)>>  <<泛型編程與
STL>>   <<STL源碼剖析>>,第一本主要講的是如何使用STL,第二本將STL的一些設(shè)計(jì)理念,并指導(dǎo)你進(jìn)
行泛型設(shè)計(jì),所謂泛型說(shuō)穿了就是指模板。看完這些書(shū),如果你跟我一樣,可以把STL全部重寫(xiě)一邊的
話,那么恭喜你,你已經(jīng)成為C++準(zhǔn)高手,這個(gè)時(shí)候我的選擇是回過(guò)頭去看《Standard C++ IOStream
and Locales》,呵,現(xiàn)在才發(fā)現(xiàn)原來(lái)這本書(shū)這么簡(jiǎn)單!簡(jiǎn)直是naive!其實(shí),我現(xiàn)在最想做的事情就是能
夠把IO全部重寫(xiě)一邊,不過(guò)還沒(méi)有找到合適的編譯器下手,感覺(jué)應(yīng)該用GCC比較好,還沒(méi)開(kāi)始研究,我也
不清楚。好了,既然這么多本講述C++技術(shù)的書(shū)籍你都搞完了,也不在乎多兩本吧,呵呵。知道你應(yīng)該看
什么嗎?你應(yīng)該看看<exceotional c++>還有<effective c++>,這兩本書(shū)都有more版,不算太難,最后可
以看《高質(zhì)量C++編程》,最后有一套練習(xí)題,做做,小菜一樣。接下來(lái)我的選擇是<C++編程思想> 〈設(shè)
計(jì)模式〉 〈大規(guī)模C++程序設(shè)計(jì)〉(最后一本我最近才看完:P)這3本書(shū)可不講什么語(yǔ)法,第一本實(shí)在沒(méi)
有必要介紹,似乎每一種語(yǔ)言的編程思想的的書(shū)籍都是說(shuō)的如何用這門(mén)語(yǔ)言編程,第二本其實(shí)并不能說(shuō)是
針對(duì)C++,所有語(yǔ)言通用的一本書(shū),關(guān)鍵是程序設(shè)計(jì)的方式,第三本被稱為〈設(shè)計(jì)模式〉的C++實(shí)踐篇,其
意義毋庸多說(shuō)。看完了嗎?好吧,你應(yīng)該選一個(gè)項(xiàng)目鍛煉一下。如果你能在一個(gè)月內(nèi)看完這所有的書(shū),歡
迎你加入ISS_SQL開(kāi)發(fā)團(tuán)隊(duì),這個(gè)就是我近期想做的事情,我就是想寫(xiě)一個(gè)自己的數(shù)據(jù)庫(kù)。不過(guò)如果你不
是外星人的話,我估計(jì)你不可能在一個(gè)月的時(shí)間內(nèi),看完我看了2年的書(shū)。對(duì)于我剛才說(shuō)的SQL,我還在選
人,說(shuō)實(shí)在的,現(xiàn)在我的同學(xué)里,真的是沒(méi)有幾個(gè)人的技術(shù)能讓我看的上的,哎,得一知己難啊!還是繼
續(xù)說(shuō)編程,這個(gè)時(shí)候,你已經(jīng)有了頂級(jí)的C++基礎(chǔ),想學(xué)什么不容易?JAVA,你學(xué)了一個(gè)月??開(kāi)玩笑,
我看了一個(gè)星期的書(shū)就開(kāi)始做項(xiàng)目了!其實(shí)我覺(jué)得到了這個(gè)時(shí)候是一個(gè)面臨選擇的時(shí)候,一個(gè)是做UNIX下
的開(kāi)發(fā),一個(gè)是做WINDOWS下的,不過(guò)我選擇了第三條路,也就是我正在學(xué)的,算法,因?yàn)槲业膶?dǎo)師正在
做973計(jì)劃中的數(shù)據(jù)挖掘項(xiàng)目,所以我也沾光,因?yàn)槭腔cweka,所以我用java,這個(gè)B語(yǔ)言真弱智,我已
經(jīng)開(kāi)始討厭JAVA了,所以我才想用C++重寫(xiě)一個(gè)WEKA類的開(kāi)源軟件,不過(guò)我感覺(jué)用java寫(xiě)算法,的確不
錯(cuò)。前段時(shí)間,我一個(gè)同學(xué)為了一個(gè)C#問(wèn)題苦惱,問(wèn)題粗略說(shuō)來(lái)是GIS設(shè)備返回串,要進(jìn)行處理,提取數(shù)
據(jù),因?yàn)榇旧淼膹?fù)雜性,具體是怎么樣的我也不知道,因?yàn)樗倪@個(gè)是商業(yè)項(xiàng)目。這個(gè)問(wèn)題在C#下十分
困難,連正則表達(dá)式都無(wú)能為力,所以我給他的建議是寫(xiě)一個(gè)自動(dòng)機(jī),也不知道他最后的處理方式,不過(guò)
在java下,呵,大概不超過(guò)五十行代碼吧。說(shuō)遠(yuǎn)了。
    最后說(shuō)說(shuō)人的問(wèn)題。有一點(diǎn)點(diǎn)浮躁的人建議你千萬(wàn)別想學(xué)C++,直接學(xué)VB或者C#算了,希望在浩方有
個(gè)排名的人,我直接告訴你,你不應(yīng)該學(xué)C++。
    關(guān)于C++的學(xué)習(xí),我就說(shuō)這么多,其實(shí)也感覺(jué)沒(méi)有說(shuō)什么,只是把我學(xué)習(xí)C++看的每一門(mén)書(shū)都羅列出來(lái)
,雖有顯擺之嫌,但也確實(shí)希望給那些如曾經(jīng)的我一樣迷茫的摸索者,那些希望學(xué)習(xí)C++且追求完美技術(shù)
的人指一條明路。簡(jiǎn)單的說(shuō),你認(rèn)真看完我上面說(shuō)的所有書(shū),你就是C++高手!
    改天,我把我文中提到的所有書(shū)籍的電子都匯總起來(lái)跟貼到下面。