譚浩強老師的《C程序設計》據說已經累計發行超過1000萬冊,然而網上的批評和質疑之聲卻似乎跟這個銷量數字很不相稱。很多人認為譚老師的書錯漏百出,害人無數。甚至有人認為譚根本就不懂編程,各種質疑和貶損之聲更是不絕於耳。
最近逛知乎,看到一篇文章,我先不負責任的轉載了,然後再表表我的看法。
原文作者:林建入 (文章著作權歸作者所有)
一些同學學不好C語言,把罪責歸於“因為教材是譚浩強寫的”實在是很滑稽。
譚浩強老先生 1934 年生,現在已經 80 歲了。他 1958 年從清華大學自動控制系畢業,那年 24 歲。要知道 C 語言那時候都還沒誕生,計算機都是大型機,原始又笨重,當時譚浩強學自動化控制這一專業可以說是比較尖端的。光從這一點上,就可以說,他是同時代人裡非常非常聰明的那一類人。
現在許多人批評譚浩強的《C 程序設計》的一個重要理由是“不符合C99標准”。但我們要知道 Dennis M. Ritchie 在 1972 年才推出 C 語言的第一個版本(當時譚浩強 38 歲),那時的 C 語言並不成熟。事實上 C 語言的第一次標准化一直到 1989 年才完成(俗稱C89),請注意那時候譚浩強已經 55 歲了!
55 歲,你退休了沒?
而更重要的是,1989 年那個時候,互聯網的發展即使是在全球來看,也是非常非常初級的,更別說國內。因此信息獲取的渠道極其狹窄。舉個例子大家就能明白,我們現在浏覽網頁所用的萬維網協議,就是在 1989 年那一年,由當時在歐洲粒子物理實驗室的Tim Berners-Lee和他的同事一起發明的。
也就是說,一直到譚浩強 55 歲退休的時候,C 語言才剛剛完成了第一版本的標准化,而整個世界的互聯網甚至還不支持通過浏覽器來浏覽!
時間再往後十年,到了 1999 年的時候,C99 標准終於問世。但因為這一標准比較新,大部分編譯器還不能支持其中的許多特性。因此大部分沿用的還是 C89 的特性。在這樣的背景下,第二年,譚浩強的《C 程序設計》出版了,而這一年,譚浩強已經 66 歲了。
拋開譚浩強 66 歲依然寫作這一點不談,若是站在當時的背景下來看待,事實上這本書也還是可讀,可學,有價值的。但軟件行業發展飛快,現在高校若繼續沿用這一教材,就不合時宜了。
譚浩強的《C 程序設計》這本教材好不好?現在的觀點來看當然不好。現在想學習 C 語言的人,不推薦采用他的書。但這主要是因為軟件行業發展快速,他的書籍內容較老導致的。我們可以就書論書,但有些不明就裡的同學從書出發指責譚浩強“不懂編程,水平低”等等,就是不對的了。
下面是我的一些評論和觀點。
首先,1)譚老師的書確實錯漏較多,主要的“錯漏”在於對C99的標准滿足的很不好(有很多網帖專門輯錄了這本書裡的錯誤,無需我在這詳表)。2)由於譚老師寫書的那個年代還沒有(或者可能還沒有)面向對象或者軟件工程之類的概念,所以他的書基本上連變量命名規則都很受诟病。
況且,現在資訊這麼發達,知識的門檻在現代科技的力量下已經一降再降。各種外版書,內版書層出不窮,讀者的選擇多了,就連可選的精華也多了。如果說他的書還在售賣,我個人認為這只能說是出版社為了賺錢而做出的不負責任的行為。在市場經濟中,也很正常。畢竟“天下熙熙皆為利來,天下攘攘皆為利往”。
從以上角度來看,譚老的書確實該退出歷史舞台了,廣大讀者們也不要再去看他的書了。
其次,網絡上那些對譚老師的貶損之詞我確實是不能認同的。這一點我基本認同林建入的看法。我們應該把問題放在特定的歷史背景和環境下去看待。如果把時間往回推個近30年,我們絕對不應該抹殺譚老師工作的難能可貴與其卓越的貢獻。下面這段話同樣引用了知乎上的網友(牟旭東)留言:
“脫離時代背景談一個時代產物,所得到的評價和結論並不准確。假設時光倒退20年,回到那個沒有網絡,連外文技術書影印版都沒有的年代,我們來到某高校的計算機機房,詢問一個盯著286屏幕,使用軟盤裡的Turbo C編寫和調試代碼的同學,覺得譚浩強口碑如何時,得到的答案可能更加的真實。”