仓库源文

.. Kenneth Lee 版权所有 2020

:Authors: Kenneth Lee :Version: 1.0

架构师思维和哲学


本文回答一位读者私信问我的这个问题:

    | 是否可以理解名与道就是逻辑学中的定义、性质和本质呢。
    | 每个事物发展运行背后都有道的存在,而这些存在又包含
    | 在这个世界的大道里,或者说大道是包含着无限变量的变量。
    | 而老子想表达这个本真,让人们认清道,而不是陷于名之名和道之道。
    |  我感到自从人类出现,人类便和自然密不可分,宇宙万物包
    | 括人类组成了这个大千世界,而大道隐于其中。天地不仁,以万物为刍狗。
    | 人有智慧而无明,无明而名欲,因欲而名利,因利而名争,因争而后名德,
    | 德不配位而名法等。
    | 但是说白了人的物质需求是很少的资源就可以满足的,
    | 但是人的欲望是无限的,因为欲所以需求会溢出,
    | 但是一定的生产方式产生的资源是有限的,而资源分配因为各种原因也
    | 不可能是平均的,所以人们越是追逐物质的享受,就越偏离了道,
    | 就越陷入名为利益的沼泽,越发忽略了人类群体精神上的需求,
    | 忽略自身思想的改变,所以社会变革总是晚于技术变革,
    | 越是依赖科学技术带来方便与快捷,越是忽略了人自身的内求与解放,
    | 而事情证明人类越来越不适应自己创造的环境,科学只是人类通往大道的工具,
    | 而真正的道在人类这个群体的心灵之中。现代社会的人是名了的异化,
    | 技术的变革带来的是只是欲望的释放,社会充满了焦虑不安和精神空虚,
    | 只有回归人性本真,完成自我救赎与解放,完成人类社会的整体变革,
    | 才能做到人与自然和谐相处,达到先人所说的天人合一的境界。
    | 佛祖说众生皆苦,动物无知无智只用受生存之苦,人却受七情六欲支配之苦,
    | 智慧开明之苦,知道的越多却越知道自身的无知越觉得恐惧。
    | 亦或佛祖名善名苦,道本就如此,只是自作多情。
    | 老子思想超前,指出了道,道不可名,名了也就不是道了,终极的道不可知。
    | 我们只能立足当下,做好自己,改变自己的思维方式,认清自己想要什么,
    | 需要什么,若是每个人都能如此,大道自然会显现,或是佛家所名之极乐,
    | 基督所名之彼岸?

要回答这个问题,我希望先给各位科普一下构架师的思维方式。我说说我的工作日常,我 是我们一个产品的首席软件架构师,也是我们一个内部标准(未来会开放)的首席编辑, 我的工作日常是:

看各种标准和构架定义文献看一线性能分析报告看市场调研部门的市场调研报告试用各种 解决方案,并相应分析相关代码,形成基本分析结论供下次决策自己上机验证构想的方案 给新的主意写代码的第一个版本看别人的标准提案,决定收入还是拒绝到我负责的标准评 审别人的构架设计和设计文档

基本上,我的工作就在这些各个主题上连轴转。当然架构师是要写架构设计的,但一份架 构设计下来,只是很少的工作,更多的工作是让这个架构策略落地,所以写架构设计反而 不是工作日常。我每天评审的报告包括芯片的接口,软件的设计,解决方案的构想……还有 直接的代码,标准定义时各种非常细致的用词,比如This statement remains true until the referred platform is observed by the other agents as a PIXXT entity where PIXXT is......这些不同领域的人说话的时候,用词每个的意思都不一样。比如硬件的人 说“线程”,他说的是一个虚拟的CPU,软件的人说线程,他说的是一个线性调度单位,而架 构师说的一个线程,他说的是一个独立的计算序列,一个可以增加硬件算力单元强化的软 件单元。所以我的脑子里基本上是没有什么“成见”的。每个词语在我脑子里面就没有固定 的意思。

而且我的决策条件通常都是受限的。投资机会一闪即逝,手上的人的水平通常也不能被精 心的选择和培养,所以根本不可能每次都用一个固定或者完美的名称空间去解决问题,这 都是有节奏驱动的。我们要在所有已知条件,未知条件和不清不楚的筹码中猜一个在时间 、空间上都可以展开的最优解。

所以,我并不追求精确,我追求解决问题。我跟你聊天,都是先搞清楚你的名称空间,然 后我才开始上你的逻辑链的,然后尽快优化这个空间,删除多余的逻辑,尽快得到一个选 择。所谓名称空间,就是你假定了什么概念,这些概念和你的其他概念的关系是什么样的 ,概念之间谁和谁有什么关系,谁是谁的子集,谁和谁有交集,一个谁对应几个谁……等等 等等。这些全都是道德经中的“名”,但这些“名”有可能自相矛盾,也有可能没有。但即使 他们没有自相矛盾,也不表示它们是对的,因为现实不一定如此。

我常常说“架构是超越现实的存在”,这句话可以换一个说法,“架构是超越现实的现实”。 你定义一个名称空间,会有一些基本的依赖,基于这个依赖你建出了自恰的名称空间,这 是一个精巧的人造物,这个人造物即使在你的依赖不存在的时候,它本身仍是一个可以自 恰的定义。这个定义你可以说它不存在吗?对架构师来说,不一定的,我给出了一个自恰 的名称空间,如果它的条件不成立,我可以人为让这个条件成立的,我也可以把整个名称 空间本身移去另一个可以提供这样的依赖的环境里面使用的。

一个自恰的名称空间比是否符合现实更有价值,因为一个混沌系统本来就混沌,和你的欲 望无关,但一个自恰的名称空间意味着某种程度的“可控”,“可控”就有可能成为未来实现 某种欲望的基础。

太阳从东方升起西方落下,这个观察是对的,但没有用。但制造一个机械,只要包括一个 转轴,一个光电池,然后巴拉巴拉,就可以提供非常稳定的供电……这个逻辑就有用了,因 为它可以满足我们“供电”的欲望,即使太阳以后变成从南边升起,北边落下,这个逻辑空 间都可以解决一样的问题。

所以,对于架构师,依赖固然重要,但逻辑空间本身就是巨大的收益。你们看到的一个个 所谓的现实,而在架构师眼中,美妙的是那个逻辑空间。它是人造物,它才是人意志的体 现。顺其自然,顺其自然,你认为为什么要顺其自然?顺其自然是为了Take Advantage, 是为了领先自然啊。否则提顺其自然干什么?

我理解的哲学,就是这样一个东西,它不但是Pattern的Pattern,它还是一个意志的生成 物,它是人脑这个“自然之物”独特的生成物。你说它自然不自然呢?——这完全看你怎么定 义。

所以,你们看到的细节,和我看到的细节完全是不同的,以前在一个问题上,有人跟我谈 Linux有没有虚拟内存,非要我承认swap就是虚拟内存。我刚写的这个分析里面

    :doc:`../软件构架设计/多核MMU和ASID管理逻辑`

有工程师也很在乎这个Linux中,ASID到底是每个CPU一个还是全局一个。人们非常关注“终 极真理”是什么,这种问题架构师是都不那么关心的。因为在我们想像的空间中,这些都是 可以用力量去改变的,每个CPU一个ASID还是全局一个ASID,不改变关键的概念空间,这就 是小问题。架构师背后是后数千上万的开发力量的,这种你认为不可逾越的东西,在我们 看来是个可以变化的要素。软件工程师觉得不能变化的指令定义,在我眼中是可以在下次 投片时候就可以修改的……在时间和资源面前,这些叶子节点的逻辑限制,在架构师眼中都 是看不见的,但如果你逻辑本身自相矛盾了,这个事情无论你手上有多少资源,那也是多 余的。——谁都无法违反逻辑本身。这就是架构是超越现实存在这个概念的本质。

从名称空间这个角度,可靠和不可靠,正确和不正确这些概念和大部分人看到的现实的可 靠和不可靠,正确和不正确是不同。你认为的可靠和正确是和现实一致。我认为的可靠是 如果修改这个逻辑,多少其他逻辑会受影响。改变起来调整的逻辑特别多的东西才是可靠 的,调整的逻辑少的东西是不可靠的。你们求持而盈之,摧而锐之,求金玉满堂,在架构 师眼中,这种都是翻转一个逻辑可以改变的东西,这种东西就是德薄。而架构师求的德高 ,是在要翻转很多个逻辑,整个系统都要发生翻天覆地的变化的,你才能颠覆,这种逻辑 才是可靠和可依赖的。

架构师构架这样的一个结构,保证大量的资源加入这个系统的时候,这些资源只会产生正 面作用,而不会被随意颠覆。

所以读者是否能看到?在我们的空间中,我们其实不是很在意真正的现实是什么的?我们 根本不在乎“本质”,“道”是否存在,我们关于的是基于某些假设的“道”引申的条件,我们 可以构架一个怎样的“人造物”。

所以很多人都看不懂道德经,因为你们太在意道德经写出来的“名”了,道德经里面给出的 所有的“名”,都不重要,都是指着月亮的手指。而月亮,你是看不见的。永远都看不见, 因为你的脑子只能用名字来思考,这是人脑本身的属性,是思考本身,没有抽象根本就没 有思考,如果你可以直接看到,或者摸到道,你就不再是人了——别去YY你因此就像“超脑” 那样成了神,你对自己这么在乎,其实你在乎的是你作为人的属性,如果真有某种存在, 你不再用“抽象”这种方式思考,你就不是你了,那你和死了没有区别——这么简单的道理, 都想不明白吗?

我其实没有认真看完过小逻辑(而且我不懂德文,一般我认为哲学这种东西,一旦翻译就 很难保持原来那个意思了),但上面的提问者给我的感觉还是认为在“本质”是存在的,还 认为这个世界上存在“终极正确”。而道德经给我的感觉是:“我根本不知道‘道’是否存在, 讨论这种事情完全没有意义。反正我基于我认为的道构建一个空间,这东西和软件一样, 所构架的依赖是可以被‘代理’掉的”。老子是把这个世界看做是一个游戏空间,不过是用人 脑最基本的能力:我看到什么样的Pattern,得到这么多的信息,然后用脑子去构造一个最 优解。如此而已。道德经和架构师的逻辑空间像浮在水面上的船,船是实在的,船的位置 不是。你尝试把船的某个部件固定在岸上,用坚固的铁索系紧它,风浪一起,要不这个部 件被扯下来,要不是整艘船被你拖翻。这个原理就是这里说的所谓铁锁横江:

    :doc:`../软件构架设计/三个锦囊`

所以,你想太多,想仔细定义,想找到“本质”(提问者意义上的本质),结果就是把你建 好的东西拖翻,然后你就总觉得哪里不对,其实是你认识这个世界的方法就不对。

所以你总觉得其他人不对,总觉得他们欲望太多,总觉得存在什么“天人合一”的境界,都 是你要把船绑在岸上而已。而用我们架构师说话的方法,我们是这样定义的:

  1. 我不认为应该把船绑在岸上

  2. 我也不认为应该不要把船绑在岸上

这个问题“无名”。

你看,这像不像耍嘴皮子?但你去看看各个标准定义的具体描述——我们就是用这种方法一 点点改变世界的。

写到最后,发现好像只是把这个概念重新表达了一遍:

    :doc:`关于道的几个问题讨论`

不过,写都写了,就这么着吧。