仓库源文

.. Kenneth Lee 版权所有 2021

:Authors: Kenneth Lee :Version: 1.2 :Date: 2021-08-21 :Status: Release

建模


正文

最近在看一本明代的笔记,作者是叶子奇(叶世杰),据说一度和宋濂,刘基齐名。所以 ,也算是那个时代的精英人物吧。

下面这一段摘自他的《草木子-管窥篇》:::

天始惟一气尔,《庄子》所谓“溟涬”是也。计其所先,莫先于水。水中滓浊,历岁既久 ,积而成土。水土震荡,渐加凝聚,水落石出,遂成山川。故山形有波浪之势焉。于是 土之刚者成石而金生焉,土之柔者生木而火生焉。五行既具,乃生万物,万物化生而变 化无穷焉。

后面还有讲南北极,赤道黄道的关系等知识的。也有正确的,也有纯粹胡说八道的。

比如,他有这种比较接近现实的:::

南北二级,所以定子午之位。历家因二级而立赤道,所以定卯酉之位。北极,瓜之蒂也 ;南极,瓜之攒花处也;赤道,瓜之腰围也;指南针,所以通二级之气也。

也有完全放飞自我的:::

天如劲风旋转,局大块于中。吾恐日月星辰之上,则愈高、愈清、愈劲、愈光明而无穷 矣。或人见天裂处,见其霞光闪烁,于此足以知之矣。

甚至:::

世间小虫,如一丝半粟之细,以至目不可辩,而手足头目,动静食息,无不皆具。 此可以见天命之流行,无一之或遗,无微之不入。

或者:::

秦苻坚出师,武库刀枪自鸣;辽主天祚亲征阿骨打,刀枪皆放光;宋童贯出师,约夹攻 大辽,无故忽失二认旗,其后兵皆败衄。

还有把多个信源一起摆上来的:::

金者,石中之精液;水出石中,故曰“金生水”也。

《素问.枢式》曰:“谁子西而东流也。西,金位也,故曰‘金生水’。”亦一说也。

还有顺势带盐的:::

天下万物,有色、声、香、味,使无目、耳、鼻、口以收摄之,则天地之工,或几于熄 矣。故色之为目,声之为耳,香之为鼻,味之为口,次天地之所以交也。人则得其正者 也,物或偏焉,此其所以灵于万物也。如蝇攻臭秽,鸱鸦嗜鼠,糜鹿食荐,蝍蛆甘带, 数者孰知天下之正味哉!至于义理,则惟心可以通之。人则可以贯全体,物或局于一偏 也。

物之偏者,如蜂蚁君臣,雎鸠有别,豺獭报本是也。然人禀其气之浊且塞者,则亦有偏 者,惟圣贤则全。

我看到这些描述,感觉上很亲切。因为他这个行为,和我平时做架构建模的手法是一样的 。当我们开始做一个架构设计,手上有很多的信息,有真的,有假的,有人说“用GPU肯定 能搞定这里的机器训练”,有人说“在Linux用户态写这个程序肯定不用开源”,有人说“选 C++是我们这个领域的主流方向”……你说他们说的对不对?你去调查吗?你选择调查C++已经 被人带过去了,打算选C++了,否则你干嘛不去调查C#,Python,甚至haskell和ocaml?而 且调查你能知道要调查多深?学三年C++算懂吗?这种东西是没有尽头的。

所以,就好像这位叶世杰一样,我们也会不管三七二十一,先把手上的所有有效信息,组 织起来,变成一个完整的逻辑链,因为这样我们才能判断出:针对我们要解决的问题,我 们可以选择那个部分去进行重新校验和细化。

他前面这个描述,看起来基于当时他掌握的信息来说,都挺有道理的:我们平时看到最多 的不是各种看得见,看不见的“气”吗(比如风,比如水蒸汽,比如山上看到的云气)?我 们不是看到水蒸汽遇冷变成水吗?水里的泥粉不是慢慢沉淀变成土吗?土里不是长出树或 者露出石头吗?有些石头里面不是有铁矿吗?不是还有其他人说水生土,土生木,木生火 吗?……

把这些逻辑一组合——我们的世界就是这样的。

你不建立这个模型,你都不知道怎么开始去研究这个世界,这和亚里士多德总结太阳围着 地球转,重的东西先落地没有多少区别。你先得建立一个“模型”,然后用它去不断比较现 实,你才能获得新的“知识”,因为人脑处理信息啊,除了得到“在集合中”和“不在集合中” 这种结论,就没有别的能力了。

你看个Linux Kernel的代码,你看到他prempt_disable(),看到他trace_hardirqs_off() ,看到它调用paravirt_clobber(),你知道它啥意思?没有一个统领逻辑,你没法看这个 代码。

你看某些标准,人家这样定义:::

    When XXXX.YYYY == 0:

    * The XXXX supports only a single Security state, the Non-secure state.
      YYYY* registers are RAZ/WI to all accesses.
    * The XXXX can only generate Non-secure (NS == 1) transactions to the
      memory system.
    * Support for stage 1 translation is OPTIONAL.

你能看出这个设计解决了什么问题吗?这都是散的点,你没有条件去判断这个点是可以变 的还是不能变的,或者说它控制了多大的不能变的范围。

所以,无论去做设计还是去分析一个代码的逻辑,我们都是先从一个“假设”开始建模,我 们并不认为这些假设都是对的,但这个东西本身必须存在。

很多工程师不理解这一点,他们更注重“对”,他们很强调:“难道现在这个代码里, prempt_disable不就是对全局变量进行掩码覆盖吗?”是,在这个场景,这确实是这样的, 但架构是要改造世界,现在是这样,未来是这样吗?这就好比对于给你家装修的架构师, 他觉得门口可以放一个玄关,你去跟他掰:“这里不是有堵墙吗?旁边不是有家具吗?” ——废话,对架构师来说,非承重墙可以打掉,家具可以搬走的啊。

但反过来看这个问题,今天还有不少人相信那个金木水火土那一套。这另一方面也告诉我 们模型的另一面:模型就是模型,它不是真理,我们建个模型,是为了进行现实对比,不 是为了建立一个不能动的东西。你拿这个东西说什么“你算什么东西,怎么和老祖宗五千年 的智慧相比?”,“XXX是建立我们整个软件技术的奠基人,是我们YYY架构的元老,你算什 么,也敢批评他的架构?”……这完全是“九唔搭八”了,只有神棍采用这种手法忽悠人的。

叶子奇是个正经的学问人,他建一个模型出来,每句话都说得死死的。对就对了,错就错 了,你可以看得清楚。你今天可以耻笑他不懂,但他不是神棍,他的工作就不是为了忽悠 你,而是完成他组织信息这个工作。所以一个好的架构师也不是建出一个没有错的模型来 ,而是正确组织手上的信息,帮助整个团队逐步发现真正的信息。

而神棍只会摇头晃脑,来几句天机不可泄漏,道可道非常道,算人不算己……让你驳不得, 循不了,看到好处就跳出来自称算对了。这些人就只能做寄生虫。工程师如果照顾自己的 面子,也会走上这样的神棍路子的。

补充1

这个笔记解开了我很多对儒家文化表述的理解,我把这个理解放在这里。

儒家这群人认为:是背后先有一个规律(先天),然后才在这个规律的影响下,生成了今 天这个世界(后天),所以他们认为对现实规律进行研究(格物),就都能靠向那个唯一 的规律。所以,搞懂一个东西,就能搞懂另一个东西,明白了读书的道理,就也能知道治 病的道理,也能知道打仗的道理。所以他们说的格物致知,和我们今天说唯物主义其实是 不一样的。他们致知以后,就觉得可以知道任何东西,如果某些东西和整个知不一样,就 会被打为“偏”和“妖”。

所以,我们认为鸟兽虫鱼长成那个样子,是优胜劣汰,是适应环境,他们是认为那些东西 偏了,他们认为“人可以贯全体,物则局于一偏也。”,认为“天地得其位,则万物莫不循其 常也。一或有失,则为灾,为妖,为乱矣”。所以其实他们看起来务实,世俗,但其实他们 是不唯物的。他们希望控制这个世界,这也和《道德经》的观点是不同的。《道德经》的 战略是世界是不可控制的,我们是根据世界的变化,找一个适合自己的道路,而儒家的战 略是拼命维系一个内在的结构,不让它变化。所以儒家就特别“显”,但一旦遇到外界的变 化,它落后了,它就会一根筋走下去,不死不休。