無聊的下午,來個(gè)小小的總結(jié)吧,想到哪寫到哪,呵呵。
這幾天被項(xiàng)目里的MFC折磨在,雖然自己耐著性子又開始在學(xué),但是還是覺得進(jìn)度非常緩慢。其實(shí)去年的時(shí)候也有過一次用MFC做的項(xiàng)目實(shí)訓(xùn),但第一次接觸MFC的時(shí)候就覺得那就是一怪物,純的??!寫起程序來都覺得惡心。于是乎,在心里油然而生的抵抗情緒作用下,我毅然去當(dāng)了項(xiàng)目組的TL,也不再愿去碰那堆亂七八糟的MFC代碼了。
我自從進(jìn)入大學(xué)以來,學(xué)習(xí)編程已經(jīng)有近4年了,從一開始我接觸到的就是OO的思想,所以到現(xiàn)在為止,在潛意識里仍然還保留著當(dāng)年老師一遍遍跟我們講授的經(jīng)典名言“everything is an object”。哈哈,對這句話真是很有感情?。?/p>
編程語言,最開始的時(shí)候我是學(xué)JAVA的(好吧,我承認(rèn)我連C語言都沒學(xué)過,不要BS我,不是我的錯(cuò))。學(xué)校里安排的課程大多也都是用的JAVA。年少無知的日子是多么美好啊,JAVA曾經(jīng)一度是我心目中最完美的語言,以致于對第一次在數(shù)據(jù)結(jié)構(gòu)課上老師所使用的那個(gè)被稱為C++的東西意見天大?!盀槭裁匆褂眠@么垃圾的語言??!”,可我當(dāng)時(shí)真就是這么想的,“語法復(fù)雜,甚至連標(biāo)準(zhǔn)都不統(tǒng)一,內(nèi)存都要自己手動(dòng)管理”。就這么稀里糊涂的過了幾年,慢慢的,由于課程需要開始耐著性子看些C++的書,一路看下去卻如同哥倫布一樣看出了個(gè)“新大陸”。從那門名叫“C++高級程序設(shè)計(jì)的選修課上”開始,我迷上了這門當(dāng)年讓我厭惡不己的語言。準(zhǔn)確的說,現(xiàn)在我的JAVA都已經(jīng)荒廢多時(shí)了,把博客放到這也是這個(gè)原因。
可是夢想成為一個(gè)C++高手的路卻不是那么好走的。
同寢室的同學(xué)一路沿著JAVA那條線走來,現(xiàn)在已經(jīng)整天研究些ExtJS, Hibernate,Spring,Struts(當(dāng)年還因?yàn)榘堰@個(gè)詞讀成structs被人暴笑 T_T)這些在我看來都已經(jīng)是兩個(gè)世界的東西了,更別說那些css,javascript之類他們早已非常熟悉的東東了。寢室有一哥們也就用了兩三晚上就用PHP整出一網(wǎng)站出來,雖然知道有模板,但還是讓我感覺驚訝不己。
反觀我現(xiàn)在,除了會用VS拖幾個(gè)控件之外貌似就只能在cmd下面研究一下cout,cin了。我都不明白這是為什么?時(shí)間也用了不少,可是還是感覺做不出來什么像樣的東西。不少人都跟我說,C++是用來做底層的,是要注重效率寫算法的,可心里還是非常不平衡啊。
于是這次趁著畢業(yè)前的一點(diǎn)空閑時(shí)間,我又耐下心來打算學(xué)學(xué)MFC??戳艘稽c(diǎn)關(guān)于windows API的基礎(chǔ)知識。一開始寫MFC,我,又徹底的暈菜了。某天我想把一個(gè)int值轉(zhuǎn)成string顯示出來的時(shí)候。我被神奇的卡住了,而且還是一上午 T_T 神哪,在JAVA,C#里這算是問題嗎?之后經(jīng)過若干次嘗試,求助N本書之后,問題終于解決了。使用stringstream轉(zhuǎn)換成功。剛高興了沒半分鐘,問題又來了。顯示在CEdit控件里的就是亂碼,郁悶吶。最后我把書上的代碼拿來抄了一遍,我KAO,居然還是不行!
于是乎,我坐下來,緩了下神。然后,不是開始再次的嘗試,而是開始在心中暗罵MS。它娘的,沒事整這么多變量啊,宏定義干嘛啊。用string不行么,非要弄出個(gè)CString;LPCTSTR這鬼東西不就是個(gè)char*,莫非換個(gè)馬甲就變帥了?
/*
---------------
文中
的確是內(nèi)心所想,各位看官一笑而過即可,不必與我爭論其中正誤
-------------------
*/
?
BS微軟N次之后,我又開始思考一個(gè)困擾我很長時(shí)間的問題。
對于生性喜歡有挑戰(zhàn)性的我來說對新鮮的事物總是想一探究竟。當(dāng)年我第一次被MFC嚇跑之后,我一直對windows下的GUI編程念念不忘。時(shí)常想尋找一個(gè)比較“完美”的C++實(shí)現(xiàn)的方法。也是那個(gè)時(shí)候,我才知道人們對于MFC的爭執(zhí)。似乎反對派將其說的一無是處(當(dāng)時(shí)看的時(shí)候不禁心中暗爽,又為自己不學(xué)這個(gè)找了個(gè)理由,呵呵)也是那個(gè)時(shí)候,我還了解了QT,VCF,WTL還有wxWidgets等等庫。可問題是which one ? 我那個(gè)時(shí)候連被人爛熟的MFC都一點(diǎn)不會,就開始學(xué)這些我聽都沒聽過的東東?這些東西真像我想要的那么好么?就是我學(xué)了,別人用這個(gè)嗎……當(dāng)時(shí)腦子里的問題多多,還糾結(jié)了頗久一段時(shí)間。無奈后來還是選擇都放下了。因?yàn)椋乙獪?zhǔn)備考研了……
痛定思痛
我認(rèn)真總結(jié)經(jīng)驗(yàn)之后,得出結(jié)論,我必需要選擇一樣了,是好是歹完了之后再說吧,于是就有了我與MFC的第二次搏斗!此外,還有一個(gè)很嚴(yán)重的問題就是,關(guān)于基本功的問題。以前,我自認(rèn)為學(xué)習(xí)C++時(shí)間不短了,原來都是井底之蛙。想要精通任何一項(xiàng)技能都是不容易的。更何況C++這門曾經(jīng)被多少人瘋狂研究過的“超級語言”。
基本功差吧,那就補(bǔ)吧??墒菑哪睦镅a(bǔ)起呢,據(jù)說C++是從C語言里演化出來的,那么從C開始?
No,我的OO神經(jīng)這樣告訴我。
那好,看點(diǎn)C++的新東西吧。于是我看那本評價(jià)頗高的C++Primer。嗯,書上這么教導(dǎo)我們:孩子,多使用C++的新特性吧,STL里有容器,用吧;char* 字符串,扔到垃圾桶吧,這里有更好的string……哈哈,看書的時(shí)候心里巨爽,這語法,多么美妙。
可是我一合上書就深深體會到一個(gè)道理——現(xiàn)實(shí)是殘酷的!我眼里所看到的代碼,全都是各種各樣的混合體。char* 的字符串依然滿天飛,還有那些C語言里我都沒見過的函數(shù)。
唉,混亂啊,what do I do ?
呼~~ 這個(gè)點(diǎn)不早了,先寫到這歇了。明天太陽一樣出來,日子照過,慢慢來吧。