第十二章 对话讨论式:古希腊哲学的本体论
老哥,上一章你临走前甩给我一句:“我每天写
class Order的时候,好像已经在干希腊人干的事了。” 这句不是随口说的。这一章我们就把你那句话拆开——你凭什么敢说自己”抓住了订单的本质”?这背后站着的,是西方哲学最硬的一个词:本体论。
墨叔:老哥,你先别翻正文。我问你一个特别朴素、但你大概率从没认真想过的:你每天写代码,本能地相信”Order 这个实体背后有个不变的本质结构”——可你有没有想过,这种”世界可以被拆成实体、每个实体有本质”的信仰,并不是天经地义,而是两千多年前一群希腊人用”本体论”替你悄悄装好的?
你:……这我确实从没往这想。我就觉得建模是天经地义,写个 class 不是本能吗?
墨叔:本能,但本能有来历。这一章要钻进西方哲学科学体系的硬核——本体论(Ontology)。王东岳讲它,不是让你背名词,而是要你看见:你今天之所以能”建模”,是因为古希腊人先替你相信了”现象背后有本质、本质可被理性把握”。咱把这信念拆开:它从哪来、怎么运作、又有什么代价。
你:那咱就从”本体论”这个词本身拆起?
墨叔:对。ontology 拆开是 onto(存在/being)+ logia(言说/学问),字面就是”关于存在的学问”。但哲学里的”存在”不是”有没有”这种日常意思,而是巴门尼德那句惊天的话:“存在者存在,非存在者不存在。” 听着像废话?恰恰这句废话开启了整个西方形而上学。
你:确实像废话。存在者存在,这不废话吗?
墨叔:你先忍住。要理解它,得先分清两层。第一层叫”存在者(beings)“——你眼前具体的、变动的、一个一个的东西:这棵树、那只猫、这笔订单、这个用户,它们是存在者。第二层叫”存在(being)本身”——让所有这些存在者之所以”是”的那个最根本的东西,不是具体的某物,而是”是”这件事本身。普通人只关心存在者:这棵树怎么活、这笔订单怎么付。但希腊人突然问了个反常的问题:在所有变动不居的存在者背后,有没有一个不变的”存在”本身?
你:哦,我懂了。就像水变成冰又变成汽,变的是”存在者”,但”有东西在”这件事没变。希腊人问的是那个”有东西在”的底层是什么。
墨叔:(点头) 王东岳把这个追问叫”追究终极”的极致形态:你不接受现象层面的回答,非要挖到”使一切成为可能的那个根据”。这就是本体论的起点。一旦开启,西方思想就走上”永远在现象背后找本质”的不归路——而这条路,正是科学的分化之路。
你:这落到我键盘上太直接了。我写系统,天然就在做这个区分。具体的 Order#1001、Order#1002 是”存在者”(实例);我定义的 class Order、它的字段和不变式,是”存在”(订单之所以为订单的本质)。我半夜被叫醒查 bug,找的从来不是某个具体订单,而是”Order 这个本质结构哪里破了”——我已经在用本体论思维了,只是没名字叫它。
墨叔:(笑) 你这句,比教科书到位。我补一个极容易被跳过、却是全章枢纽的区分:being 和 beings 中文只差一个字,但在希腊人那里是”动词”和”名词”的天壤之别。beings 是名词性的、一个个具体的东西;being 是”是”这个动作本身——一棵树”是”树,那个”是”不是树的一部分,而是让树成其为树的底层活动。希腊人突然把”是”从句子里抠出来,当成独立的研究对象,这是人类思想史上最诡异也最伟大的一次抽象。
你:这我有点接不住,你给个工程翻译。
墨叔:对应到工程:你平时关心 Order 实例(beings),但当你追问”Order 到底’是’什么(它的本质结构、不变式)“时,你就在抠那个 being。类型论里有个更锋利的对应:命题即类型(Curry-Howard 同构)——你写的每个类型,都是对”某物之所是”的形式断言。所以”being 的学问”翻译成代码,就是”类型论的学问”。你若觉得本体论玄,就把它读作”类型论的前世”——二者是同一件事在不同时代的显形:用形式去规定”什么是”。
你先答:
墨叔:先停一下。你试着答:既然”本质”可能是希腊人的信念而非终极真理,那你还该认真建模吗?先想三十秒。
你:(试着答) 我觉得该建模,但得换心态——把建模从”发现客观真理”改成”在当前结构下做最优约定”。本质是不是世界终极真相,哲学上可辩;但作为工程工具,“假设本质存在并去挖它”极其有用,它让系统可推演、可扩展。所以照建模不误,只是别迷信:我的 User 模型不是”发现了用户的本质”,而是”我和团队此刻对用户的约定”,它会随业务演化。
我的参考答案(供你对照):该认真建模,但要换心态:把建模从”发现客观真理”改成”在当前结构下做最优约定”。本质是不是世界终极真相,哲学上可辩;但作为工程工具,“假设本质存在并去挖它”极其有用——它让你系统可推演、可扩展、可复用。所以你照建模不误,只是别迷信:你的 User 模型不是”发现了用户的本质”,而是”你和团队此刻对用户的约定”,它会随业务演化(加字段、拆服务)。这种心态让你两全:既享受本体论红利(强建模),又避开它的坑(把模型当永恒真理导致僵化)。对应动作:模型版本化、留兼容层、定期重构本质定义。
墨叔:咱再把这层推到中西对照,让本章和前几章闭合。中国古代思维几乎没有”being 的学问”这一支——老子讲”道”,但道是”运行总规律”,不是”存在本身”;孔子讲”仁”,但仁是”人间应当”,不是”本质之所是”。中文里”是”长期只是判断词,没被抽象成独立研究对象。所以中国思想天然擅长说现象、说应当、说关系,却没发展出”追问存在本身”的本体论冲动——这恰好解释了为什么中国没自发长出”给世界建本质模型”的科学范式。
你:所以我能毫无障碍地建模、写类型,是因为我借用了西方这条 being 的脉络;而我在”关系/整体”上的直觉,来自另一条中国脉络。两条都是我的。
墨叔:(笑) 你总结得比我顺。古希腊人做的,是把你这个”本能”提升成一门自觉的学问,并坚称:本质(存在)比现象(存在者)更真、更值得研究。这个判断,是整个西方科学与你建模活动的共同地基。
你:那第一个把本质焊死的人是谁?
墨叔:巴门尼德。公元前五世纪,本体论真正的破题人。他给出一个让常识爆炸的结论:真正的”存在”是唯一的、不动的、不可分割的、永恒的;我们感官看到的万千变化、生灭、差异,全是假象(“意见”),不是真理(“存在”)。
你:我马上想反驳:我明明看见树长叶、叶落、火烧成灰,怎么会是假象?
墨叔:巴门尼德的论证极其”逻辑”:他说”非存在”不可能存在——你一旦思想一个”不存在的东西”,它就在你思想里”存在”了。既然只有”存在”能存在,而”存在”不可能从”非存在”来(那需要非存在先存在,矛盾),所以”存在”没有生成、没有毁灭、没有变化。因此你看到的”变化”,是感官的欺骗;真实的只有那静止的、完备的”一”。
你:这论证今天看很诡辩啊。
墨叔:是诡辩,但王东岳要你看见它的革命性:它第一次用”逻辑”而非”感官”裁决真理。在巴门尼德之前,人靠眼睛定真假;从他开始,人靠”推理是否自洽”定真假。这一步,是理性对感官的夺权,也是科学方法的核心基因——科学从来不盲信观测,它要求观测符合理论推导,并在推导冲突时宁可怀疑观测。巴门尼德”存在不变”物理上错,但他立的”法”——真理由逻辑保证、不由感官保证——活下来了,成了西方精密逻辑的源头。
你:这翻译到我工位上太狠了:线上监控显示一切正常,但我的形式化模型说”在时钟漂移 δ 下互斥会被破坏”——这时该信哪个?巴门尼德会斩钉截铁:信逻辑推导,别信”现在没出事”的现象。绝大多数重大事故,都是团队”信了现象、不信逻辑”的尸体。
墨叔:(拍桌) 你这下到位了。我把它收束成一条工程纪律,叫”现象不证明正确,只证明尚未出错”。具体落法:任何核心不变量,都必须写成可形式化校验的断言(类型、不变式、属性测试、TLA+ 规范),而不是靠”线上观察正常”背书。你做 code review,别接受”我测过没问题”这种以现象为凭证的论断,要追问”你的逻辑在结构 X 下必然没问题吗,证据在哪”。注意:这不是说现象没用——现象用于”发现反例”(证伪),但绝不等于”证明正确”。巴门尼德若管 CI,他会写:测试只能证伪,类型才能证明;绿的是没证伪,不是已证明。
你:这条纪律我明天就贴工位上。
墨叔:接着走。柏拉图把巴门尼德的”存在”具体化成了”理念论”,这是本体论最著名、也最影响深远的版本。柏拉图说:我们感官碰到的这个世界(具体的桌子、具体的人、具体的圆),都是流变的、不完美的”影子”;在它”之上”,存在一个理念世界——“桌子的理念""人的理念""圆的理念”,它们是完美的、永恒的、唯一的本质。具体的桌子之所以是桌子,是因为它”分有”了桌子的理念。
你:这和我写 interface 简直同构。我写 interface Shape { area(): number },这个接口不对应任何具体图形,它是对”形状之所以为形状”的本质规定——这就是我的”理念层”。具体的 Circle、Square 是实现,是”分有”该理念的”现象/影子”。更妙的是:我能先定义 Shape(理念),再用它推导”所有形状都有面积”,不依赖任何具体图形,纯靠理念层推理。这简直是柏拉图”理念先于现象、且可被理性把握”的工程复刻。
墨叔:(笑) 你这个类比,教科书都不敢这么写。你若哪天觉得”抽象/接口”是天经地义,记住:这是柏拉图在公元前四世纪替你下的注。科学干的就是”找理念层”——牛顿找的不是某颗具体的苹果,而是”引力”这个理念;门捷列夫找的不是某块具体的石头,而是”元素周期”这个理念。没有柏拉图的理念论,这套信念根本起不来。
你:那亚里士多德把老师拉回地面那一段呢?
墨叔:柏拉图的理念论有个尴尬:理念世界和现象世界”两层分离”,二者怎么连通?“分有”到底怎么发生?亚里士多德(柏拉图的学生)觉得老师走太远,于是把本体论”拉回地面”,提出”实体(ousia)“说。核心:个别的具体事物(这匹马、这个人)才是最根本的”存在”,它不依赖别的东西;而”属性""关系”都依附于实体。本质不是另一个世界的理念,而是事物内部的”形式”。
你:形式与质料?
墨叔:对。一个东西 = 质料(物质)+ 形式(本质结构)。青铜(质料)+ 雕像的型(形式)= 雕像。形式是实体的”是什么”,是本质。还有著名的”四因说”:事物成其所是,有四种原因——质料因(用什么造)、形式因(长啥样/本质)、动力因(谁造的)、目的因(为了啥)。这套框架,是西方”分析一个事物”的原型方法论。
你:这四因翻译到工程太好用了。我分析一个模块,会问”它用什么实现(依赖/质料)、它是什么结构(接口/形式)、谁触发它(调用方/动力)、它服务什么目的(业务价值/目的)“。这不就是架构评审的四个标准问题吗?亚里士多德在两千年前,已经给我写好架构分析的模板了。
墨叔:(点头) 绝大多数架构文档只写前两者(依赖+接口),漏掉后两者,于是模块”能动但没人说得清为何存在、被谁驱动”,一旦业务变就成孤儿。亚里士多德的狠处是:四因缺一不可,缺目的因的模块必在技术债里腐烂,缺动力因的模块必成死代码。你下次评审一个设计,就按这四因逐条问——答不上目的因的,砍;答不上动力因的,合并。这套两千年前的本体论框架,比很多现代架构评估清单都锋利。
你:你给我个具体例子,我好照着用。
墨叔:比如你做个”优惠券核销服务”。质料因:它依赖用户服务、订单服务、账务服务、Redis。形式因:它的接口是 redeem(couponId, orderId) -> Result,不变式是”一张券只能核销一次、且核销时订单必须已支付”。动力因:它由支付成功事件触发,或由用户手动点击触发。目的因:它的业务价值是”在营销活动中控制成本、防止超发”——这是它存在的唯一理由。很多团队能写清前三个,写不清第四个。结果呢?当营销说不发券了,没人敢砍这个服务,因为它”还在跑、还在被调用”,但它服务的目的已经死了。它在技术债里慢慢腐烂,直到某天一次不明所以的故障追过来,才发现这是个没有目的因的僵尸模块。
你:这例子扎心,我们线上真有几个这种僵尸服务。我回头按四因逐个过一遍。
墨叔:(笑) 值了。再说回前面那个 being/beings 的枢纽——你刚才接得有点快,我再钉一下,免得你以为”类型论”只是个噱头。希腊人把”是”从句子里抠出来当成研究对象,这件事在计算机里有个精确对应:命题即类型(Curry-Howard 同构)。在带依赖类型的语言里,你写一个类型签名,本质上是在做一个”存在断言”——你声明”存在一个满足如此这般结构的东西”。你写的每个类型,都是对”某物之所是”的形式断言。所以当你写 type Order = { id: ID; items: Item[]; status: Status },你不是在”描述”一个订单,你是在用形式语言”规定”订单之所是。这恰恰就是 being 的学问——用形式去规定”什么是”。
你:所以 “being 的学问”翻译成代码,就是”类型论的学问”。我之前以为类型只是编译器约束,没想到它是本体论在现代的显形。
墨叔:对,而且这是同一件事在不同时代的显形。希腊人用自然语言追问”存在是什么”,被自然语言的多义坑了;现代人用形式语言(类型系统)追问同样的问题,反而更精确。你今天能毫无障碍地做”本质优先”的建模,是因为你站在了希腊人 + 形式逻辑两层肩膀上。看清这点,你就不会再把建模当成纯技术技巧——它是你文化基因里最深的哲学冲动在键盘上的显形。
你:我顺便把巴门尼德那条工程纪律再问细一点:你说”测试只能证伪,类型才能证明”,能不能给个具体场景?
墨叔:比如你写个并发计数器。测过一百次没 race,你只能说”在这百次输入分布下没观察到错误”——这是证伪的缺失,不是证明。但如果你用 Rust 的原子类型 + 一个能证明”在任意交错调度下计数值等于各线程增量之和”的类型约束,那才是在逻辑层”证明”了。巴门尼德若管你的 CI,他会把”我测过没问题”这类以现象为凭证的论断全打回,只认”你的逻辑在结构 X 下必然没问题吗,证据在哪”。绝大多数团队以为自己重视质量,其实全员巴门尼德反向——他们信现象(监控绿、测试过)胜过信逻辑(推导正确),于是每次”绿着绿着就炸了”。
你:这条我记死了:绿的是没证伪,不是已证明。
你先答:
墨叔:又停一下。巴门尼德说”变化是假象”,这明显和物理事实相反,为什么王东岳还把它当成本体论的重大突破?你先答。
你:(试着答) 因为要看他立的”方法”而非得的”结论”。他的结论(存在不变)物理上错了,但他立的法是”真理由逻辑自洽保证,不由感官保证”——这是理性对感官的夺权,是科学方法的核心基因。后来科学能发展,正因为它坚持”不相信观测、只信推导与可证伪”。所以王东岳看重他,不是认可”世界不变”,而是认可”逻辑裁决真理”这一刀。结论可错,方法长青。
我的参考答案(供你对照):因为评判巴门尼德,要看他立下的”方法”而非他得的”结论”。他的结论(存在不变)物理上错了,但他立的法是”真理由逻辑自洽保证,不由感官保证”——这是理性对感官的夺权,是科学方法的核心基因。在巴门尼德之前,人靠眼睛定真假;从他起,人靠推理定真假。后来科学能发展,正因为它坚持”不相信观测、只信推导与可证伪”。所以王东岳看重他,不是认可”世界不变”,而是认可”逻辑裁决真理”这一刀——这把刀切出的错误结论很快被修正,但刀本身(理性高于感官)成了西方精密逻辑的源头。工程师对应:你信”类型证明”而非”现在没报错”,就是这把刀的现代形态。结论可错,方法长青。
墨叔:好,咱进全章落点——本体论为什么”孕育了科学的分化”,以及它的代价。本体论干了一件大事:它把世界劈成”现象”和”本质”两层,并判定本质更真。这个二分,是科学能诞生的关键,但也是西方思维一切盲区的总源头。
你:红利面我懂:因为本质更真,研究者可以理直气壮地忽略现象、追问本质——问”生命本质是什么”而非”这棵树具体怎样”。这种”越过现象直取本质”的冲动,催生了物理、化学、生物。我写代码时的”建模”,也是这把刀:忽略千变万化的具体订单,抽出 Order 的本质结构。
墨叔:对。但代价面(遮蔽效应)才是王东岳要你盯紧的:当你坚信”本质更真、现象次要”,你会系统性地轻视那些”只在现象层、无法被本质化”的东西——质感、体验、意义、关系、情境。西方科学极其擅长”本质”,却在”整体体验""价值""关系”上长期贫乏,这恰恰是被本体论的刀削掉的部分。任何文化都自洽封闭并遮蔽,本体论这把刀让你切出了科学,也让你看不见切不到的东西。
你:这我太痛了——需求评审。产品同学描述新功能,常是现象层的:“用户希望能看到顺滑的过渡、点击有反馈、整体感觉高级”。我本能地想翻成本体论:“加个字段、加个接口、状态机加个态”。但翻完一上线,产品说”不对,感觉不是那样”——因为我用本质(结构)建模了现象(体验),而体验恰恰是本质化不了的。
墨叔:(拍腿) 你这个现场案例,比讲义到位十倍。很多团队在”产品 vs 研发”的撕扯,本质是现象层与本质层的本体论冲突,而非人际矛盾。你看清了,就会建一座桥(原型、可视化、用户研究)让两层互译,而不是互相鄙视。王东岳讲”遮蔽”,在工程管理上的最小翻译就是:别让本质层独吞话语权,给现象层留座位。
你:那我是不是该在建模前先问一句”这块的本质能稳定抽象吗”?能就上本体论,不能(比如 UI 交互、运营策略)就别强抽象?
墨叔:正是。再补一个你写代码时天天撞见的本体论陷阱:把”当前模型”当成”客观本质”。你定义 User { name, email },三个月后业务要”一个用户多个邮箱""邮箱可换绑”,你才发现当初的”本质”只是当时结构的便捷约定。本体论若被误用成”我挖到了真理”,就会制造僵化的”真理崇拜”——谁改模型谁就是”动核心”,技术债越积越深。破解是:始终把模型当”约定”而非”真理”,用版本化、兼容层、演进式设计容纳本质的流变。
你:这跟前面你先答里说的”模型是约定不是真理”呼应上了。我顺手再补一句工程对照:我的 API 一升级前端崩了,因为我对 User 的”本质定义”变了(加了必填字段)。这暴露一个残酷真相——我以为本质客观永恒,其实它是我此刻的约定。
墨叔:(笑) 巴门尼德说本质永恒,工程里本质会演化——这个张力,正是你需要用”广义逻辑反思”持续调和的地方:用本体论建结构,但别被本体论锁死结构。咱再把视野拉回你的键盘,收个尾。你以为”本体论”是博物馆里的词,和你无关。错。王东岳若看你的代码,会说:你写的每一个类型定义、每一个接口、每一个 schema,都是一次微型本体论宣言——你在断言”这个世界里,什么是真正的存在,什么只是它的表象”。
你:展开说说?
墨叔:具体看:你定义 User 类,就是在做”实体主义本体论”——你断言”用户”是独立实体,有本质属性。你定义 interface/trait,就是在做”柏拉图理念论”——你断言存在一个高于实例的本质规定,实现必须分有它。你写 type Order = { id; items; status },就是在做”亚里士多德形式说”——你用”形式”(结构)规定订单之所是。你用 ORM 把对象映射到表,就是在做”形式/质料”的分离与合一。你坚持”类型即文档、编译即证明”,就是在践行巴门尼德的”真理在逻辑(形式)里,不在感官(运行现象)里”。
你:所以我不只是”西方哲学的子孙”,我就是”西方本体论在 21 世纪的活体载体”。这认知让我既谦卑又警醒。
墨叔:(点头) 谦卑,是因为你每天依赖的思维方式,是希腊人用几百年争出来的;警醒,是因为你既然在用本体论,就该知道它的盲区——别用”本质优先”一刀切掉那些本质化不了的东西(体验、关系、意义)。
你:我插一个我天天撞的坑——ORM 的”对象-关系阻抗失配”。我用对象(本质结构)去映射关系表(另一种本质结构),常撞车。现在懂了:面向对象本体论(一切皆实体、有身份)和关系本体论(一切皆元组、靠值相等)是两套不同的”存在观”,这个让我头疼的 bug 源,本质是两种古希腊本体论在数据库里打架。
墨叔:(笑) 你这个降噪到位:看懂这点,你就不会骂 ORM 烂,而会说”我在用两套存在论建模同一现实,冲突难免”。还有个更隐蔽的:事件溯源(Event Sourcing)对本体论的反叛。传统 CRUD 是”实体优先”(亚里士多德式),事件溯源却是”事实/现象优先”——你不直接存”用户现在的本质状态”,而存”发生过的所有事件(现象流)“,状态是派生的。它在审计、回溯强的领域(金融账本、协作编辑)极对,因为那里”发生过什么”(现象)比”现在是什么”(本质状态)更真、更不可丢失。但它不是普适真理:在”当前状态就是一切”的领域(缓存、读数),硬上事件溯源是过度工程。
你:所以事件溯源不是”更正确”,是”另一种本体论立场”,适用于另一类结构。这又回到王东岳那句:别被一种本体论绑死,不同生存结构匹配不同的存在观。
墨叔:老哥,咱别光聊哲学史,我得把你天天干的”领域建模”用本章框架重译一遍,你会发现自己早就是个本体论者。先说 DDD 里的”实体”与”值对象”。
你:这个我熟。Order 是实体,有身份、有生命周期;Money 是值对象,无身份、靠属性相等。这区分本身就是本体论判断?
墨叔:正是。你认为”订单”是独立实体(亚里士多德式第一性存在),“钱”只是属性的组合(依附于实体)。你做这个判断时,没人在语法上逼你,是你对”什么是真正的存在”的直觉在起作用——而这直觉,正是希腊本体论训练出来的文化默认。你若来自纯实用训练,可能根本不想区分,全用 map 糊弄;能区分,是因为本体论思维已在你底色里。
你:那”抽象基类 vs 接口”这老生常谈的架,底下也是本体论?
墨叔:(笑) 表面是技术,底下是”本质怎么落地”的本体论立场。当你写 abstract class Shape 还是 interface Shape,你在选”本质住哪”:基类暗示”圆是形状的一种具体化(质料+形式)“,接口暗示”圆分有形状的理念”。两种都行,但背后是柏拉图 vs 亚里士多德两种本体论的细微分歧。你平时跟人吵”该用继承还是组合”,以为在争技术,其实在争”本质住天上还是住事物里”。
你:这下我吵架都吵出哲学味了。还有更上层的东西吗?
墨叔:有,而且最锋利——元模型(Meta-model),也就是”对本体论的本体论”。当你写框架、设计 DSL、做低代码平台时,常要定义”能定义模型的模型”。比如用 JSON Schema 描述你的数据模型,再用一个 schema 校验器去校验 schema 本身。这一步,你已经在做”本体论的本体论”(meta-ontology):你在反思”我用来规定存在的那个形式,本身的存在结构是什么”。
你:这听着像自指,会不会绕晕?
墨叔:它正是王东岳”广义逻辑反思”在工程里的至高层级——不仅用本体论建模,还建模”建模本身”。希腊人止步于”存在是什么”,你作为现代工程师,被迫走到”我对存在的规定,其规定结构又是什么”。这不是炫技,是复杂系统必然逼出的自指能力:当你的模型要被无数人复用、要演化、要互操作,你必须能形式化”模型之模型”,否则复用即混乱。你若做过低代码或中台,一定被”配置项爆炸、语义漂移”折磨过——根因就是没建元模型,让”规定存在的规则”本身处于混沌。古希腊本体论给你第一层刀,元模型给你第二层刀:不仅切世界,还切刀本身。
你:这”两层刀”的比方我记住了。第一层是 Order 这种实体建模,第二层是”能描述 Order 的那种 schema 的 schema”。
墨叔:(点头) 把这几个场景收个尾:你以为自己在”写业务、搞架构、做平台”,王东岳会告诉你——你每一天都在用希腊人发明的本体论姿态(本质优先、形式把握、逻辑裁决)处理现实,只不过你把它翻译成了类型、接口、schema、元模型。看清这层,你就不会再把”抽象/建模”当成纯技术技巧,而会知道它是你文化基因里最深的哲学冲动在键盘上的显形。也正因为看清,你才能在它遮蔽你时(现象层、关系层、体验层)主动补刀——刀是你的,但别让刀替你决定世界长什么样。
你:那我天天被”schema 演化导致前端崩”折磨,其实也暴露了:我当时代入的”本质”只是当前约定。巴门尼德说本质永恒,工程里本质是随业务演化的。
墨叔:对,这残酷真相正好调和:别把你的模型当”发现了真理”,要当”当前结构下的最优约定”,并为它的演化留接口(版本化、兼容层)。这是把本体论的”本质信仰”和工程的不确定性调和起来。
墨叔:对。最后给你一句能带走的话:本体论给你的,不是”世界真的有本质”这个定论,而是”一种极其强大的建模姿态”——假设本质存在、去挖它、用形式把握它。这套姿态让你造出了科学和系统;但它也要求你时刻记得:你挖到的”本质”,是你用本体论这把刀切出来的,不是世界自动摊开的全貌。刀切出了结构,也切掉了结构之外的。意识到刀的存在,你才不会被刀的形状绑死——这,就是广义逻辑反思在建模这件事上的终点。
最后一道:
墨叔:把全章收个口,你试着答:事件溯源”反本体论”,那它是不是更”正确”?
你:(试着答) 不是更正确,是另一种本体论立场,适用于另一类结构。传统 OOP/CRUD 是亚里士多德式”实体优先”,你直接存实体当前本质状态,状态是第一手真实。事件溯源是”现象/事实优先”,你存发生过的事件流,状态是派生。它在审计、回溯、时序强的领域极对,因为那里”发生过什么”比”现在是什么”更真、更不可丢失。但它不是普适真理:在缓存、读数这类”当前状态就是一切”的领域,硬上事件溯源是过度工程。所以事件溯源的价值,是提醒你”实体优先”只是众多本体论立场之一,不是天条。
我的参考答案(供你对照):不是”更正确”,是”另一种本体论立场”,适用于另一类结构。传统 OOP/CRUD 是亚里士多德式”实体优先”——你直接存实体当前本质状态,状态是第一手真实。事件溯源是”现象/事实优先”——你存发生过的事件流,状态是派生。它在”审计、回溯、时序”强的领域(金融账本、协作编辑)极对,因为那里”发生过什么”(现象)比”现在是什么”(本质状态)更真、更不可丢失。但它不是普适真理:在”当前状态就是一切”的领域(如缓存、读数),硬上事件溯源是过度工程。所以事件溯源的价值,是提醒你”实体优先”只是众多本体论立场之一,不是天条。王东岳的启示:别把希腊本体鈘当唯一真理,不同生存结构匹配不同的”存在观”。你能按结构选 OOP 还是事件溯源,就是不被单一本体论绑死的体现。
你:我还有个收获:原来我天天嫌弃的”产品说不清需求”,本质上是个本体论冲突——他在现象层说话,我在本质层建模,俩人说的不是一层的东西。
墨叔:(笑) 你能看到这一层,以后跟产品撕的时候就不会只骂”需求不清”了,你会建一座桥让两层互译。这就是哲学给你的降噪。
你:这章我记牢了,因为中间被你问住过几回——尤其是”你凭什么敢说抓住了订单的本质”这句,我现在心里有根刺了。
墨叔:(笑) 那说明对话式对你有用。你明天打开项目,挑一个核心模型(比如 Order、User),写下它的”形式定义”和”不变式”——你写下的每一行,都是你个人的本体论。写完后,再问自己一句:这个”本质”,是我此刻的约定,还是世界摊开的真理?这一个问题,比读十篇建模教程都管用,因为它把你从”被动用本体论”推到了”主动反思本体论”。
你:……这问题我怕是想清楚之后,反而不敢随便改模型,又不敢死守模型了。
墨叔:(眨眨眼) 这种”既敢建、又敢改”的别扭,才是成熟工程师对建模该有的自觉。哲学本来就是被问出来的,不是被讲完的。下一章我们上到王东岳”五层思维序列”的最高层——精密逻辑,看它如何成为哲学与科学共享的终极工具。