道和名的逻辑原理
“道”是我们觉得外部客观存在而引起我们感知的那个东西,名是我们对这些感知信息的总结。道发生在脑子之外,名是脑子中的信息(这只是简单的总结,如果你看了本书V3的说明,就会理解脑子除了有“名”这个信息,还有更多其他的隐层信息)。这是道德经对道和名的原始定义。
用维特根斯坦《逻辑哲学论》的观点来看,道的大部分信息只能Pass over in silence,你说某个东西是青蛙,别人认不认同,没有什么严格的证明的,只能是“你知我知”,交流永远都存在这样一部分信息,只能“你知我知”,没有办法严格谈逻辑的。等我们有共识了,那就是可以严格讨论的“名”,我们都说这是“青蛙”,都承认“青蛙有四条腿”,那我们就可以有推理出来“这两只青蛙有一样的腿的数目”。后面这些讨论就是可以严格的,是Tractatus,是逻辑statement中的主语(Object)和谓词(Predicate)。
用逻辑来理解名,名其实很简单,名是集合,只有在集合中,和不在集合中两个属性。我是我,不是你,不是他,我就是一个集合。只有是,否和“不知”三个认识。当然,谓词逻辑还有关联的概念(比如青蛙和四条腿两个概念就有关联),但如果只是泛泛来认识,我们一定程度上可以认为关联也是某种程度的集合而已。
名本身也是道。你说:“不要吵”,这是句话本身是名,但你说这句话这件事本身是道。所以,我说“你禁止其他人的发出声音”,这是对你说“不要吵”这件事的一个总结。所以,名是有层次的。对另一组名的总结,构建了一组名。在这个上下文中,后者是前者的名,前者是后者的道。这是造成各种混乱的重要原因。
举一个很多人都能理解的常见例子,我在一个情感节目里面看到一段对话。一个观众打电话给节目主持人,说到:
“我老公是个很强势的人。”
“怎么强势?”
“他的工资不肯给我管。”
……
这里,“很强势”是个名,我们不同的人和这个观众明显有不同的细节来认知这个名。你让我看,我觉得这个观众自己是个“很强势”的人(她要管别人的钱),但显然这个观众认知这个名的细节和我不同,她觉得不肯听她的就是很强势(严格说,这也有一定逻辑的。)
作为一个软件架构师,我可以分享一个我们这个行业的专业知识:我们经常做架构设计的第一步,就是需求分析,就是分析客户要什么。而需求分析的第一步,就是“概念空间建模”。
什么叫“概念空间建模”呢?就是你得让你说的“名”,和客户说的“名”,是一致的。你去做一个会计系统,客户口中的“盈亏”,“损益”,“报表平衡”,“仓库”,和你理解的是一个意思吗?这就需要你根据他们的描述去定义这些名字,并且用这些名字和典型的细节过程进行关联(“关联”通常就是使用这些名字去描述客户的业务过程),这样,你说的名,和客户的名,对“道”的反映才是一样的。
这个名字随之会用于和程序员沟通,让这个名字的细节和程序员这个角度的细节也一致。这就是架构师的工作:让客户的“名”,和程序员的“名”具体相同的语义。大部分大型软件的失败,都是因为大量的“头脑”加入到同一个逻辑空间中,语义(名所代表的细节)不一致引起的。
照顾对软件这个领域没有认识的读者,我们再举一个例子。曹雪芹是有过贵族生活经验的,他描写贵族吃什么,可以写出酸笋鸡皮汤,胭脂鹅脯这样具体的名字来,能说出茄鲞要把茄子去皮,用鸡油炸,再加各种调料腌制的详细过程。而没有这样生活经验的作者可能就只能写出“美味的食物”,要经过“精心制作”。这里,“美味”不是“酸笋鸡皮汤”,不是“胭脂鹅脯”这种信息,茄子去皮和用鸡油炸,也不是“精心制作”这个信息。后者是前者的名。后者“总结”了前者,但后者并非是前者。
说到底,名是道的抽象。道包含更多的信息,而名表示了更大的范围。道是常量,所有东西都是确定的。而名包含变量,我们只是指定了一个集合,所有符合集合的内容都是名的范围内的。“做模块A的设计”,可以表现为写下一段程序,也可以表现为写出一个流程图。“做模块A的设计”这个描述包括了所有这些变数,而写下一段程序和写下一个流程图是“做模块A中”的一个具像。
同样,“美味的食物”可以是酸笋鸡皮汤,也可以是胭脂鹅脯,还可以是麦当劳炸鸡,长沙臭豆腐,贵州折耳根……
在名和道这个层级关系中,高一级的名,比更接近道的那个名表示的集合范围更大。但它只是我们针对目标抽取的一个“比较结果”, 并不包含下一级的信息。
因为名包含了创建者的目标,我们就可以从名里面看到创建者本身的特征。所以“自古及今,其名不去,以阅众甫”。我们从名字中不但看到道的特征,更看到了“众甫”那点小九九。道之为物,唯恍唯惚。为什么会恍惚?因为你实际感知的任何东西,在没有确定目标前,是没有意义的。就算这个信息并不复杂。比如说,儿子回来告诉你,这次考试考了80分。你是什么感觉?80分在你的目标中不构成一个集合,不能用来做判断,这个80分,就是一个恍惚。
什么时候它不是恍惚呢?当你作出这样判断的时候,它就不恍惚了:
总分100分,这个成绩算中上。
全班最高分100,最低分75,这个成绩在班里不算突出。
全班中位数90分,也不差,这还是比不过同学。
隔壁王大妈的儿子才77,比咱家孩子差。
……
加上这些目标,这个成绩就不恍惚了。名字的确定性,都是来自这种只有是和否的比较,才会变成逻辑上有效的信息。即使仅仅是一个简单的数字。所以,我们获取信息的时候,是通过设计很多的目标来比较这个信息,没有这样的目标,只是漫无目地把信息原封不动地接纳进来,这个信息是传递不进来的。
但一旦目标确定,我们就知道你想干什么了。你比较总分和儿子的分数,你关心的是儿子有多少要考的知识点没有掌握,你比较儿子和同学的分数对比,你关心的是你儿子在同学中处于什么层次,你关心王大妈的儿子考了多少,你是要和王大妈比“能耐”……我们何以知众甫之状哉?以此!