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