我在南大的七年

文/劉未鵬

跨進南大校門的第一天,我知道,我自由了。

父親是個對新事物有強烈興趣的人,村里第一台電視機是他自己組裝的,當時全村人都跑過去看,電視機只能收到一個台,cctv。座機電話是第一個裝的。大哥大剛出現的時候,他也是第一個買來用的,那個時候的行動電話真是貴得離譜。

父親告訴我的第二件最重要的事情是:遇到任何問題,找書去就行。他在自己的專業中完全是自學的。在不屬於自己的專業中也全都是靠買書自學。

為什麼說到這兩件事情,因為這是對我一生影響最重大的兩個習慣。第一個習慣給了我學習新東西的強烈動機,有了熱忱和興趣,做事情就不覺得累,就自得其樂。第二個習慣則給了我學習任何新東西的方法——不會么?查書去。

高三的時候,父親買了電腦,我立時對這個神奇的事物產生了強烈的興趣,每期的《電腦愛好者》和《電腦報》都會買來細細看,有時看到各種小工具、技巧還會摘抄下來,回去在自己家裡的機器上搗鼓。那個時候我並不知道這樣單純的興趣會把我引向一條專業的程式設計師道路。

高三時間變得越來越緊,分配給興趣的時間越來越少,但興趣的火花一直都沒有熄滅。

跨進南大校門的第一天,我知道,我自由了。

這個自由並不是說我可以做任何事情了,而是我得到了一個重要的決策的自由權,即關於如何利用我的時間。

聯考的時候我報了計算機系,但分數差了幾分,失之交臂,被調到第二志願專業——信息與計算科學。當時以為這個專業跟計算機相關的,結果發現是數學系,後來聽不少同學提到都上了同樣的當。

這裡出現了一個歪打正著的事情:我本意並不是上數學系,如果當時知道這個專業是數學系,我可能就不會填報了。但正是因為這個錯誤,我在數學系好歹也受了一些數學基本功的訓練,回過頭來看這個基本功在後來還是幫了不少的忙,甚至有一陣子我對數學本身到了很感興趣的程度。不得不說,這段學習的經歷是很鍛鍊抽象和邏輯思維的。另一方面,困難如數學都學了,對其他學科就不覺得難,不會望而卻步。

這是我成長過程中的幸運之一。後面還會提到,還有好幾次更大的幸運。

大一上學期很快過去,應該是在大一下學期的時候,學校要開一門c++課程。我利用假期先把課本基本啃掉了,當時動機也很簡單,先啃掉,就不用上課了嘛。

另一件事情是我經常喜歡去逛書店,看到侯捷的《深入淺出mfc》上面很多人說這本書好,我當時也對c++有一些基礎認識和好感,所以就買下來啃了。一方面侯捷先生寫的書的確圖文並茂,深入淺出,有意思,另一方面理解一樣複雜的東西是個智力挑戰。所以看著看著倒是覺得興致盎然。卻不知就這么和c++結下了不解之緣。

這是另一個歪打正著:為什麼說是“歪打”呢?因為mfc的設計也並不能說就是c++的best practice,另一方面若是以用為本的話也未必就要把mfc的原理摸個透。所以搞不好現在看來我就不會細看這本書。為什麼說是“正著”呢?因為理解一個費解的東西本身需要長時間投入注意力,無形中練了理解能力和思維體力,另一方面雖然mfc不是最佳設計,但理解裡面的代碼卻加強了對c++本身的認識,這是基本功;也加強了對c++的興趣,這是動力,後來這個動力驅使了我去看了大量的系統底層知識,從作業系統代碼一直看到硬體體系結構。

大二發生了幾件重要的事情:一是我在程式設計師上發表了第一篇技術文章,是剖析boost源碼的。我已經不記得什麼時候、通過什麼途徑知道boost這個庫的了,總之是知道了,然後也是由於受到侯捷先生源碼剖析的影響,也去看原始碼,發現很難,越是難就越是覺得有趣,跟蹤代碼到臨晨四點居然越看越精神了,後來火速寫了一篇源碼剖析。發給《程式設計師》雜誌的技術主編孟岩先生,孟岩先生給了很大的鼓勵,於是我很來勁。後來一鼓作氣分析了n個庫,寫了一系列的boost源碼剖析的文章,在網上隨處可以搜到這個系列。