C++學(xué)習(xí)階段分析 今天終于看完了給自己列過的c++書單,有一種如釋重負(fù)的感覺。同時(shí)也讓我認(rèn)識(shí)到了c++的博大精深。以前用VC編程,寫窗體程序以為自己對(duì)c++就很熟悉了,現(xiàn)在想想當(dāng)初的天真真是慚愧。下面我結(jié)合自己學(xué)習(xí)c++的過程,談?wù)剬?duì)c++語法學(xué)習(xí)的感悟。 一、 C++廣為人知的一半 面向?qū)ο笫荂++廣為人知的一半,但如何學(xué)好它,卻不是一件容易的事。 1、入門階段 抽象,繼承,多態(tài)是很多剛開始學(xué)習(xí)c++的人對(duì)c++的認(rèn)識(shí)。對(duì)于抽象,繼承,比較容易了解。而多態(tài),則讓很多人認(rèn)為神秘莫測(cè)。我想每一個(gè)學(xué)習(xí)c++的人都會(huì)在開始時(shí)對(duì)c++的多態(tài)有這么一種神秘感。 看看這個(gè)階段的書籍,找一本市面上講C++語法的書籍,同時(shí)附上C++創(chuàng)始人Bjarne Stroustrup執(zhí)筆的鴻篇巨制:《The C++ Programming Language》。之所以要從一本容易的C++語法書開始,是為了保持我們的信心。有了一定的基礎(chǔ)后,不要一葉障目不見泰山,我們?cè)撊タ纯碈++創(chuàng)始人Bjarne Stroustrup執(zhí)筆的鴻篇巨制:《The C++ Programming Language》。這本書對(duì)C++的所有語法進(jìn)行了系統(tǒng)的介紹,高屋建瓴的介紹了C++語言,這也是為啥不一開始就看這本書原因。牛人的書意境是很深的,要有一定的功底才可以看的懂。好了,看了這本書后,我相信你不會(huì)和我再犯同樣的錯(cuò)誤了:學(xué)了一本C++的語法書,懂了抽象、繼承,多態(tài)還蒙著半層面紗就敢說自己熟悉C++了。因?yàn)槟阒纁++除了抽象,繼承,多態(tài)這些面向?qū)ο蟮男再|(zhì)之外,還有就是和面向?qū)ο笙鄬?duì)的泛型編程:C++模板編程。好了,我們暫且不要好高騖遠(yuǎn),先把這些基本的搞定再說。 2、熟悉階段 我們?nèi)腴T了。如果你想有所作為,那你就不要停下腳步。古語日:“書讀百遍,其義自現(xiàn)”。但在程序設(shè)計(jì)的世界里,書是要讀的,但僅僅讀書是不行的。我們還需要實(shí)踐,對(duì),寫程序。有了對(duì)抽象,繼承,多態(tài)的認(rèn)識(shí),我們就可以用面向?qū)ο蟮乃枷脒M(jìn)行編程了。當(dāng)然了,面向?qū)ο蟮乃枷氩皇侨菀渍莆盏?,我們要在寫程序的過程中不斷的體會(huì),琢磨。當(dāng)你寫程序到一定的數(shù)量的時(shí)候,你會(huì)發(fā)現(xiàn)自己犯過很多錯(cuò),有一種將這種錯(cuò)誤分門別類的想法。恭喜你,你升級(jí)了。 3、提升階段 不煩你將自己犯過的錯(cuò)誤分門別類了。因?yàn)榍叭艘呀?jīng)進(jìn)行了總結(jié)。這時(shí)你就奇怪了,既然有前人總結(jié)的經(jīng)驗(yàn),你為啥不在我犯錯(cuò)之前告訴我呢。很抱歉,不是我不愿意,因?yàn)樵谀惴稿e(cuò)之前如果我禁止你這樣,禁止你那樣,你會(huì)覺得自己無所適從,不知道該如何去寫程序了。同時(shí)你也不會(huì)明白為啥不能那樣做。好了,有了犯錯(cuò)的經(jīng)驗(yàn),我們可以去看前人總結(jié)的犯錯(cuò)寶典了。第一本書: 《effective c++》,前人總結(jié)的50條c++編程法則,沒編過程序的人不要去看。第二本書:《c++編程思想:第一卷》從思想上指導(dǎo)我們進(jìn)行c++編程,為我們后期的學(xué)習(xí)做準(zhǔn)備。 4、揭開C++多態(tài)的神秘面紗 總結(jié)了錯(cuò)誤的法則,有了編程思想的指導(dǎo),你是不是想試試你的功底了。是的,我們?cè)摍z驗(yàn)我們的思想是否到家了。如何辦:做項(xiàng)目。好的,那就做吧。當(dāng)你做項(xiàng)目的時(shí)候,你學(xué)會(huì)了用虛函數(shù),學(xué)會(huì)了C++的多態(tài),但是你想了解這多態(tài)到底是如何實(shí)現(xiàn)的,它神秘的面紗后面到底是啥。這個(gè)時(shí)候,它可以滿足你的要求:《深度探索c++對(duì)象模型》,它從編譯器的角度,講敘了C++多態(tài)的底層機(jī)制。當(dāng)然它還包含其它精彩的內(nèi)容,是不是等不及了,那就去讀它吧。 二、C++被人忽視的一半 也許揭開c++的神秘面紗之后,你會(huì)認(rèn)為自己已經(jīng)了解了C++的所有語法了。我想在入門階段讀過《The C++ Programming Language》的人,他們很清楚自己現(xiàn)在還只是站在C++圣殿的半山腰上,前面還有更高的意境等待著我們的思考。革命尚未成功,同志仍需努力。 1、泛型編程入門: 也許你會(huì)說,泛型編程離我太遠(yuǎn),我沒用到。呵呵,這就是你不知情了吧。要知道,C++中我們使用的很多庫,都是由泛型編程來實(shí)現(xiàn)的。我們編程用到的IOSTREAM,就是一例。當(dāng)然了,最有名的要數(shù)我們的STL標(biāo)準(zhǔn)模板庫了,你要知道C++98標(biāo)準(zhǔn)可是因?yàn)樗七t了幾年才出臺(tái)的,要不可能就叫C++94標(biāo)準(zhǔn)了。從這里可以看出C++泛型編程的重要性了吧。好了,下面開始好書推薦:《c++ templates》,絕對(duì)是將C++泛型編程的語法講的最清楚的一本書,不過不適合初學(xué)者,但到現(xiàn)在我也沒有找到一本更合適的入門書籍,那就從它開始吧。 2、泛型編程進(jìn)階: 開始了,我們要走出泛型編程的第一步。是不是我們?cè)搫?dòng)手開始寫泛型程序了,且慢,不要著急,我們先看看前輩們的作品。用一下STL標(biāo)準(zhǔn)模板庫,沒用過別告訴我你用C++寫過項(xiàng)目。先推薦幾本好書:《c++標(biāo)準(zhǔn)程序庫》,模板編程的最成功作品。去看看這本書吧,里面有很多實(shí)例,可以邊看邊寫程序?!禨GI STL源碼剖析》,向?qū)<胰〗?jīng),學(xué)習(xí)內(nèi)存管理,算法,數(shù)據(jù)結(jié)構(gòu)泛型編程的技法。 3、泛型編程提高: 有了前面的基礎(chǔ),我們?cè)趤砜纯捶盒途幊痰倪M(jìn)一步發(fā)展?!斗盒退枷搿罚惶椒盒途幊痰暮暧^和微觀?!抖嘈团c虛擬》,泛型和面向?qū)ο蟮耐昝澜Y(jié)合。 三、C++的統(tǒng)一 好了,經(jīng)過上面的兩個(gè)階段,我們基本學(xué)完了c++的語法。下面我們來看看,通過c++可以實(shí)現(xiàn)啥。 com一個(gè)更好的c++。 你想進(jìn)一步提升自己的實(shí)力嗎,你想成為c++的精通者嗎。那就學(xué)com吧。也學(xué)你認(rèn)為com過時(shí)了,沒用了。告訴你,那是浮躁的人說的話。有一句話講的經(jīng)典,流行不是用來追的,而是用來等的。還告訴你,windows系列操作系統(tǒng),com無所不在。微軟的技術(shù)具有傳承型,由VC到.net,他們之間有聯(lián)系,當(dāng)然更有進(jìn)步。由com,dcom到com+,他們是一脈相承的。VC中就不說了。.net框架中其邏輯層就包含有.net中的企業(yè)服務(wù)(com+)。好了,下面我們看看com的學(xué)習(xí)過程把。 1、Com入門: Com是一種思想,不是一種編程語言,在這里談?wù)撍且驗(yàn)槲覀円肅++將這種思想實(shí)現(xiàn)。在實(shí)現(xiàn)的過程中,我們可以從二進(jìn)制級(jí)別來研究C++對(duì)象在內(nèi)存中的布局。好書推薦: 看過《深度探索c++對(duì)象模型》的同志,恭喜你,可以直接看有關(guān)C++進(jìn)行com編程的書籍了。否則,回去看過《深度探索c++對(duì)象模型》再來?!禝nside com》,一本講敘com基本原理的書,配有豐富的實(shí)例,很不錯(cuò)。《Essential COM》以C++為引子,從本質(zhì)上解析com的實(shí)現(xiàn),迄今為止,將com解析的最透徹的一本書。 2、實(shí)戰(zhàn)com: 《深入解析ATL》,將C++泛型編程和面向?qū)ο缶幊探Y(jié)合的典范,簡化了我們用C++開發(fā)COM的流程。 經(jīng)過三個(gè)階段的學(xué)習(xí),我們對(duì)C++有了充分的了解。下面我們就享受它給我們帶來的樂趣。COME ON , ENJOY IT. 附書單: 《The C++ Programming Language》 《c++編程思想:第一卷》 《c++編程思想:第二卷》 《c++標(biāo)準(zhǔn)程序庫》 《effective c++》 《more effective c++》 《STL源碼剖析》 《c++ templates》 《泛型思想》 《多型與虛擬》 《Inside com》 《Essential COM》 《深度探索c++對(duì)象模型》 《深入解析ATL》 《深入淺出MFC》 |
|