不知道你們有沒有這種感覺?當你拿到一本書並準備讀時,老是想在幾天以內就把它看完;看到後面就不想往前翻;天天以看了多少頁書爲衡量本身今天的價值,而不是吸取了多少知識;看完一本書總感受腦殼空空的,看了後面忘了前面的。。。固然你可能還會碰到不少看書的煩惱,,下面我就談談本身對看書的一些思考。java
首先這裏先作一個假定,假設你手裏讀的書必定是一本經典的、優秀的書。若是不是,那麼就趕忙扔了,一本好書是一個好老師,而一本渣書簡直害死人。。。程序員
接下來我把計算機類的書大體歸爲三大類:算法
(1)語言方面的書。好比C、Java、Python等等編程
(2)算法書籍。《算法導論》、《編程珠璣》等等服務器
(3)某一特定類別的書。好比操做系統、編譯原理、網絡、Linux內核、服務器原理等等須要很大的精力才能完全掌握的書。網絡
固然這個歸類是很是粗淺的,針對不一樣種類的書,咱們的閱讀策略也會有所側重。學習
首先針對第一類書。訣竅就一個字:練。操作系統
做爲一個新手,千萬不要陷入語言的細枝末節中,有些人學語言的方式實在是讓人啼笑皆非,好比他要學Java,他拿着一本java編程思想使勁地看,看了後面忘了前面,把本身搞的痛苦不堪,最後感嘆一句:Java真難!(我親眼見過,,還不止一兩個,也是醉了)。還有一些人,從網上或者什麼地方找來一些教學視頻,而後坐在那一邊翹着二郎腿一邊貌似「聚精會神」地看,中途偶爾QQ上來人了還要聊幾句(哥們,你當是看電影麼?)。這兩種學習方式看上去不一樣,其實本質上是同樣的,都是一種被動地接受知識的方式。這種方式及其低效,記住:代碼是敲出來的,不是看或者聽出來的!不管你是看書或者看視頻,其實都沒關係,關鍵是必定要本身動手把它敲出來。當書看完或者視頻看完後,你手上應該有大量的代碼,這個時候再把這些代碼敲個十幾遍,此時你的腦子裏留下的就是代碼而不是文字或者聲音了。說到這,讓我想起了咱們的英語教育,,我的感受學英語最有效的方法就是把本身置於一個英語環境或給本身創造一個英語環境,接下來就是使勁地說。。這樣,不到幾個月,保證你的英語棒棒噠!而不是拼命地背單詞或看語法。。(好了,不吐槽英語了O(∩_∩)O!)。設計
接下來講說該如何看算法書。訣竅:理解+運用。視頻
學算法不一樣於學語言,學算法最重要的不是記憶,而是理解。關於如何理解算法那也沒什麼好說的了,看每一個人的悟性還有堅持了,固然去網上找一些容易理解的資料或者跟同窗探討會對你學算法很是有幫助。咱們這裏重點說說爲何要強調運用。由於算法這種東西本質上是比較難理解的,比較難理解的東西就比較容易遺忘,好比你好不容易花了很長時間理解一個動歸算法或KMP算法,,而後你自認爲本身完全掌握了,而後扔在那幾個月無論它。。而後就沒有而後了。。所以算法一旦理解了之後至關重要的一點就是必定要去運用,在不一樣的場景中去運用。那麼到底怎麼運用呢?好比你的算法書後面的習題,還有如今不少高校有很好的ACM OJ,上面有大量的算法設計題,這些都是很是好的資源。當你用你目前已經理解的算法去解算法題時,這個過程自己會進一步促進你對這個算法的理解,而且增強你的記憶。好比可能過一段時間你把這個算法忘了,可是當你一想起你解的那道題時,你又把那個算法回憶起來了。由於咱們人腦老是不太容易記住那些抽象的概念,而對那些具體的東西記得比較牢。話說回來,運用算法去解題是很是花費時間的,有時候一道題你可能半天都AC不了。。因此我建議那些如今還在讀書的學生,若是你將來想走IT技術的道路,仍是去學學算法吧。對你是絕對有好處的!你工做之後可能想學都沒時間了!
最後談談對第三類書的學習。
第三類書一般都是一些理論性很強的書,比較難以消化,並且短時期內看不出它有什麼價值。。對於不少程序員來講感受用不上。。可是能夠這麼說:對這一類書理解有多深決定了你是一個攻城獅仍是一個程序猿。。固然每一個人都有他本身的選擇,並非全部人都想在技術這條路上走得很遠,若是你是那個想在技術上成就本身的人,那麼歡迎一塊兒來探討。若是不是,那麼就當隨便看看好了。針對這一類書籍的特色,我總結了本身的讀書方法——三遍讀書法。是的,沒錯!起碼三遍。對於這類書籍,要麼不讀,要讀起碼讀三遍。其實,在現實中,有不少人對於本身讀過的書是不太願意再去讀的,無論是技術書仍是其餘方面的書。這可能跟人把讀書看得過於功利有關,認爲讀過的書再去讀就是浪費時間,還不如去讀新的書。若是你問一我的你爲何要讀一本書時,他可能會告訴你爲了學新的知識或獲取新的思想。的確,目的確實沒錯,但是每每他忽略了一個簡單的道理:一本書若是隻讀一遍,那麼你最多隻能吸取10%的知識。若是你再讀第二遍、第三遍。。。你所吸取的知識就能成倍地增加,當你再讀下去的時候,你已經不止是簡單地再吸取書自己的知識了,你會造成本身的思考,也許這就是古人說的讀書百遍,其義自現吧!因此說,若是一本經典的書拿來,你只准備看一遍,那麼仍是別看了,,純粹浪費時間!既然說一本好書要讀好幾遍,那麼問題來了:我該如何讀這本書呢?是從頭到腳重複地看仍是有其餘的方法呢?固然有。我這裏爲何要提三遍讀書法,這實際上是對投入與產出的一種權衡,誰都知道多看幾遍越好,可是現實中每每很難讓你有足夠的時間去反覆地看,這時候就須要找到能儘量用最少的時間來得到最大的收穫的方法。那麼三遍讀書法具體是怎麼來操做的呢?假如你拿到一本技術書籍
第一遍
儘量在比較短的時間內過完這本書。在第一遍中,不要陷入某個具體的知識點,這一遍的主要目的是能把握每一個章節的重要知識點,記住,是把握,而不是理解透徹。這一遍講究的是快、高效。千萬不要拖太長的時間。並且對於第一遍讀完後的「成果」要牢記,最好把它記錄下來,由於它們是整本書的骨架。
第二遍
第二遍講究的是慢、理解。第二遍必定要慢,要儘量地把知識點都理解,千萬不要貪快,不要講究進度。記住,在這一遍中:欲速則不達!遇到實在不懂的點,能夠先放一放,等看到後面了再回過頭來理解一下,或者請教一下其餘人。不建議邊看邊作筆記,最好在讀完每一章或者每一節後,把書本合上,而後在腦子裏去回憶你看過的部分,尤爲是重點知識點,而後把它記錄下來,這樣比單純記筆記效率要高不少。(我的比較推薦寫博客。千萬別以爲本身水平不夠,很差意思寫博客。記住,寫博客不只僅是爲了給別人看,更重要的是對本身學過知識點的一種思路上的整理,一般這種整理都是很是高效的。另外,新手每每以爲寫博客很費時間,可是相信我,若是你真的用心在寫博客,它絕對不會辜負你的這些時間的!)這樣一遍完成後,你對整本書已經有了一個比較完整的理解了。這個時候,你能夠去看看你本身寫的博客,不用着急讀第三遍。
第三遍
一般若是你認認真真地讀完第二遍後,你能夠先放一放。人的大腦仍是須要一些時間來慢慢消化的,哪怕是潛意識的,何況,短期內連續讀好幾遍確實會讓人感受厭煩。這樣過了一段時間後(好比去看看一些其它書啊等等),你再開始讀第三遍,相信這個時候你很感受很輕鬆(人每每對熟悉的知識有一種愉悅感),這個時候你不只僅鞏固了你以前的知識,甚至有可能還會讓你產生新的想法,好比當你把操做系統的理論知識都掌握得差很少時,你可能會好奇它到底是怎麼工做的,你會產生想要去讀內核源碼的衝動。固然這就進入另外一種境界啦!(當你研究過源碼再來看操做系統的理論書籍時,你甚至都能知道哪些書寫得好哪些書寫得渣了呢!\(^o^)/~)。最後,我仍是想說,哪怕對於這些理論性很強的書,要想真正得理解它們,還須要動手實踐,好比學操做系統的能夠試着去看源碼,學編譯原理的能夠試着本身作一個小型編譯器,學網絡原理的能夠本身去搭建網絡環境來加深對網絡的理解等等。
借用陸游的名句:紙上得來終覺淺,絕知此事要躬行!
固然,以上只是我我的對看書的一些想法,也不必定對。每一個人都有適合本身的方法,歡迎來討論\(^o^)/