|
C語言學(xué)習(xí)方法
乾坤一笑
原文見于乾坤一笑的blog一笑聊齋
談?wù)勁嫉膶W(xué)習(xí)方法,拋磚引玉?。海?BR> 學(xué)習(xí)不論講不講方法,最終都能學(xué)會。但是別人1個月學(xué)會了,而你卻100年才學(xué)會,這不就晚了么?:)所以說,學(xué)習(xí)還是要講究方法的。學(xué)習(xí)方法正確,事半功倍;學(xué)習(xí)方法不正確,事倍而功半。 什么才是學(xué)習(xí)C語言的捷徑?我的答案是看書。書中所寫,是前人數(shù)十年經(jīng)驗所寫,看十本書,就相當(dāng)于汲取了前人數(shù)十年的功力,那么你的內(nèi)功也會迅速上升1甲子。:)書當(dāng)然要看好書,只有好書才營養(yǎng)豐富。假如你花了1天時間看了一本破書,而該書介紹的知識雖然對于你來說是全新的知識,但是由于書中組織不當(dāng)、或者深度不夠,使你獲取的營養(yǎng)很少,還不如自己研究一天來的快,這種書就不值當(dāng)看了。學(xué)習(xí)C語言要看那些好書?我認為首先要把基礎(chǔ)書給看扎實了,比如拙著《C語言之四書五經(jīng)》中介紹的4本。(雖然這些書很多已經(jīng)絕版了,但我相信電子版也是很有益處。況且,如果你真的想看,我相信你一定有辦法搞的到。)這些書你會在很短的時間內(nèi)看完(比如一兩個月),這取決于你的基礎(chǔ)和悟性。之后要看那些書呢?我不妨再列幾本。Bjarne Stroustrup的《C++程序設(shè)計語言》(The C++ Programming Language)一定要看,這本書里面對于C的一些基礎(chǔ)概念的定義,比我見過的其他任何C語言書都要全,都要仔細;Bjarne Stroustrup的《C++語言的設(shè)計與演化》(The Design and Evolution of C++)和David R.Hanson 的《C語言接口與實現(xiàn) 創(chuàng)建可重用軟件的技術(shù)》(C Interfaces and Implaementations Techniques for Creating Reusable Software)一定要看,這兩本書講述了如何用C來實現(xiàn)異常處理、實現(xiàn)類型的封裝和擴展等一些大的項目中經(jīng)常用到的高級技術(shù)。其他的書,操作系統(tǒng)的要看,編譯原理的要看,算法的要看,模式的也要看。讀書破萬卷,coding如有神??偠灾?,就如《傳》中云:“生而知之者,上也;學(xué)而知之者,次也;困而學(xué)之又其次也。”我們不能總是因困而學(xué)之,而要做到兵馬未動,糧草先行。 看書是學(xué)習(xí)的導(dǎo)向,書中能一一介紹清楚概念,但書卻不能把應(yīng)用的細節(jié)一一介紹給你,因為應(yīng)用總是招數(shù)繁復(fù),變化多端。因此我們要想熟悉招數(shù),懂得書中所講怎么使用,還要多讀源碼。Linus給別人解答問題的時候,常說Read the fucking source code;候捷也在其文中提到“源碼之前,了無秘密。”這就是大師的箴言呀。源碼就像是動畫、就像是幻燈片,把書中的招式一一演練給你看??梢哉f高手的經(jīng)驗大都是源自代碼。源碼和書一樣,也是要看好的,不要看差的。在此,我推薦看Linux kernel source code 和 Linux tcp/ip source code。這兩套代碼都是開源的,垂手可得。此外,還可以配合著Andrew S.Tanenbaum的《操作系統(tǒng)的設(shè)計與實現(xiàn)》(Operating Systems:Design and Implementation)、毛德操 胡希明的《Linux內(nèi)核 源代碼情景分析》、Jonathan Corbet,Alessandro Rubini,Greg Kroah-Hartman合著的《Linux設(shè)備驅(qū)動程序》(Linux Device Driver,3e)、W.Richard Stevens《TCP/IP詳解(3部)》 (TCP/IP Illustracted )、W.Richard Stevens《UNIX環(huán)境高級編程》(Advanced Programming in the UNIX Environment,新版增加了Linux kernel的內(nèi)容)等書來看,方便的很。
當(dāng)然程序不是看出來的,是寫出來的。我高中的時候每天堅持寫6個小時程序,《數(shù)據(jù)結(jié)構(gòu)》和排列組合、圖論方面的習(xí)題反復(fù)做了N遍。到現(xiàn)在雖然已經(jīng)時隔五六年,很多內(nèi)容早已淡忘掉,但卻培養(yǎng)了我很強的編碼能力和調(diào)試能力,直到現(xiàn)在還對我的工作有很大的幫助。
學(xué)習(xí)忌貪多、忌浮躁、忌急功近利、忌目中無人。把學(xué)習(xí)計劃放的長一些,培養(yǎng)一個好的學(xué)習(xí)方法,一步一步慢慢走,終能成為高手。 ------------- 寫于2005年8月1日 轉(zhuǎn)載請標(biāo)明出處和原文鏈接
編者注:本文中書籍鏈接一律按《C語言之四書五經(jīng)》例,引用于China-pub,但部分書籍也已缺貨,大家可以看看其他書店或到圖書館或找朋友借閱。
|