我常常讲一个比喻,这个比喻是说有一座塔,塔门口有两尊石狮子。
如果有人登塔,那么进塔之前他固然是会看到这个狮子的,往上走,正好到塔后,石狮子就没有了,于是这个人说“就我一楼之所见,没有狮子”;绕到前面,一看,石狮子好好地在那儿,于是这个人又说“于我所见,有狮子”。如此行至二楼,他又会说“没有狮子”,而后又否定说“真真切切是有狮子在的”。
对于旁人来说:只听这个人讲“有,或没有”狮子,会知道他在几楼吗?又或者说,就算知道这个人在几楼,又能知道他说“有,或没有”狮子,是综览事实之所见,还是未见事实全貌时的一时所言?你其实并不知道。
我们只是要么相信了对方所在的高度,要么认可了对方所言的真假。而大多数时候,我们其实无从判断:那个人说的是不是对的,又或者他说的,究竟是在几层楼上看见的石狮子。
每一层可见的狮子,都是相同的狮子;但每一次的所见,却不相同。同样是真理,在初学者和大师的口中说出来,尽管字面上都是一样的,但是却包含着不同高度的理解。所谓大师,也不过是先行者,只是他处在的楼层,决定了他看得见下面所有的层次上的真相,也辨得清每一层所见的石狮子的样子。
所以,所谓“懂”,其实说的不是一个结果,而是一个状态:知道自己所在之位置的,才是真的懂;知道自己所见之局限的,才是真的懂;知道自己所向之湮远的,才是真的懂。
我写过《程序原本》,250多页的内容,然而到了《我的架构思想》中,就只留下了一句“程序是可被组织的元素”。
只有有了这一句话的铺垫,架构思想才成立,否则所谓思想就成了空立在文字之上的东西,是空洞贫乏的呓语了。正是这些年来的经历,让我找到了自己在“程序”这个事物中的位置,从而找到了我在“架构”这个事物中的基础;前者的位置,决定了后者的高度。
而《JavaScript核心原理解析》这门课程一直在做的,就是帮你找到这样的一个铺垫,它无非是一个起点,这个起点是你构建语言体系时,所铺下的第一块基石。倘若它能帮助你以此为基点先行一步,那么这就是这门课的价值所在,也是你与众不同的价值所在。
在第22讲,也就是最后的一讲中,我写了9个NOTE,来指向此前在其它章节中所讲述的内容。我不知道你是否注意到了这一点,又是否理解这其中的用意。
其实每一个课程,乃至于每一篇文章,都是由更多的知识来组成的。你能读明白第22讲,是源自于前21讲的积累,并不是一蹴而就的。
然而读得明白第22讲,也并不是真的懂了。你要看得到前面的那些知识、那些细节,你还要把这些知识与细节归纳起来,形成结构,形成体系,形成一个简单的模型或概念。这些是你所见到的东西,而不再仅仅是我的讲述。你回忆得起来我的所述,只说明你的记性好;要构建得了自己的见识,才说明你开始懂了。
要有所见,但也不要固执于已见,那样就没有进步了。这个进步的过程,才是真的懂。所谓进步,不是否定别人,而是否定自己。
停下来,思考才是进步的本质!
这是李维先生十几年前同我说的。我把这句话写在了《大道至简》这本书的序里,也记在了我的思想中。因而我常常会停下来,不去急于得到结果,而是去看看我想要的是什么,期望的方向又是什么。我总觉得,这些往往是更重要的。
如果以“构建语言体系”作为目标,那么我很难向你描述那绝顶处的风光,我所能展示的,也仅仅是这个塔上某一层的所见而已。我仍前行不辍,仍然时有新思,我仍愿意将对于“石狮子”的每个点滴观察与你分享。风起了,起点越来越远,我回头望向石狮子的时候,它都渺远到几乎再也看不见了……但我知道,这意味着终点也就越来越近了。
“俯仰叹山低天小”,这句诗讲的便是登临山顶的快意。彼时彼处,汝可在否?!
谢谢你的收听,愿你能做一个真正“懂”的程序员。
评论