如何阅读技术书籍

不知道大家有没有这种感受?当你拿到一本书并准备读时,总是想在几天之内就把它看完;看到后面就不想往前翻;每天以看了多少页书为衡量自己今天的价值,而不是吸收了多少知识;看完一本书总感觉脑袋空空的,看了后面忘了前面的。。。当然你可能还会碰到很多看书的烦恼,,下面我就谈谈自己对看书的一些思考。

首先这里先做一个假定,假设你手里读的书一定是一本经典的、优秀的书。如果不是,那么就赶紧扔了,一本好书是一个好老师,而一本渣书简直害死人。。。

接下来我把计算机类的书大致归为三大类:

(1)语言方面的书。比如C、Java、Python等等

(2)算法书籍。《算法导论》、《编程珠玑》等等

(3)某一特定类别的书。比如操作系统、编译原理、网络、Linux内核、服务器原理等等需要很大的精力才能彻底掌握的书。

当然这个归类是非常粗浅的,针对不同种类的书,我们的阅读策略也会有所侧重。

首先针对第一类书。诀窍就一个字:练。

作为一个新手,千万不要陷入语言的细枝末节中,有些人学语言的方式实在是让人哭笑不得,比如他要学Java,他拿着一本java编程思想使劲地看,看了后面忘了前面,把自己搞的痛苦不堪,最后感叹一句:Java真难!(我亲眼见过,,还不止一两个,也是醉了)。还有一些人,从网上或者什么地方找来一些教学视频,然后坐在那一边翘着二郎腿一边貌似“聚精会神”地看,中途偶尔QQ上来人了还要聊几句(哥们,你当是看电影么?)。这两种学习方式看上去不同,其实本质上是一样的,都是一种被动地接受知识的方式。这种方式及其低效,记住:代码是敲出来的,不是看或者听出来的!无论你是看书或者看视频,其实都不要紧,关键是一定要自己动手把它敲出来。当书看完或者视频看完后,你手上应该有大量的代码,这个时候再把这些代码敲个十几遍,此时你的脑子里留下的就是代码而不是文字或者声音了。说到这,让我想起了我们的英语教育,,个人感觉学英语最有效的方法就是把自己置于一个英语环境或给自己创造一个英语环境,接下来就是使劲地说。。这样,不到几个月,保证你的英语棒棒哒!而不是拼命地背单词或看语法。。(好了,不吐槽英语了O(∩_∩)O!)。

接下来说说该如何看算法书。诀窍:理解+运用。

学算法不同于学语言,学算法最重要的不是记忆,而是理解。关于如何理解算法那也没什么好说的了,看每个人的悟性还有坚持了,当然去网上找一些容易理解的资料或者跟同学探讨会对你学算法非常有帮助。我们这里重点说说为什么要强调运用。因为算法这种东西本质上是比较难理解的,比较难理解的东西就比较容易遗忘,比如你好不容易花了很长时间理解一个动归算法或KMP算法,,然后你自认为自己彻底掌握了,然后扔在那几个月不管它。。然后就没有然后了。。因此算法一旦理解了以后相当重要的一点就是一定要去运用,在不同的场景中去运用。那么到底怎么运用呢?比如你的算法书后面的习题,还有现在很多高校有很好的ACM OJ,上面有大量的算法设计题,这些都是非常好的资源。当你用你目前已经理解的算法去解算法题时,这个过程本身会进一步促进你对这个算法的理解,并且加强你的记忆。比如可能过一段时间你把这个算法忘了,但是当你一想起你解的那道题时,你又把那个算法回忆起来了。因为我们人脑总是不太容易记住那些抽象的概念,而对那些具体的东西记得比较牢。话说回来,运用算法去解题是非常花费时间的,有时候一道题你可能半天都AC不了。。所以我建议那些现在还在读书的学生,如果你未来想走IT技术的道路,还是去学学算法吧。对你是绝对有好处的!你工作以后可能想学都没时间了!

最后谈谈对第三类书的学习。

第三类书通常都是一些理论性很强的书,比较难以消化,而且短时期内看不出它有什么价值。。对于很多程序员来说感觉用不上。。但是可以这么说:对这一类书理解有多深决定了你是一个攻城狮还是一个程序猿。。当然每个人都有他自己的选择,并不是所有人都想在技术这条路上走得很远,如果你是那个想在技术上成就自己的人,那么欢迎一起来探讨。如果不是,那么就当随便看看好了。针对这一类书籍的特点,我总结了自己的读书方法——三遍读书法。是的,没错!起码三遍。对于这类书籍,要么不读,要读起码读三遍。其实,在现实中,有很多人对于自己读过的书是不太愿意再去读的,不管是技术书还是其他方面的书。这可能跟人把读书看得过于功利有关,认为读过的书再去读就是浪费时间,还不如去读新的书。如果你问一个人你为什么要读一本书时,他可能会告诉你为了学新的知识或获取新的思想。的确,目的确实没错,可是往往他忽略了一个简单的道理:一本书如果只读一遍,那么你最多只能吸收10%的知识。如果你再读第二遍、第三遍。。。你所吸收的知识就能成倍地增长,当你再读下去的时候,你已经不止是简单地再吸收书本身的知识了,你会形成自己的思考,也许这就是古人说的读书百遍,其义自现吧!所以说,如果一本经典的书拿来,你只准备看一遍,那么还是别看了,,纯粹浪费时间!既然说一本好书要读好几遍,那么问题来了:我该如何读这本书呢?是从头到脚重复地看还是有其他的方法呢?当然有。我这里为什么要提三遍读书法,这其实是对投入与产出的一种权衡,谁都知道多看几遍越好,但是现实中往往很难让你有足够的时间去反复地看,这时候就需要找到能尽可能用最少的时间来获得最大的收获的方法。那么三遍读书法具体是怎么来操作的呢?假如你拿到一本技术书籍

第一遍

尽可能在比较短的时间内过完这本书。在第一遍中,不要陷入某个具体的知识点,这一遍的主要目的是能把握每个章节的重要知识点,记住,是把握,而不是理解透彻。这一遍讲究的是快、高效。千万不要拖太长的时间。而且对于第一遍读完后的“成果”要牢记,最好把它记录下来,因为它们是整本书的骨架。

第二遍

第二遍讲究的是慢、理解。第二遍一定要慢,要尽可能地把知识点都理解,千万不要贪快,不要讲究进度。记住,在这一遍中:欲速则不达!遇到实在不懂的点,可以先放一放,等看到后面了再回过头来理解一下,或者请教一下其他人。不建议边看边做笔记,最好在读完每一章或者每一节后,把书本合上,然后在脑子里去回忆你看过的部分,尤其是重点知识点,然后把它记录下来,这样比单纯记笔记效率要高很多。(个人比较推荐写博客。千万别觉得自己水平不够,不好意思写博客。记住,写博客不仅仅是为了给别人看,更重要的是对自己学过知识点的一种思路上的整理,通常这种整理都是非常高效的。另外,新手往往觉得写博客很费时间,但是相信我,如果你真的用心在写博客,它绝对不会辜负你的这些时间的!)这样一遍完成后,你对整本书已经有了一个比较完整的理解了。这个时候,你可以去看看你自己写的博客,不用着急读第三遍。

第三遍

通常如果你认认真真地读完第二遍后,你可以先放一放。人的大脑还是需要一些时间来慢慢消化的,哪怕是潜意识的,况且,短时间内连续读好几遍确实会让人感觉厌烦。这样过了一段时间后(比如去看看一些其它书啊等等),你再开始读第三遍,相信这个时候你很感觉很轻松(人往往对熟悉的知识有一种愉悦感),这个时候你不仅仅巩固了你之前的知识,甚至有可能还会让你产生新的想法,比如当你把操作系统的理论知识都掌握得差不多时,你可能会好奇它究竟是怎么工作的,你会产生想要去读内核源码的冲动。当然这就进入另一种境界啦!(当你研究过源码再来看操作系统的理论书籍时,你甚至都能知道哪些书写得好哪些书写得渣了呢!\(^o^)/~)。最后,我还是想说,哪怕对于这些理论性很强的书,要想真正得理解它们,还需要动手实践,比如学操作系统的可以试着去看源码,学编译原理的可以试着自己做一个小型编译器,学网络原理的可以自己去搭建网络环境来加深对网络的理解等等。

借用陆游的名句:纸上得来终觉浅,绝知此事要躬行!

当然,以上只是我个人对看书的一些想法,也不一定对。每个人都有适合自己的方法,欢迎来讨论\(^o^)/

时间: 2024-12-29 11:47:44

如何阅读技术书籍的相关文章

阅读技术书籍

如何阅读技术书籍 不知道大家有没有这种感受?当你拿到一本书并准备读时,总是想在几天之内就把它看完:看到后面就不想往前翻:每天以看了多少页书为衡量自己今天的价值,而不是吸收了多少知识:看完一本书总感觉脑袋空空的,看了后面忘了前面的...当然你可能还会碰到很多看书的烦恼,,下面我就谈谈自己对看书的一些思考. 首先这里先做一个假定,假设你手里读的书一定是一本经典的.优秀的书.如果不是,那么就赶紧扔了,一本好书是一个好老师,而一本渣书简直害死人... 接下来我把计算机类的书大致归为三大类: (1)语言方

Android深度探索(卷1)HAL与驱动开发(总)

第一章Android系统移植与驱动开发概述主要讲了Android系统架构,Android系统移植的主要工作,查看Linux内核版本,Linux内核版本号的定义规则,如何学习Linux驱动开发,Linux设备驱动以及Linux驱动的典型例子:LED. 首先Android是一个非常优秀的嵌入式操作系统,经过了几年的快速发展,已经形成了Linux内核,c/c++代码库,Android SDK API,应用程序四层系统架构.然后介绍了一下Android系统移植的主要工作,主要分为应用移植和系统移植两部分

关于程序猿的几个阶段!

程序猿的职业生涯是一段充满起伏的有趣经历.考虑到其陡峭的学习曲线.全然能够预见你将经历挫折.启蒙.骄傲自大这几个时期.以及穿插其间的各种心路历程.在这篇文章中让我们轻松一下.通过一系列搞笑 gif 图来回想当中的每个阶段 . 阶段1-菜鸟 初入职场的日子,我们都充满激情. 在此期间.你毫无头绪,根本不知道该做什么.就像鱼儿离开了水.每一行代码对你来说都是个迷. Doctype?哈?见鬼,这个<div>究竟是干什么用的?第一个阶段令人生畏.让人提心吊胆.却又激动人心.究竟有多少种该死的语言要学啊

程序员的 升级 ,价值观的改变

韩梦飞沙  韩亚飞  [email protected]  yue31313  han_meng_fei_sha 第1章 为何这本书与你先前读过的任何书籍都迥然不同 高亮 [页面 19]: "优秀 的软件开发人员",是那些能够把控自己的职业生涯.达成目标.享受生活的人 高亮 [页面 19]: 一名软件开发人员如何超越编写代码本身? 高亮 [页面 19]: 如果你想真正成为一个更好的软件开发人员(或者其他真正优秀的人 才),你需要把重点放在整个"人"上,而不只是你生活

Android深度探索HAL与驱动开发 第四章 源代码下载和编译

前面说过Android移植主要就是Linux内核的移植,而Linux内核移植主要是Linux驱动的移植,所以为了开发和测试Linux驱动,有必要学习在Ubuntu Linux下如何搭建两套开发环境:Android应用程序开发环境和Linux内核开发环境.Linux内核开发环境的搭建是重点中的重点.下面根据书上的内容和网上的资料写出了步骤: (1)配置Android源代码下载环境: (2)Android源代码目录分别存放了Android源代码的不同子项目 (3)下载Android源代码中的一部分两

如何实践一万个小时异类天才理论?

<异类>中著名的一万小时大师理论,假如要实践和证明,需要制定一个计划,我的假设是这样: 1.每天睡觉前抽半个小时学习2.每天睡醒后抽半个小时学习3.每天上班前30分钟学习4.星期六日分别学习2个小时 0.5*3 * 5 + 4 = 11.5小时 / 1星期10000 / 11.5 = 869个星期保持习惯才可以成为大师869 * 7 = 6083 天才可以成为大师6083 / 365 = 16 年 风雨无阻.持之以恒持续不断的按计划学习的情况下,我距离成为大师大约还需要16年. 乐观一点假设我

重新出发:我的2015总结和2016计划

工作这四年多,几乎每年都看到一些同学分享自己的年终总结,但大多看过了就忘了.自从去年底接触到前端行业里大牛们的总结,让我触动很大,大牛们短短一年时间竟能学习这么多东西,而我自己一年到头看似忙碌,但是沉淀下来的知识其实并没有多少.所以今年也想东施效颦一把,把今年做的事.学的知识总结记录下来,很多东西可能显得幼稚浅薄,但是应该留下这些成长的足迹,鞭策自己不断进步. 一.2015我都做了什么? [工作] 转岗: 年初在凤凰网从专题编辑转去做专做H5,从内容策划.设计.开发.推广几乎一手包办,但是在不断

谈谈程序员学习英文

今天把<Ogre 3D 1.7 Beginner's Guide>看完了,这也是我第一次完整的阅读完一本英文书籍,当然也是第一本英文技术书籍.来和大家分享一下我对程序员学习英文的一些看法. 学生时代到工作的个人英语学习经历  我自己的英文怎么说呢,不好不坏吧,小学是在小镇里上的,中学时候家搬到了市里我也就上了市里的初中,一开始我的英文绝对是最烂的.老师让读课文就把英文书上的句子下面标满了近似音的汉字.比如Good Bye就标成"骨头白".现在想想真是好笑死了.还记得一次上英

第三章:Git使用入门

Linux下的软件有很多都是直接提供源代码,既然涉及源代码就要对源代码进行管理.Linux内核代码及很多著名的项目都使用了Linux之父Linus编写的Git进行源代码管理. 1.安装Git 因为现在很多Linux系统已经自带了Git,这里不在叙述. 2.查看Git文档,可以直接使用man命令查看指定命令的帮助文档. 3.源代码的提交与获取, ①在建立开源项目时,需要用git init在本地创建一个空的版本库. 先执行命令mkdir -p /dome/helloworld-git建立一个开源的工