為什麼這麼多人噴譚浩強的C語言程序設計?
譚書講的不深,錯誤很多,這是公認的缺點。我認為譚書的目標讀者是初學者。初學者的目的應該是入門。譚書內容簡單,從這點來看適合入門。譚書錯誤多,但是無論誰學編程並不是讀了譚書就可以的,讀完譚書後下一步必然找其他教材或通過其他方法深入研究。只要能夠分辨是非,譚書的錯誤不至於使人誤入歧途。有些東西的對錯是絕對的,有些東西的對錯與利弊就要對個人而言。這也是為什麼最初希望大家儘量客觀回答。
老譚的書的問題在於他不出新版本。不過考慮到學校到現在還是在用VC6,其實VC6那個年代用老譚的書也不能說不行,但是你學完了之後要幹什麼呢
很大一部分同學學不好C語言,把罪責歸於“譚浩強寫的書錯誤很多”這實在是很搞笑。譚浩強老先生 1934 年生,現在已經 80 歲了。他 1958 年從清華大學自動控制系畢業,那年 24 歲。要知道 C 語言是1972年推出的,計算機都是大型機,原始又笨重,當時譚浩強學自動化控制這一專業可以說是比較尖端的。光從這一點上,就可以說,他是同時代人裡非常非常聰明的那一類人。
現在許多人批評譚浩強的《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 語言的人,不推薦採用他的書。但這主要是因為軟件行業發展快速,他的書籍內容較老導致的。我們可以就書論書,但有些不明就裡的同學從書出發指責譚浩強“不懂編程,水平低”等等,就是不對的了。
我是計算機科學與技術專業的畢業生,2011年大時候大一上學期便學了C語言程序設計,正是譚浩強的,當時我記得很奇葩的一件事,老師讓我們找書中的錯誤,誰找出來這學期誰不會掛課。結果一個女生髮現了書中的錯誤,老師很義氣的說你不會掛課,由此可見當時的書中的確有很多錯誤。但是譚浩強屬於中國研究計算機相對較早的前輩,他的書還是有很多參考價值的。
我記得我們上c語言課時我們老師就推薦了,譚浩強先生的c語言程序設計,那麼私下的我看了一個教程是郝斌老師的c語言程序設計的教程,郝斌老師也推薦了譚浩強先生的c語言程序設計,也沒有什麼不好的,關鍵是現在比如說,php是世界上最好的語言windows是世界上最爛的系統,進入卡吧什麼筆記本吧,筆記本吧加錢升加到三萬八,用linux的vi的就是大神,這已經是一些大家公認的坑一些調侃的話語我覺得不能算是真正的回答。
我當初學C語言,用的就本書,而且我當時是自學的,完全沒人教,時間是1997年前後。當時,我找了三、四本教材,當然都是國內的教材。唯一看的懂的就譚浩強的這本,概念講的很清楚,是可以自學的教材。為什麼很多人認為它很多錯誤呢?關鍵在於它成書很早,最早應該是90年代初的,但是呢,後來雖然出了幾版,可是內容沒什麼改變,這就有問題了,他寫這本書時用的是turbo c 2.0,而turbo c 2.0是1989年出來,連C89標準也沒來得及實現。所以,這本書很落伍了,關鍵在於沒有與時具進的修改自己的書,這是譚的問題。所以,不建議再用這本書學C語言,但它其中的一些內容可以參考,尤其是指針的部分,從原理上講的很清楚,至於其中不符合現代標準的,自己排除掉。
另外要說一點,譚浩強當時出了好幾本程序語言的書,除了C語言,還有basic、pascal、fortran等語言,在這些書中除了語言本身,還著重介紹了一些算法,可以讓讀者建立基本的算法思想,這一點就是現在來看,都是很有意義的作法。但在C語言這本書中,因為C語本身比其它那些語言複雜,內容也多,所以對算法的介紹不如其它書詳細,譚浩強當時也是建議,先看任意一本其它語言書,瞭解了基本算法後,再學C語言這本書。
程序猿,學c出道的。工作好幾年了。暫且以個人眼光來看譚浩強出的書,不代表大眾觀點。
他的書看過,以考試為目的,那這本書應該比c語言的發明人寫的the c program language這本書好。因為考試都是考一些細節技巧的寫法。就跟中國考英語語法一樣。學了10年英語語法,每次都能考100多的人,結果還是不會說英語。茴香豆的茴字有幾種寫法?這本書就專門介紹這個的。
但是真正以學以致用為目的,這本書就是渣。因為裡面的很多寫法是錯的,還從來沒聽過誰按照上面的寫法來碓代碼。
寫代碼跟寫信一樣,是寫給電腦的信,也是寫給你同事的信。白話文不用,你非用甲骨文寫,電腦不好開腔,但是維護你寫的代碼的同事估計得抽你。所以考試,看譚浩強的書足夠了
這裡再囉嗦幾句,不是貶低國內的大學教授水平。因為工作原因,會看很多國內外的教學視頻自學。大多國外教授,講知識,都是從原理,以及這麼做的能達到什麼目的著手。中國得教授講課,就差點,很多是照本宣科,不看課件就說不出來。
中國的大學教育,還有待進步
主要是時代發展太快了,計算機在中國發展太快了,十幾年就和世界同步了。我是01年上學的,那時候圖書館就只有譚浩強的C語言書,然後就是外國的那些原版C語言書了,外國書大家都知道超級厚,而且大多寫的不好,老實說沒有譚浩強的好。只有C語言發明者的那本薄薄的書可以。C89在那時已經是最新標準了,譚浩強的書在那時沒有什麼漏洞,而且講的很形象生動,每個概念都是清清楚楚的。
現在的學生根本不瞭解中國計算機課的歷史,現在的東西和以前能放在一起比嗎?知道hao123嗎?知道阿里巴巴嗎?就是做html火起來的。你現在看當然一點技術含量都沒有了,html小學生都能學會。知道騰訊嗎?也是在ICQ的基礎上加個中文界面,就因為中國人不懂英語,不會上網,連開機都不會,你們知道什麼是DOS嗎?九幾年和現在完全不是一個概念。
現在之所以學過東西這麼容易,正是譚浩強這些老人的貢獻,培養了一大批基礎紮實的程序員。然後慢慢有了網頁,有了圖片,有了Flash,有了視頻網站,有了今天的無限學習資料。以前譚浩強的書就是最牛逼的,起碼十年前都還可以說最牛逼的。
現在說標準,在他寫書的時候有這些標準嗎?我們學的版本里面他還講了更老的版本。
如果說你們現在看的書跟不上現在的標準了,那應該怪你們學校的老師,他們為什麼不用更新的教材,為什麼給你們講不清楚C語言呢?也要怪你們自己,現在這麼多資料,網上還有人視頻教學,你們都學不好,還怪二十年前的書的作者,你們以後怎麼在公司裡面立足?還是趕緊回去看C語言吧,不要在這裡浪費時間了。
雖然預計不會有人看,但是我打算認真回答你的問題。
有很多為譚老先生鳴不平,他的書那麼多人看,貢獻很大,我同意。
但是貢獻絕對不等同於技術水平和教育水平。
C語言的精妙之處,譚書上很少涉及,譚書上的東西淺而不全,有種濃濃的速成意味,但是譚書的定位其實就是這樣的。
錯就錯在大部分人把譚書當成C語言的全部,還自以為大成,殊不知C語言裡還有許許多多的特性和用法。導致現在許多人把C語言當成了低效率而且過時的語言,這根本就是錯誤信息,國外開發者現在C還用的好好的不過時。
譚書只是一個代表,中國的書平均水平滯後而且質量落後於國外是難以辯解的事實。不是光有錢了就叫崛起,文化、教育、環境等方面一樣是大國必需的素質。
譚書的問題就在於,我們明明是未來的工程師,卻把我們當初學者哄著培養。
而當你出門的時候,發現譚書教你的東西根本就是皮毛,而你之前卻當成權威深信不疑的時候,你罵不罵他?全中國的深層次C語言書全都不印了,全都是抄的譚書刪改,而國外卻正常發展,你發現你被環境壓制成了一個廢物,你罵不罵?
不是譚老先生的問題,這問題要遠比一個人大得多,這是一個教育環境的問題。
我的夢想就是我的孩子不用學英語一樣能學到最好的知識體系,不過估計很難了。
本人專業電子信息工程,大學裡學的譚浩強的教程,應該理工科生基本都是用譚浩強的《C語言程序設計》入門C語言的吧,現在轉了程序員做C++開發也是自學譚浩強的教程課件入門的,我覺得作為入門很適合,語法講的很好。給真正想學習的人一句忠告:不要糾結書好不好,何況這本書是大學普遍使用的教材。