读技术性文本的技巧

 

难于理解的技术文本,之因此难,在于文本自己,以及阅读者的阅读方式。react

 

咱们能够先想一下咱们感到难的时候,是什么样的状态。算法

  从文献的角度讲:设计模式

  好比,读到一份日志文本,这个日志是咱们第一次碰到的。这个文本有什么特征呢?数据结构

  大量的之前没有碰见过的信息。像这样:框架

  

  再好比,咱们阅读一份科技文献。就让咱们以前没有在这个领域作过深刻研究,后果就是满篇都是新概念——大量的之前没有碰见过的信息。oop

 

  大量的之前没有碰见过的信息是一份文本难于理解的缘由之一。操作系统

  除此以外,从细节上讲,还有其余缘由:设计

   1.模型的复杂程度。也就是说,若是是一个很复杂的模型,那么理解起来困难也是很正常的。好比我第一次接触reactor设计模式的时候,也是读了差很少3到5遍才弄清楚reactor设计模式是怎么个意思的。3d

   2.文本的表述水平。有不少文本自己表述的时候会把不一样层面的知识混杂在一块儿。好比我在阅读《hadoop权威指南》的时候,时常一不注意就陷入一个不知道本身在读什么的状态。由于这本书老是喜欢把模型(也就是抽象的东西)和具体的实现细节混在一块儿讲,假如我不注意将模型从细节里面剖开,就会陷入不知道本身在读什么的状态。日志

     3.文献章节之间的组织结构。不论是从基础开始到高阶知识,仍是从结论开始往底层构建逐步推导,一个很重要的原则是按部就班。这一层很容易理解。并且大部分的较正式的文献均可以作到这一点,由于这一点写做的人都知道。

   

 

  从读者的角度讲

  读者在不一样的状况下每每会用不一样的方式去阅读。

  好比本身有充足的时间的时候,极可能会过度关注细节;而当本身时间比较紧张的时候,就会懒得理会那些细节,想要直接得出最终结果。

  我对阅读的理解是:检讨、分层与关键词。

  检讨:给本身提问。每当读到一个关键词的时候,提一个或几个简单的问题:这个东西提出来的目的是什么?怎么达到目的的?假如我想要对所学的东西有一个更加深刻的理解,能够问这样一个问题:假如我来设计这个东西,我怎么作?

  分层:抽离出不一样层面的知识。对于一个模型,咱们要深刻理解其内在知识,能够考虑暂时无视那些细节。举个例子,在第一次阅读MapReduce框架下的shuffle过程的时候,我当时陷入了细节的泥沼里面:由于hadoop自己是一个综合性很强的系统,从操做系统细节,当算法、数据结构知识,都有涉及,再加上mapreduce自己的工做流程特色,能够想见shuffle是一个比较复杂的过程。我当时并无刻意去将shuffle过程抽离出来。最近有人问我:你知道shuffle怎么回事么?我不知道说什么好,由于我真的没有理解这个过程。好了,若是我如今讲,什么是shuffle,我会这么讲:

    shuffle分为好几步:

             Map1:map=>{partition=>sort=>merge(+combine)=>A1,B1,C1

             Map2:map=>{partition=>sort=>merge(+combine)=>A2,B2,C2

             Map3:map=>{partition=>sort=>merge(+combine)=>A3,B3,C3

        

             ReduceA:merge(A1+A2+A3)}=>reduce

               ReduceB:merge(B1+B2+B3)}=>reduce

               ReduceC:merge(C1+C2+C3)}=>reduce

    上述过程是一个高度简化了的shuffle过程。可是这也足以表达shuffle所起的做用了。至于数据存在内存仍是磁盘,merge的算法,combine要注意的细节等等等等,都属于另外一个层面的事情。至少在模型上,shuffle已经被剖离出来了。并且很容易理解。这就是我想要讲的分层的意思。

   关键词:有不少时候,咱们学一个知识,每每学的是这个知识包含的关键词。作到尽可能不去忽视那些“刚认识”的关键词(特别是在看日志的时候),加上对关键词的检讨和分层阅读,就能够很快创建一个阅读的脉络了。

  

  还有一个问题,如何把握精读和泛读的度呢?

  对关键词进行分层越是底层和抽象概念的东西越要优先掌握,而后看你打算花多少时间了。

相关文章
相关标签/搜索