【專欄】一直以來伴隨我的一些學習習慣(4)
我喜歡把知識分為essential的和non-essential的。對于前者采取提前深入掌握牢靠的辦法,對于后者采取待用到的時刻RTM(Read the manual)方法。語言、分析解決問題的思維方法、判斷與決策的方法等等都是必備知識。
知識結構
自從建立了TopLanguage 以來,發現在上面待的時間越來越多,與高手討論問題是個粘性十足的事情。一方面,分享自己的認識是整理不成熟的想法的極好途徑,另一方面,互相之間視角不同,所以往往自己忽視的地方會被別人發現。在討論中不斷精化既有的知識體系。以下這段基本上摘抄自(略有整理和添加)在TopLanguage 上的發言:
抓住不變量
我喜歡把知識分為本質的和非本質的。對于前者采取提前深入掌握牢靠的辦法,對于后者采取待用到的時刻RTM(Read the manual)方法(用本)。
如何區分本質的和非本質的知識,想必絕大多數時候大家心里都有數,我舉幾個例子:對程序員來說,硬件體系結構是本質的,操作系統的一些重要的實現機制是本質的,主流編程范式(OO、FP)是為了滿足什么需求出現的(出現是為了解決什么問題),是怎么解決的,自身又引入了哪些新的問題,從而適用哪些場景)。這些我認為都是本質的。我想補充一點的是,并不是說硬件體系結構就要了解到邏輯門、晶體管層面才行(其實要了解到這個層面代價也很小,一兩本好書就行了),也并不是說就要通讀《Computer Architecture: Quantitative Approach》(譯名《計算機體系結構:量化研究方法》)才行。而是關鍵要了解那些重要的思想(很長時間不變的東西),而不是很細的技術細節(易變的東西)?!禖omputer Systems: A Programmer’s Perspective》(譯名《深入理解計算機系統》)就是為此目的,針對程序員的需求總結出那些本質的知識的好書。
再來說一下為什么需要預先牢靠掌握這些本質的知識:
(1)根據Joel Spolsky同學的說法
登錄后獲取更多權限
網絡編輯:小碧