如何系统地阅读一本技术书籍
对于读书,每个人都有自己的技巧,你曾经是否有过这样的经历呢?那就是买了一本还不错的技术书籍,却没能认真地读完过该书。每天以看了多少页书成为衡量自己今天的价值,而不是吸收了多少知识;看完一本书总感觉脑袋空空的,看了后面忘了前面的.....。
今天与大家一起讨论一下,如何系统的阅读一本技术书籍。首先这里先做一个假定,假设你手里读的书一定是一本经典的、优秀的书。
接下来我把计算机类的书大致归为三大类:
(1)语言方面的书。比如C、Java、Python等等
(2)算法类书籍。《算法导论》、《数据结构与算法分析》等等
(3)某一特定类别的书。比如操作系统、编译原理、网络、Linux内核、服务器原理等等需要很大的精力才能彻底掌握的书。
当然这个归类是非常粗浅的,针对不同种类的书,我们的阅读策略也会有所侧重。
1练
作为一个新手,千万不要陷入语言的细枝末节中,有些人学语言的方式实在是让人哭笑不得,比如他要学Python,他拿着一本Python核心编程想使劲地看,看了后面忘了前面,把自己搞的痛苦不堪,最后感叹一句:Python真难!还有一些人,从网上找来一些教学视频,然后坐在那貌似“聚精会神”地看,中途偶尔QQ、微信聊几句。这两种学习方式看上去不同,其实本质上是一样的,都是一种被动地接受知识的方式。这种方式及其低效,记住:代码是敲出来的,不是看或者听出来的!无论你是看书或者看视频,其实都不要紧,关键是一定要自己动手把它敲出来。当书看完或者视频看完后,你手上应该有大量的代码,这个时候再把这些代码敲个十几遍,此时你的脑子里留下的就是代码而不是文字 或者声音了。
2运用
大家还记得前段时间很火的Alpha Go么?其实现算法主要是蒙特卡洛算法,算法的应用很广泛,学习起来不同于学习一门语言,学算法最重要的不是记忆与练习,而是理解。算法本质上是比较难理解的,比较难理解的东西就比较容易遗忘,比如你好不容易花了很长时间理解深度优先遍历算法,然后你自认为自己彻底掌握了,然后扔在那几个月不管它,然后就没有然后了......因此算法一旦理解了以后相当重要的一点就是一定要去运用,在不同的场景中去运用。那么到底怎么运用呢?比如你的算法书后面的习题。当你用你目前已经理解的算法去解算法题时,这个过程本身会进一步促进你对这个算法的理解,并且加强你的记忆。比如可能过一段时间你把这个算法忘了,但是当你一想起你解的那道题时,你又把那个算法回忆起来了。因为我们人脑总是不太容易记住那些抽象的概念,而对那些具体的东西记得比较牢。
3深入理解
第三类书通常都是一些理论性很强的书,比较难以消化,而且短时期内看不出它有什么价值......对于很多程序员来说感觉用不上,但是可以这么说:对这一类书理解有多深决定了你是一个攻城狮还是一个程序猿。当然每个人都有他自己的选择,并不是所有人都想在技术这条路上走得很远,如果你是那个想在技术上成就自己的人,那么欢迎一起来探讨。如果不是,那么就当随便看看好了。