來說說C語言方面的圖書。什麼,C語言?有讀者奇怪了。沒錯,這一次的主角就是誕生於1973年如今已經兒孫滿堂的C語言。我們之所以要談及C,不僅僅是因為它的影響深遠,這完全可以從C系列語言家族的興旺發達得到證明:C++、Java和C#以及Objective C等C的子孫先後成為軟體業或者各種作業系統上的主流語言,雄霸多年,至今不衰。我們的理由主要來自C語言自身的魅力。30多年之後,它並沒有因為歲月的流逝而失色。無論是TIOBE這個程式設計語言風向標,還是圖書市場的銷售情況都表明,在兒女輩的C++甚至都略顯疲態的今天,C竟然是僅次於Java的第二大語言。
C語言相關的圖書雖然數量一直不少,但往往取材於相似的資料來源,總體品質不高。而從市場銷售資料的來看,許多讀者在選擇C方面的圖書時仍然比較盲目,存在一定劣幣逐良幣的情況,這在很大程度上已經成了許多軟體開發人員基礎不牢、壞毛病較多的病根之一。
經典
與其他主流語言中往往有幾部著作堪稱不可替代的經典不同,C語言的世界裡只有一本書擁有這樣無上的地位,它當然就是C語言之父Dennis Ritchie和另一位技術專家Kernighan合著的這部不朽之作:
C程式設計語言(第2版·新版)Brian W.Kernighan, Dennis M.Ritchie徐寶文 李志 譯 機械工業出版社30元
本書經常被人簡稱為“K&R C”(K和R分別是兩位作者姓氏的頭字母),它在程式設計語言圖書中的地位幾乎與C在程式設計語言中的地位相當。許多書開始用輸出“Hello World!”作為第一個例子,就是從這裡來的。有意思的是,最近又有人批評這一慣例容易使學生產生編程很容易的錯覺,產生了許多後續問題。雖然也言之成理,但是總有些苛刻了。
本書具有許多貝爾實驗室大師們作品的一致優點,篇幅很小,但是內容卻非常豐富,而且敘述也非常清晰。與大部分father寫的作品一樣,它主要還是針對有一定編程經驗的讀者而寫的,不是完全的入門讀物。當然,這也為他人編寫形形色色的入門教程留下了空間。對了,本書還有配套習題集《C程式設計語言(第2版·新版)習題解答》(機械工業出版社,2004),也有影印版。
C標準庫P. J. Plauger徐明亮等譯 人民郵電出版社(即將出版)
函數庫是程式設計語言的重要組成部分。但是此前出版的所有C語言著作中,對函數庫都缺乏非常全面深入的闡述。本書的出版,將很好地填補這一空白。作者是著名的C/C++專家,曾經擔任標準化委員會主席和C/C++ User's Journal的主編。更重要的是,他本人是一位著名的函數庫開發人員,為許多主流的編譯器廠家提供函數庫實現。本書幾乎做到了極致——完整給出了C標準庫的實現原始碼,並一一進行解說。這使它有了與K&R C並列的資格。
入門
我經常感到納悶的是,其實C語言方面近年來已經出了不少優秀的入門書,但是為什麼還是有很多讀者和老師放著好書不用,仍然在選擇那些已經不能適應現在要求的、問題很多的傳統主流教材甚至翻抄濫造的書呢?
總的來看,目前比較好的入門圖書有翻譯自國外的,也有國內原創的。相對而言,這些優秀教材有一個共同的優點,就是能夠緊密結合開發實戰,是為用而教、而學,而不像有些國內教材,因為作者本身往往缺乏實際軟體開發經驗,只能為教學而教學。由此帶來的特點包括:注重軟體工程,注重讀者正確編程習慣和風格的培養,從實戰需要出發選擇側重點,而不是平面化地去講述各個知識點。
C語言程式設計:現代方法K.N.KING呂秀鋒 譯 人民郵電出版社55元
有人稱讚本書為“近10年來最好的一部C語言著作。”已被全球200多所學校採用為教材,包括哈佛大學、麻省理工學院、斯坦福大學等諸多名校。書中對C語言主要知識點包括函數庫的涵蓋都很全面深入。有些遺憾的是,此書原版出版時間較早,無法納入C99標準的新特性。不過,新版今年已經出版了,中文版相信也會很快更新。
C程式設計經典教程:第4版Harvey M.Deitel,Paul J.Deitel聶雪軍 賀軍 清華大學出版社43元
另一部大名鼎鼎的C語言著作,教材採用也很普遍。新版涵蓋了C99。
C Primer Plus中文版(第五版)Stephen Prata人民郵電出版社60元
一本條理清晰、見解深刻的C語言教程。涵蓋C99。內容很全面。
此外,還有Stephen Kochan《C語言編程(第三版)》(電子工業出版社)、Eric Roberts《C語言的科學與藝術》(機械工業出版社)、Hanly和Koffman《C語言詳解(第5版)》(人民郵電出版社)等都是比較優秀的入門教材。國內近年出版的之中,哈工大蘇小紅等的《C語言大學實用教程(第2版)》(電子工業出版社)、四川大學陳良銀等的《C語言程式設計(C99版)》(清華大學出版社)是其中的佼佼者。
進階
C專家編程
PETER VAN DER LINDEN徐波 譯 人民郵電出版社45元
C陷阱與缺陷ANDREW KOENIG高巍 人民郵電出版社30元
C語言沒有Effective C這樣的著作,其空白大概只有這兩本書可以稍微填補,都屬於不朽經典之列。最近中文版再次出版,反響熱烈。
此外David Hanson的《C語言介面與實現:建立可重用軟體的技術》是lcc作者之一的嘔心之作,本來價值極高,但是毀在了翻譯上,無法推薦了。
實戰
C語言解惑
ALAN R. FEUER
楊濤 譯
人民郵電出版社
29元
本書內容最初是貝爾實驗室的內部培訓資料。作為C語言學習的輔導書,非常有用。
C語言名題精選百則技巧篇
冼鏡光
機械工業出版社
44元
本書作者是密西根技術大學的教授,選材較精,而且代碼品質也比較高。
<!--[if !supportEmptyParas]--> <!--[endif]-->
參考
C語言核心技術
Peter Prinz;Tony Crawford
O'Reilly Taiwan公司 譯
機械工業出版社
C語言參考手冊(英文影印版)(第5版)
Samuel P. Harbison, Guy L. Steele
人民郵電出版社
55元
兩本書都是優秀的查詢手冊,而且都涵蓋了C99。可惜的是,前者中文版沒有索引,廢去一半武功;後者中文版翻譯較差,只能推薦影印了。
C語言目前應用仍然非常廣泛,按道理還應該包括嵌入式系統編程和單片機編程方面的圖書,但是一時竟找不到合適推薦的,只能空缺。讀者如果有所發現,請告我為盼。