如何阅读计算机科学类的书

作为一个研发工程师,无论你是否喜爱阅读,相信你都一定读过不少关于计算机技术的书籍。这其中不乏《21天学会JAVA》这样的语言入门书籍,也有《算法导论》这样的专题书籍,也有《人月神话》这样关于软件管理学的实用性的书籍。也许你已经读过他们中的大部分,也许你现在还在不断地购入新的书籍来补充你的知识库。但请稍等一下,你是否思考过这样的问题,面对大量的计算机科学书籍,你是否都真正读懂了它们呢?有多少本书,当你将他放在书架上之后,就再也没有重新打开过?有多少知识是真正被存储在你的大脑中,并随时可以提供调用?拿到一本书后,高效阅读的正确姿势的什么?如果你有以上的疑惑,那么接下来,我们将一起探讨一个问题,如何阅读一本计算机科学类书籍。

阅读的四种层次

首先,我们先要学会如何阅读。你可能会觉得不可思议,我已经接受过高等教育,怎么可能还不会阅读。然而可悲的是,现代教育体系中,恰恰忽略了对阅读能力的训练。我们在初中之后,阅读水平就几乎没有机会再得到提升。总体来说,阅读分为四种层次,分别是:

  • 基础阅读
  • 检视阅读
  • 分析阅读
  • 主题阅读
    这其中的概念来源于莫提默·J·艾德勒和查尔斯·范多伦的著作《如何阅读一本书(How To Read A Book)》,这里我必须对其中的概念做简单的总结,以便在后续的篇幅中,我们能统一对阅读名词的理解。

基础阅读
当我们完成中学学业后,我们中的绝大部分人,都已经掌握了基础阅读的能力。在这个层次中,我们关心的是,书里的每句话是什么意思。这是一个最基础的层次。

检视阅读
检视阅读,我们也可以称之为快速阅读。快速浏览全书,了解书的主题,架构全书,提出核心问题。这并不是很新鲜的概念,但很多人可能并没有思考过,为什么要做检视阅读。检视阅读作用是为了帮助我们筛选这本书是否值得阅读,同时为接下来的分析阅读打下基础。在这个层次中,我们关心的是,这本书在讲什么。

分析阅读
分析阅读是一个更为高级的阅读层次,目标让我们能充分理解本书,与作者对话。其中包含了多个阶段,这里不再详述,有兴趣的同学可以研读原著。

主题阅读
当我们跨越过分析阅读后,这本书已经被我们掌握。此时,我们会就相同的主题,阅读不同的书籍,找出其中关联与矛盾,倾听不同的作者的不同声音,从而对某个主题产生更加深刻的认识。这个阶段,我们关注的不再是某一本书,而是一个具体的问题。

计算机科学书籍的特征

原著中针对不同类型的书籍,给予了不同的阅读建议。但由于所著时间很早,就计算机科学类图书的阅读建议,在书中并没有专门设计章节阐述。根据我的阅读经历,深感计算机科学类书籍,较其他类型图书有着其独特性:

单本书籍的信息量大
相较其他学科,绝大多数计算机科学类书籍并不是以得出结论并且论证结论为核心,而偏重于阐述方法和解释原理。有很多计算机书籍旨在剖析某个系统。这里的系统不仅仅指代诸如操作系统这样的实体系统,还包括一门语言或者一套管理方法论这样的理论系统。而系统通常是由多个部分组成的综合体,这其中势必包含不同组成部分的不同细节,信息量之大可见一斑。

注重实践
计算机科学是一门实用性的学科。这里的实用性可以理解为,计算机科学诞生的目的就是为了解决实际问题。因此,几乎所有的计算机科学书籍,都是以指导实践为目标而作。

更新速度快
计算机科学的更迭速度可以准确地被描述为日新月异。有些技术很快地火爆起来,又很快地消亡,所以有些书也就跟着很快地淹没在时代的进程中。

分类细致但同质度高
计算机科学对自己有着过分清晰的划分,不同的技术之间往往边界清晰。我们很少见操作系统和数据库系统在同一本书中论述,也不常见集不同语言之成的大作。由于领域划分细致,相同领域的书籍,多数时候往往论述的是同样的主题。

阅读计算机科学书籍的误区

绝大多数读者的错误意识在于把所有的书籍都认为是层层推进的论述过程。这样的阅读经验一旦沿用在计算机科学类书籍中,就会感觉举步维艰。前文说过,大多数的计算机书籍都是在剖析系统,一个系统又是由许多相互关联的部分组成。解读这类书籍,如同拆解一个机械,我们在拆解的过程,常常会犯下这些错误。

通读全书
在你的头脑中没有对全书的结构有整体了解的情况下,从头至尾通读全书,意味着试图从细节窥视一个系统的全貌。这是一种低效的读书方式。当读到中落时,你会因为没有全局概念,而迷失在各种细节中,以至于完全失去了阅读的方向和目标。

跳过序言
序言往往是很多人忽略的内容,似乎序言只是重复了正文的内容。而正因为如此,序言以简短精炼的语言,为你分解了整本书的架构,帮助你把握系统的整体。这项工作本来应该是读者在阅读全书之前的必备工作,绝大多数的作者都已经帮你完成了,而你需要做的仅仅是认真的阅读它。

脱离实践
前文说过,计算机科学类书籍重视实践,脱离了实践,往往就不能完全理解书中所述的理论和方法,过目就忘,纸上谈兵。

忽视基础
封装在计算机的世界中是一个非常重要的概念。计算机的发展史,总的来说就是一部封装史:将底层不断包装,提供简单的调用方式,由此不断的扩展计算机的边界和能力。新的技术层出不穷,而他们的很多所依赖的环境和系统,从设计之初就没有发生过质的变化。

有时,在追逐新的技术之前,深入了解他们所在的系统;在学习新的算法之前,掌握好其基础的数学原理。只有牢固的基础才能支撑足够结实的上层建筑。

阅读计算机科学书籍的建议

当了解阅读误区后,你们是不是已经发现阅读这类书籍的核心原理呢?那就是将整本书当做一个系统,从整体到局部,层层递进,逐步剖析。根据这个核心原理,我总结了一些好的实践方式。

检视阅读
当你拿到一本计算机科学书籍,第一步就应该快速浏览序言和目录,然后用检视阅读的方式整理出整本书的大纲。这样,你对这本书是介绍理论还是关注实践,所属什么分类,哪些问题是本书将会讨论,而哪些问题是不被详细讨论的,这些信息你都会有整体上的认知。这时,你就可以很轻松地判断,这本书值不值的阅读,哪些内容是你已经熟知的,哪些内容是你关注的重点,这样做阅读的效率将会大大的提高。

如果从来没有使用过这种阅读方式,开始实践时,会受到一定的心理上的阻力。可能你对某个专有名词完全没有概念,以至于整章的内容都模棱两可。这时,你应该坚持继续阅读,对不甚理解的内容,先记住有这样的概念。绝大多数的时候,经过检视阅读后,过程中的问题都会有所释怀,剩下依然没有明白的内容,视其重要性,再决定是否对其进行分析阅读。

提取问题
当你了解了整本书的全貌,一般而言,你会发现,有些章节你已经熟悉,有些章节你全然不知。这时就要对这些章节进行分析阅读。分析阅读的很多步骤和方法在《如何阅读一本书(How To Read A Book)》有详细的介绍,这里不展开细说。但有时,你在阅读的过程中,会发现阅读的兴趣在下降。信息量愈大,阅读的动力愈弱,最后你就迷失在信息的汪洋之中。

我们应该如何避免这样的信息疲劳呢?答案就是去掉冗余的干扰信息。在上一个建议中,我们强调了检视阅读的重要性。那检视阅读的成果是什么呢?那就是你对每个部分(不一定是书中给你划分的章节)所提出的问题,也可以称之为阅读目标。而你要做的就是,找到这些问题的答案,完成自己的阅读目标。

这样做过滤了很多作者认为重要,其实和你关心的主旨没有联系的信息,减少了信息疲劳。同时,不同部分之间有关联的问题,可以帮助你更好的串联全书阐述的核心概念,把握整本书的主要脉络。

例如,我在阅读《深入理解计算机系统》的异常控制流时,就提出这样的问题:进程是如何管理内存?而部分的答案,在下一个章节虚拟内存中。当我解答这个问题时,我就会将这两个分离的章节的内容,通过一个问题联系在一起,加深了自己的理解。

持续重读
一本经典优秀的计算机科学书籍,值得你反复的阅读。不要觉得整本书我已经完全理解,就再也不需要重新回顾阅读了。因为此类书籍存在大量信息,而这些信息并没有必要占据我们大脑有限的记忆存储空间。我们要做的就是认真做好第一条建议,当我们需要使用这些书籍解决问题的时候,能第一时间在其中找到我们需要的信息。毫不夸张的说,计算机科学类的书籍生来就是供人反复翻阅的。

鉴别烂书
作为阅读爱好者,谁能说自己没读过几本烂书呢。在计算机科学这个类别中,烂书的比例一点也不比其他学科低。信息重复(抄袭),结构混乱,论证不清晰(作者对某个技术一知半解)等等,都是烂书的特征。关于烂书,我们要做的就是第一时间将其鉴别出来,然后放到自己的黑名单中。具体如何鉴别烂书,由于本篇幅太长,我可能会新开一篇文章单独讨论。

结语
以上就是我对于如何阅读计算机科学类书籍的理解。本来想缩短些篇幅,但最后还是决定保留那些我觉得应该详细论述的部分。毕竟这篇文章的初心并非是厕所读物,而是一个阅读爱好者认真地与读者探讨一个严肃的话题。如果可以,我希望在通过我不断地探索,阅读能力的持续提升,我还能在此宝地继续这个话题,完善我的理论。

我在下面列出我认为经典优秀的计算机科学书籍,也欢迎大家补充,排名不分先后。

  • 《算法导论》Thomas H.Cormen、 Charles E.Leiserson
  • 《深入理解计算机系统》Randal E. Bryant
  • 《人月神话》Frederick P.Brooks
  • 《编程珠玑》Jon Bentley
  • 《高性能MySQL》施瓦茨 (Baron Schwartz)、 扎伊采夫 (Peter Zaitsev)
  • 《代码大全》Steve McConnell
  • 《程序员修炼之道:从小工到专家》亨特(Andrew Hunt)、 托马斯(David Thomas)

转载

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 难度指数: [美] 莫提默·J. 艾德勒、查尔斯·范多伦 [卡片作者]刘克亮 学会一种新知识不如掌握一种获取知识的...
    Jean_zz阅读 3,508评论 1 64
  • 学会一种新知识不如掌握一种获取知识的能力,《如何阅读一本书》就是教会你如何通过书与智者交谈。 №1 本书导语:阅读...
    夜阑明月阅读 1,614评论 1 10
  • 小雨送春去,无奈山中行。 随风闻新绿,胸中忆思情。 河头飘柳絮,遥想太白吟。 远方传音律,悠扬胜古铃。
    赤字_5caa阅读 78评论 0 0
  • 10月25日 在科爾瑪的第二天,我們租了電動車,由趙四駕駛,開上了著名的葡萄酒之路。 漫山遍野的葡萄園就象金色的海...
    坐看云起時阅读 207评论 0 1
  • 一月二十四日的 日华 寒冷的雪 等待十一日 她没有来
    左岁阅读 166评论 0 0