1. 程式人生 > >計算機專業學習淺談

計算機專業學習淺談

  三、運籌帷幄,掌握程式設計的思想

  程式設計與開發是計算機學習的一個關鍵環節,程式設計能力是衡量一名計算機專業人員素質的重要考核點。這是因為程式是連線理論與實踐的紐帶,是電腦科學與計算機技術相交融的領域。作為一名計算機專業學生,我們一方面有別於其它專業將計算機作為工具的應用型人才,不能僅僅利用計算機,而要為他人利用計算機提供平臺;另一方面我們暫時達不到電腦科學家的水平,不能做出理論研究成果,但能為理論學習鋪墊實踐基礎。因此,只有具備足夠的程式設計與開發能力,才能真正體現我們的智慧,同時充分發揮計算機的潛力。

  學習程式設計,首先應掌握至少一門程式設計語言。C語言作為一種語法清晰、功能強大、應用廣泛的高階語言,長期以來被國內大多數高校的定為程式設計必修課。全面理解和掌握C語言的脈絡的重要意義這裡毋庸多言。市面上C語言的教程多如牛毛,但最經典的當數C語言的設計者Kernighan與 Ritchie 合著的權威白皮書——《C程式設計語言(第2版)》(《The C Programming Language》中文版,機械工業出版社)。書雖不厚,但絕對全面而準確。其語言簡潔,例證通俗,實用性強。相比之下國內的一些C語言教材在學習曲線可能比前者平滑,但它們往往以考試為導向,過多地糾纏語法死角,同時大都未遵從ANSI標準。對於計算機專業學生來說,前者能夠讓我們看到更加嚴謹與實務的態度。當你的語言功底達到一定程度後,就需要從一個更高的視角來探察語言的本質,不妨看看這本:《計算機程式的構造和解釋(第2版)》 (《Structure and Interpretation of Computer Programs》中文版,機械工業出版社)。它闡述了程式語言本身的機制與實現,同時引入了一門對於大多數中國學生來說不甚瞭解的語言——LISP。 LISP是很多美國高校計算機專業的入門語言,也是一種結構上與C、Pascal、Java、Basic等完全不同的非馮·諾依曼語言。研讀SICP,體味LISP,給你耳目一新的感覺之後更多地可以加深對程式設計思想本質的理解。

  大學的各類程式設計與開發課程旨在培養我們兩方面的能力——演算法設計能力與應用開發能力。前者偏重電腦科學,後者偏重計算機技術。演算法是用計算機思維解決現實問題的理論,具有較強的數學性。演算法學的曠世鉅著應數Knuth的《計算機程式設計藝術》(《The Art of Computer Programming》中文版,清華、機工、國防等出版社皆有授權),不過要徹底讀懂這個大部頭需要相當的數學理論基礎與程式設計實踐經驗積累。對於初學者,建議首先培養使用常規演算法解決小規模問題的能力,並行地提高駕馭語言的水平與抽象問題的思維。針對這個目的,結合程式設計實踐一類的課程,可以讀讀這幾本書:《程式設計珠璣(第2版)》(《Programming Pearls》中文版,中國電力出版社)、《程式設計實踐》(《The Practice of Programming》中文版,機械工業出版社)、《程式碼閱讀方法與實踐》(《Code Reading: The Open Source Perspective》中文版,清華大學出版社)、《C專家程式設計》(《Expert C Programming》中文版,人民郵電出版社)。它們的側重點各有不同,但對於通過實踐來學習演算法與資料結構都是很有益處的。

  應用開發方面,實踐是第一要務,然而高效的實踐是建立在科學的程式設計方法之上的。以C語言為代表的結構化程式設計方法是規範的程式邏輯的基礎,目前主要使用在系統級開發中,前面所提到的諸多書籍都或多或少有所涉及。而以Java、C++為代表的面向物件程式設計方法廣泛應用於實用專案開發, 這方面的經典之作中,推薦閱讀Bruce Eckel的《Java程式設計思想(第3版)》(《Thinking in Java》中文版,機械工業出版社)與《C++程式設計思想(第2版)》(《Thinking in C++》中文版,機械工業出版社)。此外軟體架構設計、編碼規範與風格、程式碼除錯與質量管理以及軟體工程的各類原則在實際專案開發中都是及其重要的,在具備了一定的程式設計經驗、準備投入一些實際專案開發的時候務必要了解。建議閱讀《程式碼大全(第2版)》(《Code Complete》中文版,電子工業出版社)這本大而全的軟體構建綜合性寶典,它在從總體上指導軟體開發的各個環節的同時也引入了一些細節問題(諸如 goto的使用)的討論,引導我們對一些司空見慣的程式設計理念不但要知其然,而且要知所以然。

  有一位熱衷於遊戲的同學告訴我,遊戲給予他滿足控制慾的空間。但是請放眼看看,遊戲的控制範圍不外乎一個特定程序中他人預先設定好的一系列資料,並以有限的影象與聲音形式體現出來。然而如果你掌握了程式設計這一強大的武器,就能夠面對眼前的計算機遊刃有餘,在硬體條件允許的情況下盡你所能將控制慾昇華為創造力,方便自己的同時造福他人。運籌帷幄,掌握程式設計的思想,無論走向科學研究或是應用開發,這都將為你奠定堅實的基礎!