推薦書目名稱或網址
原文第二版:http://shop.oreilly.com/product/0636920033677.do
中譯第一版:http://books.gotop.com.tw/v_A360
適合閱讀此書或網站的程度/對象
有基礎的 C 語言和 Unix-like 系統知識的讀者
簡介
我要先提醒這本書的準讀者,這不定一本典型的 C 語言教科書。例如:在這本書中,作
者會教你把常用的標頭檔都集中寫在某個檔案中,即使程式因此多加了幾千行,編譯時間
也花不到幾秒;另外,本書作者每次在編譯程式時,都會加上 -g 參數,其實程式也沒增
加幾 KB,但是卻多了許多除錯用的資訊。另外,本書中約有三分之一的篇幅是在討論 C
語言的語法以外的內容,主要是介紹 C 語言的生態圈,這些內容在典型的教科書中相對
少見。
本書的前言介紹了一些 C 語言的背景知識,以及作者對於本書的一些想法,可以稍微看
一下。之後,本書的正文分為兩部分,第一部分是環境,介紹現代的 C 語言相關工具;
第二部分是語言,以和一般教科書不同的角度,探討許多 C 語言的語法。
在第一章中,快速地介紹了許多 Unix-like 系統上的套件,之後主要是討論各種編譯 C
語言軟體的技巧,畢竟,無法順利産生執行檔的話,就無法使用 C 程式碼。對於新手來
說,本章的步調可能會有些過快,至少先習慣 make 的使用方式和 Makefile 的寫法。
第二章介紹開發相關的議題,包括除錯、測試程式、撰寫文件等。第三章中,以
Autotools 發布以 C 語言撰寫的軟體。這兩章對於有志學習開發相關工具的讀者來說,
可以做為入門的教程。
第四章以 Git 為例,介紹版本控制的基本觀念。透過這章的內容,可學會基本的版本控
制軟體的使用。這章算是相對簡單的主題。
第五章以 Python 為例,介紹如何以C 語言撰寫其他語言的延伸模組。這是一個相對進階
的主題,通常都散見於各語言的進階教程中,對於想結合 C 和其他語言的讀者,可以讀
一讀本章的內容。
第六章帶著讀者複習了指標的概念。由於指標是學習 C 語言的重要主題,本書在第二部
分的第一個章節就介紹相關內容。而在本書後續的章節中,也會用到指標,對於指標還不
熟的讀者,可以利用機會好好學習一下。
第七章介紹一些過時的 C 語法,以及替代的做法。本章的內容不會很難,但是可學到不
少實用的概念。
第八章介紹一些前置處理器的使用技巧及 const 關鍵字的相關議題。雖然前置處理器的
雷很多,仍然有時候會需要使用。這些議題在一般的書上相對少見,需要的讀者可以看一
看。
第九章介紹以 C 語言處理字串的方式。由於在 C 語言中,原本的字串處理方式相對較低
階,故作者引入一些較新的方式,以減輕程式設計師的負擔。
第十章的前半部介紹以 array 和 struct 為參數的函式,其中使用到一些相對少見的前置
處理器技巧,如果有需要撰寫此種函式的讀者,可以看一看。後半部則介紹以 void 指標
達成 C 語言的泛型程式,算是相當實用的內容。
第十一章介紹如何以 C 語言撰寫物件導向程式,這是本書最有趣的一章。不過,C 語言
的物件導向程式,和傳統的物件導向不太相同,而是使用 struct 和函式結合的方式撰寫
。雖然這章的內容不一定會用到,善用本章的方式撰寫程式,的確可以妥善地整理程式碼
第十二章介紹數個第三方的 C 語言函式庫,有需要的讀者可自行參考。不過,本章隱含
的觀點是,善用第三方函式庫,可以省下不少程式設計師的時間。
讀後心得
總和來說,本書涵蓋相當多的主題,而且,本書的步調相當快速,讀起來十分地充實。然
而,想要順利地閱讀本書,讀者需要基礎的 C 語言和 Unix-like 系統相關的知識;如果
讀者發現本書的內容過於艱澀,建議先暫時放下本書,補充相關知識後,再繼續讀下去。
補充說明(Supplement):
本書的作者 Ben Klemens 主修的是經濟學和社會科學,所以,對於程式的思考方式和資
訊出身的程式設計師有所不同,讀者不用對這本書的內容照單全收,但這本書的確有可參
考之處。
另外,C/C++ 不是小弟主力的語言。小弟平日較常寫 Perl/Python/Ruby。
如果本文有錯誤之處,希望板上各位大大不吝指正。