【专栏】一直以来伴随我的一些学习习惯(4)
我喜欢把知识分为essential的和non-essential的。对于前者采取提前深入掌握牢靠的办法,对于后者采取待用到的时刻RTM(Read the manual)方法。语言、分析解决问题的思维方法、判断与决策的方法等等都是必备知识。
知识结构
自从建立了TopLanguage 以来,发现在上面待的时间越来越多,与高手讨论问题是个粘性十足的事情。一方面,分享自己的认识是整理不成熟的想法的极好途径,另一方面,互相之间视角不同,所以往往自己忽视的地方会被别人发现。在讨论中不断精化既有的知识体系。以下这段基本上摘抄自(略有整理和添加)在TopLanguage 上的发言:
抓住不变量
我喜欢把知识分为本质的和非本质的。对于前者采取提前深入掌握牢靠的办法,对于后者采取待用到的时刻RTM(Read the manual)方法(用本)。
如何区分本质的和非本质的知识,想必绝大多数时候大家心里都有数,我举几个例子:对程序员来说,硬件体系结构是本质的,操作系统的一些重要的实现机制是本质的,主流编程范式(OO、FP)是为了满足什么需求出现的(出现是为了解决什么问题),是怎么解决的,自身又引入了哪些新的问题,从而适用哪些场景)。这些我认为都是本质的。我想补充一点的是,并不是说硬件体系结构就要了解到逻辑门、晶体管层面才行(其实要了解到这个层面代价也很小,一两本好书就行了),也并不是说就要通读《Computer Architecture: Quantitative Approach》(译名《计算机体系结构:量化研究方法》)才行。而是关键要了解那些重要的思想(很长时间不变的东西),而不是很细的技术细节(易变的东西)。《Computer Systems: A Programmer’s Perspective》(译名《深入理解计算机系统》)就是为此目的,针对程序员的需求总结出那些本质的知识的好书。
再来说一下为什么需要预先牢靠掌握这些本质的知识:
(1)根据Joel Spolsky同学的说法
登录后获取更多权限
网络编辑:小碧