剛剛看過這篇《30 years of C》,回想了這幾年的學習曆程。
在大學裡,我學習的第一門程式設計語言是C,但花時間最多的還是C++。大約五年前,開始啃《 C++編程思想》兩卷本,用Dev-cpp在機器練習著書上的常式,之後又學習了物件導向編程、模板、STL。憑著這些紙上談兵的經曆,參加了數學建模比賽,寫了幾個數值計算與運籌學的小程式,小有成就感。再之後參加ACM程式設計比賽,這期間受到ACM代表隊的老師和同學的影響,開始接觸Unix並接受自由/開源軟體的思想。但是在參賽期間,我發現學會了C++、STL這些還是不能把那些問題搞定。然後總結失敗原因可能是基礎不牢、內功不夠,於是開始返工,重學C和資料結構。買了一盒A4列印紙,把紙對摺開來練習在紙上用C寫代碼。今天,當我看到《30 years of C》裡的這一句“ I just read the book cover-to-cover and wrote out the exercises on paper. ”很有共鳴。紙上寫代碼頗有寫散文的感覺,當然也是形散而神不散的。Knuth早就說過類似的話,編寫程式的過程能給人以美的享受,就像寫詩作曲一樣。我想他老人家應該也有過紙上寫程式的經曆。言歸正傳,寫完了那一盒A4紙之後,比較順序地考上研。考完研在家做UVA上的題目就感到輕鬆多了,從那時起信奉格言"No magic,Just basic“。讀研之前,加入一個團隊做了四個多月的MFC編程,那幾個月的時間也讓我明白了物件導向與軟體架構的重要性,當時還憧憬在讀研期間在這兩方面打下基礎。沒想到因緣際會,上研後呆的實驗室裡有幾台大機器,跑的是Solaris/Linux之類的系統,所以研究生階段的大部分時間是在Unix系統上用C編碼,這樣也好,因為我本科畢業前就成為了開源信徒,在Unix系統裡編程正好能無限滿足精神需求。研究生畢業前夕,發覺Unix編程的功底還不夠(尤其是網路編程),無奈之下還是憑著前幾年積累的C++底子找到了工作。七月畢業後立即到崗工作,到現在四個月時間,又轉換了開發環境,現在Windows平台上用C++編程。經過這一波三折,最終還是成為一名Windows C++程式員。今天看到部門的一些學習資料和這份文檔《Google C++ Style Guide》,突然感到自己在C++方面還只是入門級水平。
五年過去了,算是學到了一些程式設計的基本知識,接下來還得繼續學習與實踐,也繼續享受著編程帶來的快樂。
PS:
Google C++ Style Guider http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml
中文版的在這裡 http://www.yulefox.com/20080710/translation-google-programming-style-01.html/