
1
在之前的文章中我把计算机系统比作一个汉堡包,这个类比不太恰当,虽然汉堡包是层级结构,但它是上下对称的,计算机系统的层级结构显然不是对称的,你要说披萨还差不多,注意是披萨,不是馅饼,因为馅饼也是对称的
。
2
你的确不需要知道底层全部的微观细节,实际上我也不相信有谁能全部知道,如果你太注重细节,没有对计算机系统的大局观而是一头扎到细节里,最终也只是徒劳,只挖掘细节很像是一种“模糊的精确”。
3
但是,如果你能知道底层的宏观上的原理,情况就不一样了,我把这种宏观上的不那么细节的理解称之为“精确的模糊”,老外有一个词我认为很贴切:The Big Picture。
4
每一个大家认为的高手脑海里都有这样一种精确的模糊(或者精确的精确,高手中的高手),ta可能不知道编译器(解释器)、链接器、操作系统、网络协议栈、CPU、内存等等所有核心模块的全部细节,但是ta知道这些模块“应该”怎样工作,当你有了这种理解后,你会发现:
你清楚的知道自己的每一段代码大概可能会执行多长时间;你清楚的知道自己的每次函数调用从上层到底层是如何执行的,因此你很清楚该选择使用什么样的函数,传递什么样的参数才能达到自己想要的效果;你清楚的理解计算机系统,因此发现刚刚在本文开头立人设的小风说的都是你已经知道的东西。
当程序运行一段时间被OOM kill掉时;当你的程序内存泄漏时;当你的程序莫明奇妙耗时非常高时;如果在这些时刻你能做的仅仅是等待别人来帮忙,那么就不要说程序员不需要理解底层了。

