|
先說一些廢話,可以跳過不看。 我主張,在具備基礎(chǔ)之后,學(xué)習(xí)任何新東西,都要抓住主線,突出重點。對于關(guān)鍵理論的學(xué)習(xí),要集中精力,速戰(zhàn)速決。而旁枝末節(jié)和非本質(zhì)性的知識內(nèi)容,完全可以留給實踐去零敲碎打。 原因是這樣的,任何一個高級的知識內(nèi)容,其中都只有一小部分是有思想創(chuàng)新、有重大影響的,而其它很多東西都是瑣碎的、非本質(zhì)的。因此,集中學(xué)習(xí)時必須把握住真正重要那部分,把其它東西留給實踐。對于重點知識,只有集中學(xué)習(xí)其理論,才能確保體系性、連貫性、正確性,而對于那些旁枝末節(jié),只有邊干邊學(xué)能夠讓你了解它們的真實價值是大是小,才能讓你留下更生動的印象。如果你把精力用錯了地方,比如用集中大塊的時間來學(xué)習(xí)那些本來只需要查查手冊就可以明白的小技巧,而對于真正重要的、思想性東西放在平時零敲碎打,那么肯定是事倍功半,甚至適得其反。 因此我對于市面上絕大部分開發(fā)類圖書都不滿——它們基本上都是面向知識體系本身的,而不是面向讀者的??偸前严嚓P(guān)的所有知識細(xì)節(jié)都放在一堆,然后一堆一堆攢起來變成一本書。反映在內(nèi)容上,就是毫無重點地平鋪直敘,不分輕重地陳述細(xì)節(jié),往往在第三章以前就用無聊的細(xì)節(jié)謀殺了讀者的熱情。為什么當(dāng)年侯捷先生的《深入淺出MFC》和 Scott Meyers 的 Effective C++ 能夠成為經(jīng)典?就在于這兩本書抓住了各自領(lǐng)域中的主干,提綱挈領(lǐng),綱舉目張,一下子打通讀者的任督二脈??上н@樣的書太少,就算是已故 Richard Stevens 和當(dāng)今 Jeffrey Richter 的書,也只是在體系性和深入性上高人一頭,并不是面向讀者的書。 最近我閑逛各技術(shù)社區(qū),最深的一個感受,就是開發(fā)者的niubility value也跟中國社會的 income distribution 一樣,呈現(xiàn)嚴(yán)重的兩極分化狀態(tài)。所以我建議那些老鳥們,多做一點提綱挈領(lǐng)的總結(jié)工作,把真正緊要的東西總結(jié)出來,給社區(qū)一些貢獻(xiàn)。 我現(xiàn)在只在業(yè)余時間看看技術(shù),寫寫程序,聊以自娛,對于最近一年多的風(fēng)起云涌,了解有限。下面所說,如果有錯誤,請指出。 言歸正傳。 C++0X出來之后,網(wǎng)上對它的討論已經(jīng)很豐富,大大小小幾十個新的特性,如果詳細(xì)論述,當(dāng)然又是一本(平庸的)厚書。但在我看來,其中很多特性是不用花太大精力的。分這么幾類: 1. 亡羊補牢的,早就應(yīng)該有,沒有就該遭雷劈的。比如unordered_table, shared_ptr/weak_ptr, regexp, auto/decltype。 2. 錦上添花,可有可無的。比如 tuple, array container, range-base for, initializer lists, delegate/inheriting constructors, nullptr等等。 3. 犄角旮旯,庫開發(fā)專用工具,一般不推薦使用的:如static_assert、可變模板參數(shù)等。 4. 還不成熟的,沒有完全想清楚的:主要是 thread,其中的 future, promise等抽象,勇氣可嘉,但有早產(chǎn)嫌疑,仍需留院觀察。 那么C++0X中真正的主角,值得你投入精力去學(xué)習(xí)的,有可能對你的編程實踐構(gòu)成重大影響的,我認(rèn)為就三個東西: 1. Rvalue reference; 2. function/bind; 3. Lambda expression and closure. 這三個東西,網(wǎng)上的討論也已經(jīng)有很多了。我也來湊湊熱鬧,會陸續(xù)寫三篇簡明扼要的東西,介紹它們的厲害。
|
|
|