我的編程之路 - 寫給學習計算機專業的同學們(轉)

我的編程之路 - 寫給學習計算機專業的同學們

其實嚴格說來我的本科並不是計算機專業,而是信息與通信工程。從我小學的4年級第一次看到中華學習機的那一天,我就被它徹底迷住了。從那以後,對電腦和編程的熱愛與日俱增,直到後來來到國外攻讀計算機專業碩士,從事軟件工程師工作,才正式開始了軟件開發的職業生涯。


回想過去20年間一點點接觸電腦和編程的經歷,再看看現在計算機(或者說廣義的計算設備)如此普及,以及如此豐富的編程平臺和開源軟件,最想說的一句話就是:現在的同學們太幸福了!


記得我還在讀初一的時候,參加了學校的計算機興趣小組。那個時候,我們學校資金比較寬裕,專門配置了一個機房,主要以中華學習機爲主,還有兩臺蘋果II。這些在那時對我們這些半大不小的孩子來說已經相當了不起了。可惜的是學校沒有系統學過編程的老師,只是讓一個懂無線電的老師帶我們,從BASIC語言學起。我就是從BASIC語言明白了順序,循環和分支。不管怎麼說,他也算是我的啓蒙老師吧。初中最大的成就是寫了一個考試成績的統計程序,後來用於我們初中三個年級期末考試的排名次。接觸到真正的PC應該是初三的時候,我們機房突然多了5臺神祕的臺式機,藏藍色的屏幕(那時候還不是彩顯)讓人非常向往。後來知道那些連286都不是,估計是8086的PC。對這些真正PC的嚮往,讓我充滿了動力,於是我在一個我在一個晚上學會了DOS的基本命令,又在一個下午學會了盲打輸入。從此就告別了中華學習機,轉向PC的GW (長城)BASIC。


到了以後的高中時代,學校機房換成了清一色的286,老師有一臺386。那時是WPS的時代,我整天就忙着擺弄各種DOS軟件,偶爾打打小遊戲,至於編程就沒有什麼長進。後來迫於高考壓力,機房去的少了。不過對於電腦的熱情未減,每次有機會開機的時候,看到C:/提示符就有一種莫名的興奮感。


我係統化的學習編程,數據結構和操作系統是從大學開始的,當然因爲中學的一點點基礎讓我學起來比別人容易一點,我的計算機相關課程都是優秀。另外一個原因是父母在我考上大學的時候立刻給我買了臺電腦,於是我有了完全屬於我的第一臺電腦,上機的時間就多了許多。


我在大學前三年都是以C語言爲主,做課程設計也是。其實通信專業的計算機課老師水平真不怎麼樣,除了操作系統之外其他老師水分都挺大。於是我自己憑着興趣,學習一些圖形庫的調用,使用繪圖命令。還有實現一些算法,比如著名的八皇后。我當時只有一個編程環境,就是Turbo C 2.0。其實中間也有想學C++,可是讀起教材就像是看天書,太多術語,只好暫時作罷。直到大四的時候,因爲我不考研,閒的時間很多,所以硬着頭皮開始自學C++。後來自己入門了,而且對C++的面向對象方式產生了極大的興趣。那時微軟的Visual C++很紅,我當時誤以爲Visual C++就等於MFC和Windows圖形界面編程,於是狂買書自學Windows編程。猜猜我當時對Visual C++癡迷到什麼程度?我記得大四的那個春節,我家人都出去拜年了,我就一個人在家裏編程。


後來出國以後,由於國外開放式的教育,讓我眼界大開。這才認識到Visual Studio只不過是一個開發環境,如果不做Windows上的GUI開發,不需要學習MFC。另外除了Windows平臺的工具之外,還有其他很多平臺比如Mac和Linux, Unix系列。到了公司以後,認識到作爲一個軟件工程師,其實並不是在學校那樣總是從零開始寫算法,而是要經常用到API,用到第三方的組件。當然還有如何寫出平臺無關的代碼,軟件工程這些方面的就不多說了。


講了半天都在說歷史,其實本文的真正重點是給同學們一些建議,希望大家在學習中提高自己的編程水平,少走彎路:


1.儘量不要太依賴Windows和微軟的開發工具。國外著名的計算機學院如Waterloo,UBC給學生使用的默認操作系統都是Linux/Unix系統,如Suse Linux,Fedora,Sun Solaris等。對於個人電腦我比較推薦Mac,因爲Mac OS X是Unix內核,既可以使用Unix的開發工具和開源軟件,又具有漂亮的圖形界面,Windows上的衆多軟件基本都可以找到相應的Mac版本。至於開發工具,使用Linux並不一定要求必須使用命令行編輯器比如vi,其實圖形界面的IDE往往編程效率更高,因爲有語法顯示。我比較喜歡Eclipse,雖然主要爲Java設計,但是它對C++支持也還不錯,而且可以單步調試。


最後說說Visual Studio,其實我還是常常使用VS,它確實是非常優秀的代碼編輯器和調試工具,甚至可以說是微軟最好用的產品(我個人認爲)。現在Visual Studio Express 可以免費下載,真的非常方便。如果實在喜歡Windows環境,它是個學習編程很不錯的環境。像我之前所說的,使用VS不要急與去了解Windows圖形界面開發,而是把它當作編譯環境,學習標準的C/C++編程語言和STL。學習編寫動態鏈接庫也是非常重要的。


2.計算機繪圖和動畫:喜歡graphics編程的同學們,我強烈建議從OpenGL學起,理想的課本是Computer Graphics (A Top-down approach with OpenGL)英文原版。這本書從圖形學原理講起,結合OpenGL實例,是非常好的教材。OpenGL是學術研究和工業設計標準圖形接口,而DirectX往往用於遊戲,而且侷限於Windows平臺,所以前者更適合學習使用。現在OpenGL也用於iPhone上的遊戲開發,因爲它的可移植性非常好。


3.圖形用戶界面GUI:如果對GUI感興趣,建議使用Qt。Qt現在是開源軟件,支持多個平臺,可以輕易編寫出跨平臺的圖形界面軟件。從學習難度來講,Qt比MFC容易太多太多了。我認爲Qt的signal-slot模型比Windows的消息和事件模型更容易理解,也很好使用。其實Qt除了GUI之外,還有許多組件庫,例如字符串,文件讀寫,XML,網絡等等,幾乎涵蓋了開發應用的各個方面。


4.數據庫:現在太多應用離不開關係數據庫了,所以一定要學。同樣我建議使用開源或免費的平臺,例如MySQL。可以在瞭解數據庫原理之後,學習MySQL的API,寫一些基於數據庫的應用。


5.網絡及面向服務:在網絡時代一定要懂得Java和麪向服務的思想,感興趣的話可以瞭解Web application,AJAX這方面的開發和應用。現在這個方向是熱點,如果留意的話可以發現很多網站都提供API調用他們的服務,例如Google,  Flicker等等,接口可以是REST,JSON,SOAP等等。其實這也概念雖然新,但學習起來並不困難。特別是Java對網絡編程的支持相當好,如果你習慣了C或者C++,用Java會覺得容易很多。


其實計算機學習的涵蓋面實在太廣,我不可能一一涉及。我的重點是想讓同學們開闊自己的眼界,充分利用現在良好的條件和豐富的開源軟件,使自己迅速的成長起來。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章