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