我是1987年考入大學(xué)的,盡管我學(xué)的是“機(jī)械”專業(yè),但是從第一學(xué)期開(kāi)始我就“迷”上了程序設(shè)計(jì),那時(shí)學(xué)的是Basic語(yǔ)言。也正是這種濃厚的興趣使我走上了VC之路。
我記得,在大二那年還參加過(guò)Fortran語(yǔ)言選拔賽,但很遺憾,我輸?shù)暮軕K,這給了我很大的打擊,繼而開(kāi)始懷疑自己在這方面的能力。
1991年我被分配到一所高校,專門從事基礎(chǔ)教學(xué)工作。在業(yè)余時(shí)間里,我開(kāi)始尋求一種方向,巧的是第二年教研室就購(gòu)置一臺(tái)286PC機(jī),從此人變得“瘋狂”起來(lái),先后自學(xué)了Turbo Pascal、Turbo C語(yǔ)言、FoxBase等。那時(shí)純粹是一種興趣,不過(guò)我學(xué)語(yǔ)言有一個(gè)習(xí)慣,那就是必須用它來(lái)做些東西,從用TC做的簡(jiǎn)單2D繪圖軟件到用FoxBase做的數(shù)據(jù)庫(kù)管理等等。這以后,常用程序去解決一些實(shí)際問(wèn)題,例如《點(diǎn)陣打印機(jī)的圖形灰度打印》、《圖形光標(biāo)控制技術(shù)》、《鼠標(biāo)中斷技術(shù)》、《提高圖形漢字顯示速度》甚至《圖形動(dòng)態(tài)定位中的“模糊”技術(shù)》等等。
98年1月,我開(kāi)始用Visual C++(4.X)做碩士課題,這時(shí)才發(fā)覺(jué)自學(xué)語(yǔ)言的真正的不易和艱辛。當(dāng)時(shí),Visual C++圖書資源在國(guó)內(nèi)很少見(jiàn)。也正是這種環(huán)境導(dǎo)致一些粗制濫造的所謂“指南”與“教程”的出現(xiàn),我是深受其害,這些書只教如何簡(jiǎn)單的操作,對(duì)于一些稍深入且極為有用的定制卻從未提及。不過(guò),有兩本書在98年的時(shí)候給了比較大的幫助,一本是《Visual C++5.0教程》(宇航出版社,1998年3月),它只有90頁(yè)卻讓我明白了VC++能做些什么,另一本是《Visual C++ 4.x入門與提高》(清華大學(xué)出版社,1997年9月),它讓我明白除了MFC外還有另一種編程方法(Win32 API方式),并從此深刻體會(huì)到MFC的精妙之處:通過(guò)“應(yīng)用程序向?qū)А眲?chuàng)建的應(yīng)用程序框架使們不必添加太多的代碼就能實(shí)現(xiàn)最常用的程序功能,通過(guò)“類向?qū)А笨梢詫?shí)現(xiàn)消息映射、添加類……。
很快,到了98年底,我的課題也已經(jīng)完成了。不過(guò)在做課題過(guò)程中,我還多了一個(gè)心眼:凡是自己認(rèn)為有獨(dú)到的地方,就整理出來(lái),“順便”向期刊雜志社投一投。99年3月,《計(jì)算機(jī)應(yīng)用》雜志發(fā)表了我的一篇文章《VC++控件的漢字及顏色的編程控制》。也正是這篇文章,使我有緣認(rèn)識(shí)了當(dāng)時(shí)青島出版社的負(fù)責(zé)人樊老先生,他幫我出了三本關(guān)于Visual C++的書籍。不是因?yàn)槲业乃礁,是因(yàn)樽髡唠y找,不過(guò)現(xiàn)在就大不一樣了。
快到99年底,我才看見(jiàn)潘愛(ài)民的譯著《Visual C++ 技術(shù)內(nèi)幕》(第四版),當(dāng)時(shí)這本書給我的震動(dòng)很大,使我意識(shí)到自己的不足。并從此更加深深感到,Visual C++絕不可以速成的,必須在實(shí)踐中去磨練,并且要選定一個(gè)方向。這個(gè)體會(huì)我曾在一本書的前言中描述過(guò),“學(xué)習(xí)編程語(yǔ)言的傳統(tǒng)方法是……選擇好一本關(guān)于該語(yǔ)言的標(biāo)準(zhǔn)書加以仔細(xì)閱讀,邊學(xué)邊用邊提高。然而,這種學(xué)習(xí)方法對(duì)VC++語(yǔ)言未必適用……一種全新的方法值得一試,……正如著名小說(shuō)家金庸先生曾經(jīng)對(duì)這種方法描述的那樣:當(dāng)需要某個(gè)主題內(nèi)容時(shí),你必須大量收集此方面的有關(guān)資料并快速有效地加以深入研究;他舉了一個(gè)例子,在金庸小說(shuō)中有許多關(guān)于藥材及醫(yī)學(xué)方面的細(xì)致描寫,這些內(nèi)容都是在極短時(shí)間內(nèi)對(duì)大量醫(yī)學(xué)資料深入研究的結(jié)果,雖然他的臨床經(jīng)驗(yàn)不如醫(yī)生,但他的理論知識(shí)卻能略勝一籌。……”。
2000年初的時(shí)候,同校的一個(gè)教授幫了我,給了我著手研究Visual C++的培訓(xùn)內(nèi)容(教材)的機(jī)會(huì),并在電子工業(yè)出版社出版一本《Visual C++實(shí)用教程》(2000年8月)。通過(guò)“編寫”,使我理解了為什么還有許多人在深入研究Win32 API的編程。因?yàn)镃++的魅力是無(wú)人能抗拒的,并且現(xiàn)在的我也越來(lái)越喜愛(ài)它。這使得我一不小心就轉(zhuǎn)到了Visual C++ .NET中的托管C++方向上。但是C++的內(nèi)容遠(yuǎn)比普通的語(yǔ)言要深?yuàn)W的多,尤其是托管C++。
當(dāng)我對(duì)C++有了比較多的了解之后,才發(fā)現(xiàn)原來(lái)一直未能理解的MFC程序內(nèi)部機(jī)制一下子懂了許多。
2001年,我又去進(jìn)修,成了一名在職博士生,但是方向依然不是“計(jì)算機(jī)”。因?yàn)槲乙恢闭J(rèn)為“計(jì)算機(jī)”僅僅是一種工具,在經(jīng)濟(jì)時(shí)代,由于“利益”的驅(qū)動(dòng),這個(gè)“工具”將會(huì)越來(lái)越先進(jìn)。更好地駕馭它,并為自己的研究所用,應(yīng)該是每一個(gè)“非計(jì)算機(jī)專業(yè)”程序愛(ài)好者所要達(dá)到的目標(biāo)之一。
2002年3月,天極網(wǎng)給了我一次機(jī)會(huì),出了一本《Visual C++ .NET編程實(shí)戰(zhàn)》。并且在天極網(wǎng)的大力支持下,我成了一名MVP,我很榮幸地得到這個(gè)榮譽(yù),它使我有更多的機(jī)會(huì)了解并掌握Visual C++ .NET的最新技術(shù)。我非常感謝天極網(wǎng)!
回顧自己走過(guò)的路,我所帶給Visual C++初學(xué)者的“學(xué)習(xí)啟示”可以有下列幾條:
(1) 要對(duì)程序設(shè)計(jì)有濃厚的興趣,這是學(xué)習(xí)Visual C++的基礎(chǔ)條件。興趣的高低決定你對(duì)它掌握的程度。
(2) 不必遵循先學(xué)C++,再學(xué)Visual C++的次序。因?yàn)樗鼈冎g的側(cè)重點(diǎn)有很大的不同,C++著重于C++編程思想的培養(yǎng),而Visual C++著重于Windows應(yīng)用。但是,有了C++基礎(chǔ)肯定會(huì)對(duì)學(xué)習(xí)Visual C++有幫助。
(3) 先找一本比較薄的Visual C++書看看,知道Visual C++能做什么,以及實(shí)現(xiàn)的基本過(guò)程。
(4) 學(xué)習(xí)Visual C++一定要在項(xiàng)目中去做,或者說(shuō)你用Visual C++要做什么。一開(kāi)始可以選用你看到的應(yīng)用程序。例如,計(jì)算器、記事本、簡(jiǎn)單圖形繪制軟件開(kāi)發(fā)等等,甚至比較高級(jí)的主題,如OpenGL、DirectX等也都可以,總之你必須用它做事!
(5) 常備一些資料可以幫你走一些捷徑以及得到一種規(guī)范。例如:
《Visual C++ 技術(shù)內(nèi)幕》(第四版或第五版或第六版)
《Windows程序設(shè)計(jì)》(第五版)
《C++程序設(shè)計(jì)》(這種教材到處都是,各有利弊,只要你認(rèn)為可以就行)
《STL教程和參考手冊(cè)》(標(biāo)準(zhǔn)模板庫(kù)的使用將成為一種規(guī)范)
《數(shù)據(jù)結(jié)構(gòu)與算法》(有了這個(gè)基礎(chǔ),代碼的價(jià)值就高了)
《軟件工程》(讓自己知道軟件開(kāi)發(fā)的過(guò)程和相關(guān)策略)
(6) 常去幫助他人或發(fā)表文章,以獲取更多的學(xué)習(xí)機(jī)會(huì)。
(7) 關(guān)注他人的最先成果,以激發(fā)自己拚搏的精神。
(8) 通過(guò)認(rèn)證考試,讓你獲得更成功的回報(bào)。例如微軟MCSE和MCSD認(rèn)證考試等。
(9) 當(dāng)你覺(jué)得對(duì)MFC比較熟悉了,C++也還可以了,你就經(jīng)常打開(kāi)“\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\src\mfc”(Visual C++ 6.0在\Program Files\Microsoft Visual Studio\VC98\MFC\SRC”)中的源代碼看看。當(dāng)然肯定有很多看不懂,沒(méi)關(guān)系,看多了你就不會(huì)覺(jué)得MFC神秘了。并且,你不久還會(huì)發(fā)現(xiàn),www.codeguru.com中的界面(包括控件)定制代碼其實(shí)與MFC源代碼相差沒(méi)有多少。
好了,就這么多啦!