[如何學習寫程式] #3 - 買書的學問

這應該大概是很多初學者都會問的問題,我也看過論壇上很多人都在問說特定的技術要買什麼書比較好,其實買書並不難,重點是在讀書,如果書買回來了都不看,那買那本書有什麼用呢?另外一種情況是,書買回來了,卻都看不懂,那那本書對你有什麼實質的幫助呢?買書是應該要為自己的專業或知識有成長,而不是為了買而買。

這應該大概是很多初學者都會問的問題,我也看過論壇上很多人都在問說特定的技術要買什麼書比較好,其實買書並不難,重點是在讀書,如果書買回來了都不看,那買那本書有什麼用呢?另外一種情況是,書買回來了,卻都看不懂,那那本書對你有什麼實質的幫助呢?買書是應該要為自己的專業或知識有成長,而不是為了買而買。

對於這個問題,我的回答一向都是:請自己去書店翻一翻看一看,如果你可以看的下書的內容,那麼它就是適合你的書。

雖然網路書店很多,也有很多人都上網去買書,但在網路上買電腦書最大的缺點是,你沒辦法看到內容(即便有試讀章節也不一定準,因為試讀章節不一定是作者親自選的)。大多數的電腦書在書店內不會用膠膜封住,隨手從書架上拿下來翻一翻,不會花你多少時間的,透過簡短的試讀,你可以很快的知道這本書適不適合你,通常只要能看個五分鐘以上,那這本書就應該會適合你,但如果低於三分鐘,那表示這本書你買回去後大概也不會讀吧。當然這是我自己的測量基準,你當然可以依你的基準來算,但原則上都是一樣的,不要買一本回家後只會拿來墊泡麵或是當磚頭的書,那是很沒有經濟效益的行為。

如果你是才剛要踏進資訊領域,或之前完全沒摸過電腦的話,那當下你不應該去買程式設計類的書,你需要的是一本充份介紹電腦這個領域的書(例如計算機概論)。我想在你剛進來的時候,至少要對這個領域有一點基本的了解,也可以順便做好心理準備,因為資訊領域的學問,不是一本薄薄的計算機概論就可以完全 Cover 的,而且建議要找那種會講到基礎理論的概論書 (例如 Computer Science: An Overview 這一本),而不是隨便找找只會講軟體應用的計算機概論,我不是說軟體應用不重要,但相較於寫程式的工作而言,它真的不是那麼重要。但如果你想做的工作是業務,秘書或是行政類的工作,那軟體應用就很重要了 微笑

如果你對資訊領域有了一點點基礎的概念,而且看到數字系統 (二進位,八進位,十進位,十六進位那種) 的轉換和邏輯閘不會恐懼的話,那你就可以找一本很初階的 Visual Basic 或 C++ 的書來看了。在挑程式語言的書的時候,在初學階段最重要的就是大量的撰寫程式,你可以不用寫到一些像 stack 或 queue 這種會用到資料結構 (data structure) 的程式,但至少在初學的階段要對型別的選用,函式,靜態與動態的區分,迴圈與運算子,流程控制以及基本的類別寫法等要練到能夠有自然的反應,能在短時間內就在腦中呈現流程圖的能力,要達到這個目標,大量寫程式是最快的捷徑。

另外,我想你一定多少有聽過某些領域中有所謂的聖經 (Bible),例如學作業系統原理一定要看恐龍書 (Operating Systems Concept),學資料庫系統一定要看 Fundamentals of Database Systems,學計算機結構一定要看白算盤 (Computer Organization and Design, Third Edition: The Hardware/Software Interface),學管理資訊系統一定要看 Laudon & Laudon 的 Management Information Systems,學演算法必讀 Introduction to Algorithms 等等,對於想要以一本書來窺全貌的初學者來說,買聖經本來看是我比較推薦的,但不要急於將它看完,因為初學者對很多知識都不夠充份,也沒有太多的經驗,通常不太可能一下就看完,除非你把它當小說來看 微笑

最後我想要提一下的是,在翻書的時候,不要忽略作者序 (Preface) 和導讀,這兩個部份會呈現作者在寫你手上這本書時的想法和方向,也會點出閱讀這本書所需要的能力和基本知識要求,我就犯過因為沒看序而買錯書的錯誤 (雖然那本真的是經典啦),而且透過作者序,可以和作者直接的對話,作者會告訴你這本書的寫作方向與想法,讓你在閱讀內文前就可以對書中的內容有大致上的了解。然而不是每本書都有作者序和導讀,這時你就只能由內文來決定了。

參考資料:

  • 我的買書與觀察經驗。