為什麼這麼多人不喜歡譚浩強的C語言程序設計?


主要是時代發展太快了,計算機在中國發展太快了,十幾年就和世界同步了。我是01年上學的,那時候圖書館就只有譚浩強的C語言書,然後就是外國的那些原版C語言書了,外國書大家都知道超級厚,而且大多寫的不好,老實說沒有譚浩強的好。只有C語言發明者的那本薄薄的書可以。C89在那時已經是最新標準了,譚浩強的書在那時沒有什麼漏洞,而且講的很形象生動,每個概念都是清清楚楚的。

現在的學生根本不了解中國計算機課的歷史,現在的東西和以前能放在一起比嗎?知道hao123嗎?知道阿里巴巴嗎?就是做html火起來的。你現在看當然一點技術含量都沒有了,html小學生都能學會。知道騰訊嗎?也是在ICQ的基礎上加個中文界面,就因為中國人不懂英語,不會上網,連開機都不會,你們知道什麼是DOS嗎?九幾年和現在完全不是一個概念。

現在之所以學過東西這麼容易,正是譚浩強這些老人的貢獻,培養了一大批基礎紮實的程序員。然後慢慢有了網頁,有了圖片,有了Flash,有了視頻網站,有了今天的無限學習資料。以前譚浩強的書就是最牛逼的,起碼十年前都還可以說最牛逼的。

現在說標準,在他寫書的時候有這些標準嗎?我們學的版本裡面他還講了更老的版本。

如果說你們現在看的書跟不上現在的標準了,那應該怪你們學校的老師,他們為什麼不用更新的教材,為什麼給你們講不清楚C語言呢?也要怪你們自己,現在這麼多資料,網上還有人視頻教學,你們都學不好,還怪二十年前的書的作者,你們以後怎麼在公司裡面立足?還是趕緊回去看C語言吧,不要在這裡浪費時間了。


很多人不喜歡譚浩強的書,這確實是一個事實,但並不代表它不是一本優秀的教材。是否喜歡與是否優秀是兩回事。

先正面回答為什麼很多人聲稱不喜歡譚浩強的《C語言程序設計》。

第一,這本書用的人非常多,應該是最多,樹大招風,就很容易被網上的各種評論攻擊。聽得多了,於是自己也相信了,所謂「眾口鑠金」。正如同一部熱門的電視劇,網上總會罵聲一片,很少有例外。因為普通的電視劇,總共都沒有幾個人看,也沒有炒作過,人們都懶得去討論。

第二,書中有很多錯誤,而且被廣泛公布。正如同一部熱門電視劇,本來大家平時還沒有太注意,但一旦有人公布一大堆穿幫的鏡頭,就會立刻降低它在人們心目中的形象。其實很多計算機的書籍,特別是國內的(國外經典書籍嚴謹得多),都有很多錯誤,甚至錯別字一大堆。只不過我們都沒有在意而已。

第三,該書只注重基礎,而忽略實際應用場景,更沒有談及設計思想,給人一種紙上談兵的感覺。

這些就是很多人不喜歡這本書的原因。但是儘管如此,它仍然不失為一本非常好的C語言入門教材。

先要搞清楚什麼是教材。這裡說的教材是給正規全日制在校學生上課用的教科書。譚浩強這本書,準確地說是給大專、本科生上課用的。教材區別於科普書、工具書。編程的書有很多,什麼21天精通,什麼由淺入深,什麼案例精選,什麼參考手冊,什麼大話某某語言,什麼跟我學等等。但是你幾時聽說這樣的書被作為教材的?

教材一般要求注重基礎,注重理論,注重原理,注重公式推導(當然C語言不涉及),要求系統全面(區別於以博客為主的零星知識點)。這和通俗讀物那種偏向實踐,注重趣味性,會使用會操作就行是有很大區別的。

舉個不太恰當的例子,一個大學生整天在學高等數學,理論力學時,一個技校生已經開始學如何焊接,如何冷加工,如何修理機械了,他們在嘲笑這幫大學生畢業後連個電焊都不會,高等數學頂什麼用?到底哪個好?恐怕沒有那麼好回答,答案是都好,看它們的定位。

譚浩強的這本書,就好比大學生學的高等數學一樣的所謂「沒有用」的知識。但是它卻為接下來的學習打下了堅實的基礎。這個基礎就比武林人士的內功一樣。內功心法不能傷人,只有外家功夫可以。但是學了內功再學拳腳、刀劍這一類外功則會事半功倍。

譚浩強的書顯然就不是外家功夫,用這點知識連一個最簡單的計算器、記事本程序恐怕都寫不出來。只會寫什麼列印個九九表,排個序什麼的,要知道多數人排序都是直接調用現成函數,一句sort就搞定。他們一定在想,學譚浩強的人真是瘋了,排序還需要自己寫,傻不傻啊!

譚浩強的書的基礎作用,決定了要深入學習C語言,一定必須務必要再參考其他進階書籍。

我們很多高級計算機人才當年正是學的譚浩強的C語言程序設計長大的,但為什麼他們成功後,並沒有感恩,反而詆毀呢?

這也是順便再次從另一個角度正面回答題主的提問。以例子來回答。當一個人學完了中學數學、大學數學,再回過頭來看當年小學一年級老師掰指頭算加減法,真的覺得是誤人子弟!當一個人開著豪車在路上嫻熟地駕駛,卻回過頭來說,哎,當年駕校老師真的是亂教一通,竟然讓我們倒車時看車上的參照物,我後來真正開車後一次也沒有用過!當年小學老師竟然讓我們背那麼多課文,尼麻我到現在除了幾首唐詩外全部忘的乾乾淨淨,這幫老師真的是白教了,我不是照樣可以看書寫字?

當我們在計算機領域成功後,再回過頭來評論當年的譚浩強的教材,覺得它一無是處,就正如同我剛舉的例子,如同嘲笑掰指頭學加減法,看參照物開車,背課文學語文。

最後,總結是,譚浩強的C語言程序設計,不具有大型軟體工程開發的任何頂層思想,沒有任何設計模式,不能解決現實世界的大部分問題,甚至好多代碼書寫習慣(命名、格式、組織形式等)都不符合正規軟體設計的規範。但是它就是一本偏基礎偏理論的入門教材。是一本優秀的教材。要想深入學習,必須還要再使用其他進階的書籍或教材。


雖然預計不會有人看,但是我打算認真回答你的問題。

有很多為譚老先生鳴不平,他的書那麼多人看,貢獻很大,我同意。

但是貢獻絕對不等同於技術水平和教育水平。

C語言的精妙之處,譚書上很少涉及,譚書上的東西淺而不全,有種濃濃的速成意味,但是譚書的定位其實就是這樣的。

錯就錯在大部分人把譚書當成C語言的全部,還自以為大成,殊不知C語言里還有許許多多的特性和用法。導致現在許多人把C語言當成了低效率而且過時的語言,這根本就是錯誤信息,國外開發者現在C還用的好好的不過時。

譚書只是一個代表,中國的書平均水平滯後而且質量落後於國外是難以辯解的事實。不是光有錢了就叫崛起,文化、教育、環境等方面一樣是大國必需的素質。

譚書的問題就在於,我們明明是未來的工程師,卻把我們當初學者哄著培養。

而當你出門的時候,發現譚書教你的東西根本就是皮毛,而你之前卻當成權威深信不疑的時候,你罵不罵他?全中國的深層次C語言書全都不印了,全都是抄的譚書刪改,而國外卻正常發展,你發現你被環境壓製成了一個廢物,你罵不罵?

不是譚老先生的問題,這問題要遠比一個人大得多,這是一個教育環境的問題。

我的夢想就是我的孩子不用學英語一樣能學到最好的知識體系,不過估計很難了。


譚浩強的《C程序設計》這本書,在筆者看來,其實還是很不錯的。

作為國內高校C語言課程的經典書籍,雖然老了點,但在基本原理的解釋上、知識的編排上還是很客觀合理的,並且容易理解。國內很多工科類書籍都遠遠比不上它。

記得有個段子是這麼吐槽國內的工科教材的:某學生想要自學某一門學科,看了好幾本中文教材愣是沒看懂,跑去圖書館翻了翻國外純英文的教材,瞬間就明白了。

不過,譚的教材絕不在此列,它是一本可以自學的教材。

筆者在用這本書學習的時候,最大的感受就是整本書的編排是基於編程知識語法來分類的,所以對於編程思想的強調可能要弱化些。如果教授這門學科的老師會特意強調C語言編程的思想特點,並刻意對學生進行訓練的話,用這本書來學習C語言就完全沒有問題了。

這本書發展至今已經到第四版了,書中也不會有什麼大的錯誤了。想用其來學習C語言的同學們,這本書相信依然是首選。

當然,想要在C語言編程上有很深的造詣,除了學習基本的知識,做基本的習題,個人覺得還是需要學習一下國外的經典教材,畢竟C語言最初是外國人發明的,原汁原味才更有啟發性。


為什麼噴譚浩強的C語言程序設計動機很難說,也許是同行相欺,見不得別人的書賣得好,也許是有讀者學習不好貶低作者,也許是有人在看了國外C語言教材為了顯示自己看過洋書故意詆毀......我倒是認為譚浩強的教材沒有什麼不妥,雖然書上也有少量錯誤(至少在10多年前我學習的那個版本有)。譚浩強的教材在個人pc都還不是很普及的時代,在C語言編程的教育推廣方面功不可沒。這本書總體比較淺顯易懂,全書的內容也比較嚴謹,沒有什麼明顯的理論性錯誤,可能深度和廣度都有所不足,但是還比較適合初學者零基礎入門。

國內編程語言教材和國外教材相比,尤其是有語言設計、標準化人員參與編寫的經典教材相比,其作者的視角往往是不同的,國內作者自己也僅僅是學生,而國外語言設計者更能站在老師的高度,講述每條語法的設計初衷和應用場景,所以顯得更有營養。國內作者之間沒有多大可比性,真能達到譚浩強書水平的恐怕也不多。

我們學習本身就是一個取長補短,知識相互映證的過程,即使書有不足也大可不必噴它,學習了譚浩強也不會影響再學習張浩強,李浩強。書看的越多,知識越豐富,進步越大。語言固然重要,但也只是編程的基礎,要繼續走編程這條路還要學習數據結構,演算法,設計模式等等豐富的知識,大可不必在一本譚浩強的C語言入門教材上糾結。


譚這本書,有人說好,有人說壞,那只是別人的看法。咱憑心而論,譚這本書適不適合自己得取決於自己的判斷。自己看了能否看懂,看了能否學到基本的基礎的知識,能不能把自己領進門,這才是評價譚這本書的標準。

就我而言,我上大學學C語言這門課,教材就是用的譚這本書。對於一竅不通的我,是譚這本書,好歹把我領進門,讓我知道C語言是個啥東東,了解了C語言的基本語法。在學完譚這本書之後,再去看其它的C語言書籍,基本就能很快進入狀態,而且理解其他書籍的知識點也不會有很大的障礙。

我在「C語言編程技術分享」,也就是一個公眾浩里撰寫了一些學習C語言的文章,希望作為基本教材之外的輔助教材,讓學習C語言的人對C語言基本的東西有更為深刻的認識與理解。


我記得我們上c語言課時我們老師就推薦了,譚浩強先生的c語言程序設計,那麼私下的我看了一個教程是郝斌老師的c語言程序設計的教程,郝斌老師也推薦了譚浩強先生的c語言程序設計,也沒有什麼不好的,關鍵是現在比如說,php是世界上最好的語言windows是世界上最爛的系統,進入卡吧什麼筆記本吧,筆記本吧加錢升加到三萬八,用linux的vi的就是大神,這已經是一些大家公認的坑一些調侃的話語我覺得不能算是真正的回答。


譚老師是一個時代的人物,在他那個時代,他代表了c語言的教學典型,對於那個時代有著舉足輕重的意義,就這一點,我們要尊重他。

但是,時間是發展變化的,尤其是計算機技術飛速發展,譚老師的c語言程序設計已經無法匹配現如今的教學需求,所以很多學校選擇了新的教科書。

不過,目前又沒有任何一家c語言程序設計書籍能夠取代譚老師的地方,於是一些人誤以為打擊譚老師就是提高自己的表現,以為把譚老師的書批的一文不值,就能讓自己的書大賣特賣。其實這都是不對的。

我覺得,對c語言程序設計教材你可以選擇自己覺得好的,可以出版自己的,但是必須要對譚老師必須的尊重。與其有時間罵架,不然完善自己的課程和自己的書籍。


譚書講的不深,錯誤很多,這是公認的缺點。我認為譚書的目標讀者是初學者。初學者的目的應該是入門。譚書內容簡單,從這點來看適合入門。譚書錯誤多,但是無論誰學編程並不是讀了譚書就可以的,讀完譚書後下一步必然找其他教材或通過其他方法深入研究。只要能夠分辨是非,譚書的錯誤不至於使人誤入歧途。有些東西的對錯是絕對的,有些東西的對錯與利弊就要對個人而言。這也是為什麼最初希望大家盡量客觀回答。

老譚的書的問題在於他不出新版本。不過考慮到學校到現在還是在用VC6,其實VC6那個年代用老譚的書也不能說不行,但是你學完了之後要幹什麼呢


譚浩強的c程序設計確實不推薦給入門者,比較亂,尤其是指針那塊。雖然20年前我就是從譚的c開始學的,雖然這書我研讀過N遍!

還有經典的k&r即the c programing language,c入門後想深入理解c就該看看k&r啦!

c入門我推薦霍頓的c入門經典,即horton的beginning c,循循善誘,循序漸進教你寫c程序,絕對是入門者的福音!我通常會把本書推薦給那些想初學編程的學生們。

本人不是專家也不是c程序員,只是基層中學電腦教師一枚,略通電腦而已。


推薦閱讀:

TAG:C語言 | 程序設計 | 編程語言 | 互聯網 | 科技 | 教育 |