abstract:學(xué)C++一年多了。自覺(jué)應(yīng)該已經(jīng)跨過(guò)了初學(xué)的檻,快要入門(mén)了?!俺鯇W(xué)xxx應(yīng)該怎么學(xué)?”,得看你想用xxx做什么。比如C++,如果你只想通過(guò)考試,那你只要把那本薄薄的教材看幾遍,代碼抄一抄改一改。如果你想用C++干活,那么顯然你需要完整地把《C++ Primer》《Effective C++》等書(shū)看完,同時(shí)要掌握CS專(zhuān)業(yè)要學(xué)的其它基礎(chǔ)課程,比如數(shù)據(jù)結(jié)構(gòu)與算法、計(jì)算機(jī)組成原理、操作系統(tǒng)、數(shù)據(jù)庫(kù)、編譯原理
學(xué)C++一年多了。
自覺(jué)應(yīng)該已經(jīng)跨過(guò)了初學(xué)的檻,快要入門(mén)了。
“初學(xué)xxx應(yīng)該怎么學(xué)?”,得看你想用xxx做什么。
比如C++,如果你只想通過(guò)考試,那你只要把那本薄薄的教材看幾遍,代碼抄一抄改一改。
如果你想用C++干活,那么顯然你需要完整地把《C++ Primer》《Effective C++》等書(shū)看完,同時(shí)要掌握CS專(zhuān)業(yè)要學(xué)的其它基礎(chǔ)課程,比如數(shù)據(jù)結(jié)構(gòu)與算法、計(jì)算機(jī)組成原理、操作系統(tǒng)、數(shù)據(jù)庫(kù)、編譯原理,還有計(jì)算機(jī)網(wǎng)絡(luò)。(可以先讀讀《CSAPP》、《CLRS》,剩下的等需要的時(shí)候再讀)
看書(shū)的過(guò)程中免不了自己造輪子,拆輪子。
輪子有大小。小的有簡(jiǎn)單的,只涉及數(shù)據(jù)結(jié)構(gòu)和算法的輪子。其實(shí)刷題可以滿(mǎn)足這一階段的需求。我覺(jué)得刷幾十道題,把常用的數(shù)據(jù)結(jié)構(gòu)過(guò)一遍就好了。(注意你的編碼規(guī)范)
再往上呢,可以將學(xué)過(guò)的知識(shí)串在一起,做一個(gè)自己喜歡而又力所能及的東西。這個(gè)過(guò)程你要學(xué)會(huì)定義自己要解決的問(wèn)題,設(shè)計(jì)解決方案,并將其實(shí)現(xiàn)。然后想辦法優(yōu)化?!按得蟠谩保沁@個(gè)階段最寶貴的品質(zhì)。盡可能多嘗試一些方案,C++給了你這個(gè)自由。
到這里也許你會(huì)覺(jué)得,你已經(jīng)熟悉C++的語(yǔ)法。但現(xiàn)實(shí)往往會(huì)給你很大的打擊。這時(shí)候可以讀讀《深度探索C++對(duì)象模型》這類(lèi)書(shū),陶冶一下情操。然后你發(fā)現(xiàn)之前讀《C++ Primer》和《Effective C++》等書(shū)時(shí)不理解的內(nèi)容一下被激活了,真爽。(前提是你真的有在寫(xiě)代碼)
到這個(gè)階段時(shí),也許你已經(jīng)制造了許多讓人不忍直視的代碼。迫切地想了解如何寫(xiě)出真正可靠的代碼。那么你可以讀讀《STL源碼剖析》這類(lèi)的書(shū)。這些書(shū)可以鍛煉你閱讀源代碼的能力。這就是拆輪子??纯磩e人的輪子長(zhǎng)什么樣。(一定要選好榜樣?。。?br/>
然后大概就是,自己嚴(yán)格按照標(biāo)準(zhǔn)造個(gè)輪子吧。
簡(jiǎn)單總結(jié)一下。C++之所以難,不僅僅是語(yǔ)法層面上的難,而在于使用它的領(lǐng)域相對(duì)于其它語(yǔ)言有更嚴(yán)格的要求。這要求你有良好的CS功底,了解計(jì)算機(jī)系統(tǒng)的工作原理,了解C++究竟在做什么。這種困難體現(xiàn)在學(xué)習(xí)路線的陡峭上,你需要較多的前置知識(shí),需要大量練習(xí),需要警惕編譯器和你的想法有出入(誤。你不應(yīng)該寫(xiě)出依賴(lài)未定義行為的代碼。)。可能在某一天你會(huì)突然明白,啊,原來(lái)這就是C++。這時(shí)即使你說(shuō)不上精通C++,至少也是一個(gè)合格的程序員了。
以上都是我的個(gè)人見(jiàn)解,也許不是最佳選擇。但應(yīng)該不至于誤人子弟。