C++學習之道
學習C++有一段時間了,其中走了不少彎路,也的確瞭解了很多學習的方法,今天回過頭來回顧一下,以示後來者。
學習大的方針:具體方法,使用書籍很多人都講過,也講的很詳細,但是大的方針卻時常看到有討論,比如有的人提倡多看書,有的人提倡直接編,利用書為參考,甚至有的人說他編程就是從MSDN上學的。這些問題我也曾迷茫過,也曾偏激過,當學了很久卻感覺沒有什麼收穫,結果一天的實際編程卻感覺收穫匪淺的時候我曾以為學習編程不就是人們說的“編!編!編!”,“學習編程就是去編” 嗎?於是丟開數本,投入自己感興趣的東西的開發。可是編程碰到疑惑之處網上四處求解,CSDN,google USENET上四處發帖詢問,卻常常難以釋疑之時,有的時候看了看書,卻豁然開朗,原來大師們都已經對此問題習以為常,併當常識講解出來,一時大歎,讀一本好書真是如撥雲霧。又常常長時間看書,讓實際編程荒廢。
現在回過頭來想想,常常是矯枉過正,徘徊在編與學之間。孔子談學習之道:“學而不思則罔,思而不學則殆。”其實可以套用到C++的學習中來,那就是“編而不學則罔,學而不編則殆”。也就是說,光去編程而忽視了學習,就會學編越糊塗,光是學習,卻不去實際編寫程式,那麼學到後面忘了前面,相當於什麼都沒有學到。個人提倡是將所有的時間都對半分,一半時間用來仔細研讀書本對照實踐,一半時間用來對你自己感興趣的題目進行實際的編程。這樣一方面保證了學習進度,讓你感覺到每天的收穫,而且能在實際編程中找到成就感,運用所學並積累解決實際中碰到問題的經驗,兩者互為補充。這樣才是最好的學習C++的方法,應該也適用於所有的編程當中。
對於是否先學C語言是有很多爭議的,個人認為看情況。看個人想法,志向。目標只在編寫日常普通應用程式的,可以不學C,甚至個人感覺學C++也不見得好,直接去學JAVA,C#或者Python這樣的指令碼語言都要更好,但是對於目標在編寫效率較高的程式,如系統開發的話,那麼學習之路坎坷異常,別的不說,個人推薦首先從C學起,並且一邊學習一些基礎知識,比如電腦硬體系統相關的知識,甚至基礎的組合語言,甚至作業系統原理,編譯原理。當然個人推薦數學學好,以方便研究演算法。同時在C時代就開始學習各類演算法,假如要學windows編程的話這時也可以學習Windows SDK編程了。因為C++對於演算法的學習和windows編程的理解不見得有甚好處。這時最困難的時期,也是決定你真正將來的時期,畢竟這些都是非常基礎的,卻也是非常關鍵的東西。就像建房高度關鍵在於地基牢不牢固一樣。當然,假如已經錯過了這樣的時期,已經學習了C++和MFC的話,那麼將來結束完一段時間的C++,MFC學習,也推薦回頭看看演算法知識和windows SDK。有需要加快簡單程式的編寫,後期開發windows程式,利用C#.Net技術,稍微的學習一下應該不難了。個人感覺如此,我從不知道C#是什麼,尚能編寫蹩腳的.Net程式,對於掌握了這樣的基礎,再學習過C#的話,編寫起來應該不成問題。當然有人也說可以用C++編寫.NET程式,說實話個人也有過這樣的嘗試,但是總感覺大堆的::和^不如C#來的方便,既然都已經到這份上了,為什麼不直接用C#算了呢?
後面的一大堆都是個人初步的經驗,不一定正確,前面的實在是個人的實際經驗。希望對大家有協助。