讀技術性文字的技巧

2022-09-11 14:39:27 字數 1641 閱讀 6641

難於理解的技術文字,之所以難,在於文字本身,以及閱讀者的閱讀方式。

我們可以先想一下我們感到難的時候,是什麼樣的狀態。

從文獻的角度講:

比如,讀到乙份日誌文字,這個日誌是我們第一次碰到的。這個文字有什麼特徵呢?

大量的以前沒有遇見過的資訊。像這樣:

再比如,我們閱讀乙份科技文獻。就讓我們之前沒有在這個領域做過深入研究,後果就是滿篇都是新概念——大量的以前沒有遇見過的資訊。

大量的以前沒有遇見過的資訊是乙份文字難於理解的原因之一。

除此之外,從細節上講,還有其他原因:

1.模型的複雜程度。也就是說,如果是乙個很複雜的模型,那麼理解起來困難也是很正常的。比如我第一次接觸reactor設計模式的時候,也是讀了差不多3到5遍才弄清楚reactor設計模式是怎麼個意思的。

2.文字的表述水平。有很多文字本身表述的時候會把不同層面的知識混雜在一起。比如我在閱讀《hadoop權威指南》的時候,時常一不注意就陷入乙個不知道自己在讀什麼的狀態。因為這本書總是喜歡把模型(也就是抽象的東西)和具體的實現細節混在一起講,假如我不注意將模型從細節裡面剖開,就會陷入不知道自己在讀什麼的狀態。

3.文獻章節之間的組織結構。不管是從基礎開始到高階知識,還是從結論開始往底層構建逐步推導,乙個很重要的原則是循序漸進。這一層很容易理解。而且大部分的較正式的文獻都可以做到這一點,因為這一點寫作的人都知道。

從讀者的角度講

讀者在不同的情況下往往會用不同的方式去閱讀。

比如自己有充足的時間的時候,很可能會過分關注細節;而當自己時間比較緊張的時候,就會懶得理會那些細節,想要直接得出最終結果。

分層:抽離出不同層面的知識。對於乙個模型,我們要深入理解其內在知識,可以考慮暫時無視那些細節。舉個例子,在第一次閱讀mapreduce框架下的shuffle過程的時候,我當時陷入了細節的泥沼裡面:因為hadoop本身是乙個綜合性很強的系統,從作業系統細節,當演算法、資料結構知識,都有涉及,再加上mapreduce本身的工作流程特點,可以想見shuffle是乙個比較複雜的過程。我當時並沒有刻意去將shuffle過程抽離出來。最近有人問我:你知道shuffle怎麼回事麼?我不知道說什麼好,因為我真的沒有理解這個過程。好了,如果我現在講,什麼是shuffle,我會這麼講:

shuffle分為好幾步:

map1:map=>=>reduce

reduceb:merge(b1+b2+b3)}=>reduce

reducec:merge(c1+c2+c3)}=>reduce

上述過程是乙個高度簡化了的shuffle過程。但是這也足以表達shuffle所起的作用了。至於資料存在記憶體還是磁碟,merge的演算法,combine要注意的細節等等等等,都屬於另乙個層面的事情。至少在模型上,shuffle已經被剖離出來了。而且很容易理解。這就是我想要講的分層的意思。

還有乙個問題,如何把握精讀和泛讀的度呢?

技術性 Search知識

持續更新。fb search框架 php寫的browse layer,負責同client對話以及param處理和passing等。c 寫的backend,最大的一坨叫做topaggregator,主要負責三件事 a rewrite query to get better search results...

技術性 Search知識

持續更新。fb search框架 php寫的browse layer,負責同client對話以及param處理和passing等。c 寫的backend,最大的一坨叫做topaggregator,主要負責三件事 a rewrite query to get better search results...

技術性 Search知識

持續更新。fb search框架 php寫的browse layer,負責同client對話以及param處理和passing等。c 寫的backend,最大的一坨叫做topaggregator,主要負責三件事 a rewrite query to get better search results...