程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 到底該如何看待譚浩強的“C程序設計”

到底該如何看待譚浩強的“C程序設計”

編輯:關於C語言

到底該如何看待譚浩強的“C程序設計”


譚浩強老師的《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編寫和調試代碼的同學,覺得譚浩強口碑如何時,得到的答案可能更加的真實。”

這個我深有感受。我覺得《聖斗士星矢》絕對是一個經典。然後有一次我問一個93年出生(且熱愛日漫)的男生,覺得《聖斗士星矢》如何。他的答復是,(當然他說的是動畫片)一打開發現畫質太差,立馬關閉了,完全接受不了。

現在一個大學本科的物理專業學生所掌握的物理知識就已經超過牛頓了。但我們難道能據此蔑視說牛頓水平太差嗎?即使是過去持有錯誤認識的人在當時的歷史背景下,我們都不能因為他的某些錯誤和偏執而否認他的傑出貢獻不是嗎?畢達哥拉斯就曾完全否定無理數的存在。康托提出集合論的時候,克羅內克也曾針鋒相對地反對過康托的觀點。但現在人們仍然推崇畢達哥拉斯和克羅內克是人類歷史上的偉大數學家。我相信譚老師對於在中國普及計算機編程和推動計算機教育的開展方面是有重大貢獻的。至於那些略帶人身攻擊的貶損之詞,大家還是收收,學會用謙虛寬和的心態看待一位八十多歲的老者吧。

總結:譚浩強的《C 程序設計》確實已經不合時宜,但是譚老師的貢獻也不可抹殺,他過往的工作仍然值得尊重。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved