三步讀書法

不知道大家有沒有這種感受?當你拿到一本書並準備讀時,總是想在幾天之內就把它看完;看到後面就不想往前翻;每天以看了多少頁書爲衡量自己今天的價值,而不是吸收了多少知識;看完一本書總感覺腦袋空空的,看了後面忘了前面的。。。當然你可能還會碰到很多看書的煩惱,,下面我就談談自己對看書的一些思考。

首先這裏先做一個假定,假設你手裏讀的書一定是一本經典的、優秀的書。如果不是,那麼就趕緊扔了,一本好書是一個好老師,而一本渣書簡直害死人。。。

接下來我把計算機類的書大致歸爲三大類:

(1)語言方面的書。比如C、Java、Python等等

(2)算法書籍。《算法導論》、《編程珠璣》等等

(3)某一特定類別的書。比如操作系統、編譯原理、網絡、Linux內核、服務器原理等等需要很大的精力才能徹底掌握的書。

當然這個歸類是非常粗淺的,針對不同種類的書,我們的閱讀策略也會有所側重。

首先針對第一類書。訣竅就一個字:練。

作爲一個新手,千萬不要陷入語言的細枝末節中,有些人學語言的方式實在是讓人哭笑不得,比如他要學Java,他拿着一本java編程思想使勁地看,看了後面忘了前面,把自己搞的痛苦不堪,最後感嘆一句:Java真難!(我親眼見過,,還不止一兩個,也是醉了)。還有一些人,從網上或者什麼地方找來一些教學視頻,然後坐在那一邊翹着二郎腿一邊貌似“聚精會神”地看,中途偶爾QQ上來人了還要聊幾句(哥們,你當是看電影麼?)。這兩種學習方式看上去不同,其實本質上是一樣的,都是一種被動地接受知識的方式。這種方式及其低效,記住:代碼是敲出來的,不是看或者聽出來的!無論你是看書或者看視頻,其實都不要緊,關鍵是一定要自己動手把它敲出來。當書看完或者視頻看完後,你手上應該有大量的代碼,這個時候再把這些代碼敲個十幾遍,此時你的腦子裏留下的就是代碼而不是文字或者聲音了。說到這,讓我想起了我們的英語教育,,個人感覺學英語最有效的方法就是把自己置於一個英語環境或給自己創造一個英語環境,接下來就是使勁地說。。這樣,不到幾個月,保證你的英語棒棒噠!而不是拼命地背單詞或看語法。。(好了,不吐槽英語了O(∩_∩)O!)。

接下來說說該如何看算法書。訣竅:理解+運用。

學算法不同於學語言,學算法最重要的不是記憶,而是理解。關於如何理解算法那也沒什麼好說的了,看每個人的悟性還有堅持了,當然去網上找一些容易理解的資料或者跟同學探討會對你學算法非常有幫助。我們這裏重點說說爲什麼要強調運用。因爲算法這種東西本質上是比較難理解的,比較難理解的東西就比較容易遺忘,比如你好不容易花了很長時間理解一個動歸算法或KMP算法,,然後你自認爲自己徹底掌握了,然後扔在那幾個月不管它。。然後就沒有然後了。。因此算法一旦理解了以後相當重要的一點就是一定要去運用,在不同的場景中去運用。那麼到底怎麼運用呢?比如你的算法書後面的習題,還有現在很多高校有很好的ACM OJ,上面有大量的算法設計題,這些都是非常好的資源。當你用你目前已經理解的算法去解算法題時,這個過程本身會進一步促進你對這個算法的理解,並且加強你的記憶。比如可能過一段時間你把這個算法忘了,但是當你一想起你解的那道題時,你又把那個算法回憶起來了。因爲我們人腦總是不太容易記住那些抽象的概念,而對那些具體的東西記得比較牢。話說回來,運用算法去解題是非常花費時間的,有時候一道題你可能半天都AC不了。。所以我建議那些現在還在讀書的學生,如果你未來想走IT技術的道路,還是去學學算法吧。對你是絕對有好處的!你工作以後可能想學都沒時間了!

最後談談對第三類書的學習。

第三類書通常都是一些理論性很強的書,比較難以消化,而且短時期內看不出它有什麼價值。。對於很多程序員來說感覺用不上。。但是可以這麼說:對這一類書理解有多深決定了你是一個攻城獅還是一個程序猿。。當然每個人都有他自己的選擇,並不是所有人都想在技術這條路上走得很遠,如果你是那個想在技術上成就自己的人,那麼歡迎一起來探討。如果不是,那麼就當隨便看看好了。針對這一類書籍的特點,我總結了自己的讀書方法——三遍讀書法。是的,沒錯!起碼三遍。對於這類書籍,要麼不讀,要讀起碼讀三遍。其實,在現實中,有很多人對於自己讀過的書是不太願意再去讀的,不管是技術書還是其他方面的書。這可能跟人把讀書看得過於功利有關,認爲讀過的書再去讀就是浪費時間,還不如去讀新的書。如果你問一個人你爲什麼要讀一本書時,他可能會告訴你爲了學新的知識或獲取新的思想。的確,目的確實沒錯,可是往往他忽略了一個簡單的道理:一本書如果只讀一遍,那麼你最多隻能吸收10%的知識。如果你再讀第二遍、第三遍。。。你所吸收的知識就能成倍地增長,當你再讀下去的時候,你已經不止是簡單地再吸收書本身的知識了,你會形成自己的思考,也許這就是古人說的讀書百遍,其義自現吧!所以說,如果一本經典的書拿來,你只准備看一遍,那麼還是別看了,,純粹浪費時間!既然說一本好書要讀好幾遍,那麼問題來了:我該如何讀這本書呢?是從頭到腳重複地看還是有其他的方法呢?當然有。我這裏爲什麼要提三遍讀書法,這其實是對投入與產出的一種權衡,誰都知道多看幾遍越好,但是現實中往往很難讓你有足夠的時間去反覆地看,這時候就需要找到能儘可能用最少的時間來獲得最大的收穫的方法。那麼三遍讀書法具體是怎麼來操作的呢?假如你拿到一本技術書籍

第一遍

儘可能在比較短的時間內過完這本書。在第一遍中,不要陷入某個具體的知識點,這一遍的主要目的是能把握每個章節的重要知識點,記住,是把握,而不是理解透徹。這一遍講究的是快、高效。千萬不要拖太長的時間。而且對於第一遍讀完後的“成果”要牢記,最好把它記錄下來,因爲它們是整本書的骨架。

第二遍

第二遍講究的是慢、理解。第二遍一定要慢,要儘可能地把知識點都理解,千萬不要貪快,不要講究進度。記住,在這一遍中:欲速則不達!遇到實在不懂的點,可以先放一放,等看到後面了再回過頭來理解一下,或者請教一下其他人。不建議邊看邊做筆記,最好在讀完每一章或者每一節後,把書本合上,然後在腦子裏去回憶你看過的部分,尤其是重點知識點,然後把它記錄下來,這樣比單純記筆記效率要高很多。(個人比較推薦寫博客。千萬別覺得自己水平不夠,不好意思寫博客。記住,寫博客不僅僅是爲了給別人看,更重要的是對自己學過知識點的一種思路上的整理,通常這種整理都是非常高效的。另外,新手往往覺得寫博客很費時間,但是相信我,如果你真的用心在寫博客,它絕對不會辜負你的這些時間的!)這樣一遍完成後,你對整本書已經有了一個比較完整的理解了。這個時候,你可以去看看你自己寫的博客,不用着急讀第三遍。

第三遍

通常如果你認認真真地讀完第二遍後,你可以先放一放。人的大腦還是需要一些時間來慢慢消化的,哪怕是潛意識的,況且,短時間內連續讀好幾遍確實會讓人感覺厭煩。這樣過了一段時間後(比如去看看一些其它書啊等等),你再開始讀第三遍,相信這個時候你很感覺很輕鬆(人往往對熟悉的知識有一種愉悅感),這個時候你不僅僅鞏固了你之前的知識,甚至有可能還會讓你產生新的想法,比如當你把操作系統的理論知識都掌握得差不多時,你可能會好奇它究竟是怎麼工作的,你會產生想要去讀內核源碼的衝動。當然這就進入另一種境界啦!(當你研究過源碼再來看操作系統的理論書籍時,你甚至都能知道哪些書寫得好哪些書寫得渣了呢!\(^o^)/~)。最後,我還是想說,哪怕對於這些理論性很強的書,要想真正得理解它們,還需要動手實踐,比如學操作系統的可以試着去看源碼,學編譯原理的可以試着自己做一個小型編譯器,學網絡原理的可以自己去搭建網絡環境來加深對網絡的理解等等。

借用陸游的名句:紙上得來終覺淺,絕知此事要躬行!

原文地址:http://blog.sina.com.cn/s/blog_15ecb0da00102wmb6.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章