VOOZH about

URL: https://read01.com/4d5GAO.html

⇱ 對國內C語言教材的一點感想 - 壹讀


Sunday, Apr 12, 2026

對國內C語言教材的一點感想

2014/12/10 來源:電子工程世界
像中國的絕大多數同行一樣,我在學校里也是通過譚浩強的《C程序設計》開始學習C語言和編程的。

經過幾年的軟體開發工作,回過頭來看看就總覺得這位譚老師是一個很少自己編寫程序的老學究,至少缺乏編寫大型複雜軟體項目的經驗。他的書裡面沒有經驗建議,也沒有自己獨到的見解,只有完全正確的規範。感覺是ANSI C標準的翻譯版,中規中矩,了無趣味。看完了也只能是知其然而不知其所以然。所以僅僅合適當工具書(但說起C語言工具書又有哪本書敢和K&R的《The C Programming Language 》爭鋒,或者你也可以直接下載一篇ANSI C的標準)。

而國外的很多C語言書是由C語言創始者或擁有幾十年經驗的質深程式設計師編寫的。這些書里更重要的是融入了作者多年的編程經驗。在書中匯集了很多技巧和建議,筆鋒犀利而又常常不失幽默,能將一個複雜深奧的問題闡述的淺顯易懂。即使你使用了多年C語言之後,隨手翻翻這些書,仍時常會對作者獨到見解深受啟發、拍案叫絕。但是看很多國內的教材卻總是覺得味如嚼蠟。還常常喜歡公式到公式的推導,將一些明明是很簡單的問題弄得深奧晦澀。

舉一兩個簡單的例子:

1.運算符優先級問題

譚浩強的《C程序設計》只是在附錄中將ANSI C里有關運算符優先級的規範抄了一遍,區區兩頁。當然這樣最穩妥,最不會出錯。

在《Pointers On C》中作者不僅詳細解釋了運算優先級,還分析了C語言規範中定義不清的地方,也就是告訴讀者C語言中哪裡存在陷阱。此外還對在各種編譯器中的運算結果進行比較。可以看出作者頗費了些心思。

而在另一本書——《實用C語言編程》/《Practical C rogramming》中作者建議道:你只需要記住乘除的優先級高於加減,其它地方一律加上括號。我經歷過幾次對著運算符優先級表幫別人查軟體BUG以後,就把這句話作為編程原則發給每個新來的人。

2.編程風格

譚浩強的書從不涉及編程風格,可能是因為C語言規範中沒有這方面的規定,也可能他自己就沒意識到編程風格的重要性。

而在絕大部分國外的入門級編程書籍中常常都會單辟一章詳細介紹編程風格,因為良好的編程習慣要從一開始培養。養成好習慣很難,壞習慣一學就會。

現在對剛參加工作的大學畢業生做的最多的培訓就是編程風格培訓。因為他們絕大部分對縮進式風格、命名規則、注釋的重要性等等都一無所知。但即使這樣常常也達不到效果,因為這些學生早就在學校里養成了只要能實現功能,其他都無所謂的習慣。這應該算誰的責任?

不是說譚浩強的書不好,只是覺得國內大學裡的很多所謂教授的應酬太多、賺錢太多、實踐經驗太少、學術研究太少。寫出來的書同國外的經典書籍比起來整整差了一個檔次。這些在剛剛接觸C語言時可能感覺不到的。但過了多年後才發覺以前走了不少的彎路,自己花了幾年總結的經驗教訓,實際上在很多國外的優秀書籍里早就有了。

當然也不是天下烏鴉一般黑,國內的C語言教材就全都一文不值。我看過清華大學裘宗燕教授的《從問題到程序--程序設計與C語言引論》就很不錯。裡面匯集了裘老多年C語言教學的經驗,書寫得也非常用心和嚴謹。另外裘老的很多翻譯作品也是經典中的經典,如《C++語言的設計和演化》、《C++程序設計語言(特別版)》、《程序設計語言——實踐之路》等等
您可能感興趣
免責聲明:本文內容來源于電子工程世界,文章觀點不代表壹讀立場,如若侵犯到您的權益,或涉不實謠言,敬請向我們提出檢舉
最新文章 / 服務條款 / 私隱保護 / DMCA / 聯絡我們

壹讀/READ01.COM