國人對於國外CS教材是否存在盲目崇拜心理?

我的問題是——國人對於國外CS教材是否存在盲目推崇心理?

問題澄清:我是在說有些書本其價值與其所受到的推薦與評價不成正比!我並沒有說國外教材都不好,國內教材都好!我並沒有說國外教材一無是處!

我的觀點是存在的!

事實一:在知乎上,我看到許多人都力薦國外CS教材,滿口國內教材垃圾。

事實二:在圖書館中和書店裡我買了部分在CS上的那些書,結果大失所望。

事實三:我在圖書館中看到一些華章出版的一些同類書,我覺得讀得就容易很多。

補充:

關注人群:我關心的是那些面向初學者的書籍!(下面例子中的書籍我也主要是從初學者的水平進行分析的!)

問題背後的真實目的:我期望的是獲得更好的CS入門型教材,而不是一股腦的給本國外的教材就好了!因為根據我的經驗,我發現了部分CS入門書籍(包括以下三個例子)有著更好的國內版可以完全替代!(如果只選一本書來讀的話。)我不關注作者的國別,我想獲得的只是單純的入門好書,如果有更優秀的的話,我期望獲得更優秀的。

期望:我認為討論應該基於事實、經驗,簡單直接的評價很沒有說服力和價值量,並且如果評論者本身沒有太大的公信力的話,這種表現尤為明顯!

具體的有以下三個例子:

1. 瘋狂推薦KR C

這本書說實話,相當雞肋!

對於初學者而言——不友好,我第一眼看過去是很不友好。

對於高手而言——結構不清晰。

2. 《數據結構與演算法分析,C語言描述》

對於初學者而言——他的內容分類實在太糟糕,我簡直不敢想這種書還是世紀之著

對比機工華章教育《數據結構與演算法 c語言描述》——分類相當清晰完整,表述很結構化(每一篇章圍繞固定的四個問題進行討論層層推理展開)。

唯一遺憾的是缺少了演算法分析與堆數據結構,還有一些高級數據結構並未討論。

3. 《計算機科學概論》

對於CS初學者而言——這本書是給一個剛入門的菜鳥一個CS概覽,可是很可惜那本書除了提到了哥德爾定理與計算機圖形學我是一無所獲!他的內容分類還是很糟糕,看不來各章之間如何聯繫的!剩下唯一的亮點只是把信息存儲與信息表示以標題的形式標註。

對比徐潔磐先生《計算機系統導論》——內容分塊相當的優秀——計算機科學理論+計算機技術基礎+計算機工程應用+計算機文化+計算機前沿發展,並且先生還深刻的解釋了電子計算機這個名詞的內涵。

而唯一的缺點只是沒有計算機科學概論那麼多課後問題。

4. 其實這個也不算是headfirst JAVA

這本書說實話沒多少亮點,乾貨少!(我一度懷疑是騙錢的)

第一,標準還是五,太落後了

第二,內容太少(基礎類庫都鮮有介紹,應用類庫更別提了)


當然國外的確有爛教材,但是你舉的例子說明,讀者自身的水平爛到一定程度是沒有能力鑒別書的好壞的。


國內有沒有好教材,是有的;壞的那些教材有沒有網路炒作的那麼壞,我相信並沒有,喜歡這樣說的那些大學學生,恐怕一學期連書都沒看完。盲目否定國內教材是完全不必要的。

但是把國外CS教材列為首選,即使盲目,個人認為也是必要的,只要你有這個能力學下來。原因很簡單,國外的多數教材確實比國內的很多要好,要及時準確。

有時候你和別人差距太大的時候,奮起直追地盲目衝動是很有用的。人家的比我們的確實好,好就老老實實承認,老老實實學,是對我們最有利的策略。


是的。你的感覺真的沒錯。

別怕別人怎麼說你,你能夠這樣想,已經超過全國xx.xx%的人啦(給你一點信心)。

CS是這麼一回事,針對某個特定問題,製造一台特定計算機系統去解決之。

所以,CS既有理論的一方面要求,也有工程的一方面要求。

在理論方面,從所有的特定性問題中抽象出一般性的原則。這些原則的數量並不會太多。在工程方面,則存在各種具體細節和約束的考量,比如性能,比如內存,等等。

在CS中,理論和工程之間的關係特別繁瑣。

無論是從治學的角度來說,還是從學習的角度來說,如何處理好理論和工程中的關係,是要特別小心的。

從治學的角度來說,首先從現實的世界中抽象出一個基本的模型,解決基本問題(有無),然後隨著認識的加深,實踐經驗的豐富,逐漸加入更的細節,逐步完善這個模型。如果學習過軟體工程,就不難理解這個:自頂向下,逐步求精。

從學習的角度來說,如果光學習理論,沒有一定的工程認知的話,初學者很難接受。如果僅學習工程實現,沒有很好的理論指導的話,初學者必然會陷入到泥潭中。所以,最好是有一點工程實現的背景認知,然後再學習理論。

國外的教材,很可惜,在這一方面做得並不好。比如在操作系統和計算機網路和資料庫方面的教材,即使是最權威的那幾本,都是沒有明確地將理論與工程之間的關係擺清楚。總之,國外的教材,非常瑣碎,將大量的細節攪在一起,一本書大幾百頁,甚至上千頁,之間的邏輯關係非常凌亂,沒有一根主線。這是一個很奇怪的事情,按照道理說,這些作者都是博士,應該知道如何治學。

舉例說,資料庫,手頭有這樣幾本書:《資料庫系統概念》、《資料庫原理、編程與性能》、《資料庫系統實現》等等,還有其它一大堆書。但是,這些書都有一個問題,對於資料庫要解決的問題,基本上都捨不得花筆墨去提綱挈領,進行總體描述,基本上都分散到全書的各個角落,而且,一個問題還沒徹底解決的時候,又導入一個新的問題。使讀者陷於各種細節的泥潭之中。奇怪之至。

總之,對於初學者來說,不要迷信,不要一開始就去碰那些大部頭(說個老實話,這些大部頭只能當手冊用,而且還有點滯後了),用效率最高的路徑搞清楚CS要解決的問題、熟練掌握解決問題的基本思想和方法,掌握思考問題的方法和學習的方法,然後再選擇某個方向,做一個原型系統,再用軟體方程的角度(功能與非功能)去看待問題和方法。為了達到此目的,先看國內的本科教材,對每個科目的基本問題了解清楚,有一個總的綱領,並且把各個知識點串起來。


你的問題是:

國人對於國外CS教材是否存在盲目崇拜心理?

我的回答是:

看你說的是誰。

CS教材這個名字就似乎給了你個錯覺,這就是應該在課堂上教的東西,但這是個錯覺。

首先,KR C是本專業性很強的技術書籍,就是告訴你什麼是c,c應該怎麼用,c能幹什麼。至於c以外的問題,包括你學沒學會c,那是你的問題,人家不管。

(就好比說明書一樣,我寫明白了你看不懂那是你的問題)。

所以,我向來是讓毫無計算機基礎的同學去看網易雲課堂的視頻。那是「教程」,為小白量身定製。

看完視頻,就要看KR C,再看不懂那完全是你自己的問題,你可以考慮考慮你到底要不要學編程了。

所以你要分清楚,什麼樣的是適合上課時用的教材,什麼樣的是課下自己應該看的專業書籍。

--------

數據結構與演算法分析,C語言描述

這本書講的不深不淺的,還真就挺適合有C語言基礎的看。看這本書看什麼?你要了解的是數據結構和演算法思想。(至於實現可能有n種方法,那都是次要的)。正因為這樣,考試出題很麻煩,

因此這本書不適合當教材用,適合自己看。

--------

計算機科學概論

如果有後續的學習,這一類的書看不看/看什麼都那麼回事,就是告訴你有這麼個東西/概念。

--------

headfirst系列我向來不喜歡。不想評價。

最後來個總結:

1.條條大路通羅馬。

2.盡信書不如無書。


學著學著你就發現中文資料找不到了…不是盲目崇拜是沒得選啊…

另外讀國外書中文版之前先去豆瓣和亞馬遜看一眼,有沒有大面積噴翻譯的(°ー°〃)…

其實不是盲目崇拜外文書,大多數經典確實就是好,現在讀著難受是功力不夠,比如我現在在讀APUE就好難受(°ー°〃)但是難受完了之後很爽啊,入門書爽完了你也沒學到啥東西呀…我覺得評價入門書的標準不是簡不簡單能不能被理解,而是學完了能入門啊,比如C++的入門書C++ primer

不過我覺得有點盲目看不起中文書(°ー°〃)有些比如程序員的自我修養就挺好的(°ー°〃)


從c語言這門極其重要、非常牛逼、掛科率高、二級培訓機構的搖錢樹、大多數人入門........的語言的教材來看,你就知道為什麼國內的教材是多麼糟糕了


你舉得這些例子,除了KR C我都沒看過,不能評價好與壞。但是,在我看來的確有適合入門的外國教材,例如c primer plus。我說適合,首先是因為我覺得這本書透著一副生怕你沒看明白的絮叨,其次是因為我曾經推薦給班上的新生們,他們反饋這是個適合的書。

推薦你看各種xx書的並不一定真的看過,推薦你看全英文入門的也不一定就是看著英文教材入門的。比如,推薦KR做入門教材的以一定不是用這個入門的。

此外,這個問題有點小馬過河的意思,人家從小英文教學高中和外教交流,因此能在保證效率的前提下用全英文教材入門。反過來,這就未必適合我這種小山區音標都發不準的小屌絲入門了。

依我看,為了排除逼乎上各類人才滿嘴跑火車的干擾,可以參考國外cs強校課程的參考書籍(不建議國內的,例如我校老師就會強行安利自己的書)。至於是不是要全英文,參考各人能力吧。總的來說,cs方面國外的月亮是要圓一點。


認為所有國外的CS書籍比國內好當然不對,但是國外的書在數量上和質量上確實比國內好很多。

想看看你如何吐槽Art of Computer Programming


我們這有句俗話叫「拉不出屎賴茅坑」,可能就是題主說的情況。


兩者的區別是:國外的教材把讀者當傻x教,而國內的教材把讀者當天才教。


作為一個學生,我想談談我的感受。

thinking in java好不好?好啊。結果16章以前我能看懂,17章以後根本看不懂。於是先本簡單的看。

對於初學者,國內的xxx從入門到精通,21天學通xxx系列有其存在的必要。

我覺得國內的書有幾種可以看:

xxx入門系列,先講個語法,入個門再說。

各種一線工程師寫的解決某些實際問題的書,他們的書中遇到的問題,很可能就是我們遇到的問題,非常實用。

大學裡面老學究的書根本不能看,根本不能看,根本不能看,都2016年了,還vc6.0,那可是2015年出版的新書啊。

相比之下,博文視點,圖靈,傳智播客之類出的一些書更通俗易懂而又貼近實際一些。

PS:機械工業出版的一整套黑皮書,都是不錯的。。

PS2:很反感動不動就讓人整英文原版的,看不看的下去兩說,就算看下去,恐怕大部分的時間都用在學英語上了吧。如果提問者的水平很高,讀英文毫無障礙,還會發帖浪費時間嗎?一定要根據對象推薦書,別上來就英文原版。


並不覺得啊,各選各的,你看譚的書還不是照樣賣的飛起,當然有這樣的,從前受了不少毒害於是徹底拋棄國產的

我猜測題主理想中的書是層次清晰,結構明朗,通俗易懂,如果易於背誦那就更好了!


怒答.我就我所遇到的外國教材agile Java和我的大學教學書來對比.我大二的時候自己在圖書館死磕學校里的教科書.裡面的內容就是你所說的簡顯易懂.但是每個內容我看的都是似懂非懂的.堅持了一周,就放棄了.大四時接觸了agile Java.那一個月里,每一次敲代碼的時候,都是興奮又激動的,就像玩遊戲那麼著迷!第二個月就可以用cocos-Android-1用Java語言開發遊戲了.題主玩過魔塔嗎?就是像魔塔那樣的有些複雜的遊戲.

所以我想說:入門書籍一定要選好.不然你會以為自己笨才學不會,事實很可能是教材太渣!

在這裡我還想為那些推薦原版英語正名.真的,你要是想走編程這條路,英語絕對要去學的.當你會英語的時候,看原版書,去相關學習論壇,節約的時間與精力夠你學幾次英語了.

我希望你有那麼一個意識,英語不能不學.但我也建議你先去看翻譯版的.畢竟初學者未必知道自己是否喜歡編程.而且剛開始學習編程的衝勁應該全用在刀刃上.分一些用來學習英語是弊大於利的.

在此推薦一個軟體,有道詞典,其實在線翻譯類軟體都行.中文搜不到的答案,用英文去搜吧.然後用翻譯軟體翻譯成中文!


大家都在嘲諷,我來給題主解釋下吧。

其他兩本書不說,KR並不只在中國受到推崇,而是世界範圍公認的經典之作。全書除去後面的Manual reference部分,介紹C語言語義用法只有不到200頁!

現在的哪本介紹語言帶例子習題的書能用200頁講完,題主可以去找找看。

而且書中的例子都是可以用於解決實際問題的。

建議題主看英文版,翻譯版真的差點意思。


反正比我們大技校用的書好就行了

你絕b看的是中文版,有的譯本連我這種戰五渣都能挑出錯,直接看英文原版吧

還有,做人要謙虛,先找自己原因,畢竟是求知嘛


被引進的國外教材一般質量都比較高。


1. KR C確實很好啊

2. 這是什麼,我從來只推薦演算法導論

3. 沒看過,不做評價

4. head first不就是騙錢的嗎←_←

不過類庫這種東西,講還是不講都有道理→_→


何必糾結這麼多呢,有這時間還不如多看幾本書,剛開始肯定很痛苦,但是隨著你看的書越來越多,你就會越來越明白,以前的疑惑迎刃而解,看書也會越來越快,學習的效率也會越來越高。祝好


換個角度,歐美國家平均一本書100刀左右,貴的得300刀,作者拿每本書拿一半版稅。在這種高回報的環境下,作者的積極性和對質量的要求當然比國內高。國內賣書平均不到50一本,作者的收益也不是按銷量結算,沒有良好的出版環境,何談質量可言


大家都說的是平均情況。辯證法的大道理:沒有絕對的好與壞,壞中也有個別好,好中也有個別壞。到底有什麼意義?


推薦閱讀:

Node.js是用來做什麼的?
前端的表單驗證還有必要嗎?
如何用計算機程序驗證E=mc^2?
電腦一點不會的傢伙怎麼學編程?看什麼書?

TAG:編程 | 計算機 | 計算機科學 |