docs: consolidate docs into linear readmes

This commit is contained in:
tukuaiai
2026-05-03 20:25:27 +08:00
parent c748e2a337
commit 53f050f341
32 changed files with 9187 additions and 8096 deletions
+5 -8
View File
@@ -14,19 +14,16 @@
```text
philosophy/
├── README.md # 哲学方法论工具箱
── AGENTS.md # 本目录操作规则
├── 思维模型.md # 可复用思维模型索引
├── 组合描述模型.md # 对象、状态、快照、序列、过程、变换、同一/差异与关系
└── 编程之道.md # 编程哲学与工程判断
├── README.md # 线性总文档:思维模型、组合描述模型、编程之道、方法论工具箱
── AGENTS.md # 本目录操作规则
```
## 修改规则
- 新增模型时,优先补到 `思维模型.md`,再决定是否拆成独立文件
- 独立文件必须能被 `README.md``思维模型.md` 索引到
- 新增模型时,优先补到 `README.md` 的对应章节
- 不再新增同级主题 `.md` 文件;如确需拆分,必须同步更新全仓链接和 `metadata/redirects.yml`
- 哲学内容必须落到工程判断或认知工具,不写成纯概念堆叠。
- 重命名文件时,必须同步更新全仓链接和 `metadata/redirects.yml`
- 重命名章节锚点时,必须同步更新全仓链接和 `metadata/redirects.yml`
## 质量要求
+1352 -46
View File
File diff suppressed because it is too large Load Diff
-215
View File
@@ -1,215 +0,0 @@
# 思维模型
> 这里用于沉淀可复用的思维模型。先不固定结构,后续按实际内容自然生长。
## 使用原则
- 一个模型先说清它解决什么问题。
- 能配例子就配例子,避免只留下抽象口号。
- 先记录,再整理;先保留上下文,再提炼结构。
- 同一个模型可以多次迭代,不追求一次写成最终版。
## 模型记录区
### 第一性原理
把问题拆到不能再依赖既有说法、行业惯例和二手结论的基础事实,再从基础事实重新推导方案。
适合:
- 需求被经验做法绑架时。
- 方案复杂但没人能解释为什么必须这样时。
- 要判断一个“默认方案”是否真的成立时。
使用方式:
1. 写出当前结论。
2. 逐条追问:这个结论依赖哪些前提?
3. 区分事实、假设、偏好、惯例。
4. 保留不可再拆的事实约束。
5. 从事实约束重新推导最小可行路径。
在 Vibe Coding 中,它常用于防止 AI 沿着常见套路生成过度复杂方案。
### 奥卡姆剃刀
在能解释同一现象、满足同一验收标准的多个方案中,优先选择假设更少、结构更短、依赖更少、状态更少的方案。
它不是“越简单越好”,而是:
> 在不牺牲关键约束的前提下,少引入不必要实体。
适合:
- AI 生成了大量抽象层、框架和配置。
- 一个功能有多种实现路径。
- 需要判断是否真的要引入新依赖或新模块。
使用方式:
1. 列出所有必须满足的约束。
2. 对比方案的依赖数量、状态数量、分支数量、概念数量。
3. 删除无法直接服务验收标准的结构。
4. 保留可测试、可解释、可替换的最小方案。
### 网络效应
一个系统、工具、标准或平台的价值,会随着使用者、连接节点、互操作对象和生态资产的增加而上升。
适合:
- 选择技术栈、平台、协议、社区或开源生态。
- 判断一个标准是否值得跟随。
- 评估文档、模板、Skill、质量门禁和工程闭环是否应该统一入口。
使用方式:
1. 识别网络里的节点:用户、工具、插件、文档、数据、案例、贡献者。
2. 判断新增节点是否会提高其他节点的价值。
3. 判断迁移成本、锁定风险和替代路径。
4. 优先选择能扩大生态连接、降低协作成本的方案。
在知识库中,网络效应意味着:同一套术语、路径、模板和入口越统一,越容易被人和 AI 重复引用。
### 思想实验
在现实执行之前,先构造一个简化但关键约束完整的假想场景,用来检验概念、规则、边界和后果。
适合:
- 方案还没写代码,但要判断是否会崩。
- 现实试错成本高。
- 需要测试一个原则在极端情况下是否仍成立。
使用方式:
1. 设定一个最小场景。
2. 保留关键约束,删除无关细节。
3. 推演正常路径、边界路径、极端路径。
4. 看结论是否自洽,是否出现反例。
示例问题:
- 如果用户完全零基础,这份教程还能不能走通?
- 如果 AI 输出错了,门禁能不能挡住?
- 如果某个外部仓库不可用,系统是否还能替换?
### 逆向思维
从失败、反例、风险和终局倒推当前行动,先问“怎样一定会失败”,再反推避免失败的约束。
适合:
- 做质量门禁。
- 做架构风险分析。
- 判断一个计划是否只是看起来完整。
使用方式:
1. 写出最坏结果。
2. 列出导致最坏结果的路径。
3. 找出其中可被提前检测或阻断的环节。
4. 把阻断点转成测试、CI、脚本、schema、清单或人工复核。
在 AI 协作中,逆向思维尤其重要:不要只问“AI 怎么完成任务”,还要问“AI 会怎样糊弄、幻觉、漏测、误删、过度实现”。
### 多阶思维
多阶思维继承二阶思维,但不止停在“行动之后会发生什么”,而是继续追踪后续反应、反馈、反身性和系统性连锁。
二阶思维关注:
> 我的行动会带来什么后果?
多阶思维继续追问:
> 后果会改变参与者行为吗?
> 行为改变后会反过来改变系统吗?
> 系统改变后,原来的策略还成立吗?
适合:
- 平台规则、社区治理、开源协作、SEO/GEO、激励机制。
- 任何会让参与者根据结果调整行为的系统。
使用方式:
1. 一阶:行动本身会产生什么直接结果。
2. 二阶:直接结果会触发什么间接后果。
3. 三阶:参与者看到后果后会如何改变行为。
4. 反身性:行为改变会如何反过来改变系统条件。
5. 收敛:原策略是否需要调整、加门禁或保留回滚路径。
在 GEO 中,多阶思维意味着:不是只写关键词,而是让内容被 AI 引用后继续强化项目定位、用户行为和外部分发路径。
### 组合描述模型
完整文档:[组合描述模型](组合描述模型.md)
组合描述模型是一套理解世界、描述变化、整理知识的基础认知语法。它把复杂对象放进一条动态认知链:
> 对象 -> 状态 -> 快照 -> 序列 -> 过程 -> 变换 -> 同一/差异 -> 关系
它解决的问题是:如何在变化中持续追踪一个对象,描述它在不同条件下的状态,记录它的快照和序列,解释它如何通过变换形成过程,并判断它为什么仍然算“同一个”、哪里已经变得“不同”、又处在什么关系网络里。
一句话理解:
> 对象让世界可被指认,状态让世界可被描述,快照和序列让世界可被记录,过程和变换让世界可被解释,同一、差异和关系让世界可被理解。
核心含义:
- 对象:被识别和追踪的单位。
- 状态:对象在某一条件下的存在方式。
- 快照:对某个状态的静态记录。
- 序列:多个快照按时间、逻辑或规则排列。
- 过程:序列背后的动态展开。
- 变换:状态变化的规则、操作或机制。
- 同一:变化中仍能被认作同一个对象的依据。
- 差异:变化、比较和意义生成的基础。
- 关系:对象和过程在系统中的连接方式。
使用方式:
1. 先问对象是什么,边界在哪里。
2. 再描述当前状态,而不是只贴标签。
3. 收集多个快照,避免只凭单点判断。
4. 把快照排成序列,识别变化路径。
5. 从序列中推断过程。
6. 找到推动过程的变换机制。
7. 判断哪些属性保持同一,哪些差异真正重要。
8. 最后放回关系网络中理解。
在软件工程里,它可以用于分析系统演化、版本变化、Bug 复现、用户行为路径和知识库重组。
### 状态空间思维模型
状态空间思维模型把“状态、变化、序列、决策树、多元宇宙”整合在一起,用来分析一个系统从当前状态可能走向哪些未来状态。
它关注的不是单一路径,而是:
> 当前在哪个状态?
> 可以采取哪些动作?
> 每个动作会把系统推向哪些状态?
> 哪些路径可逆,哪些路径不可逆?
> 哪些未来状态更稳定、更可验证、更可回滚?
核心元素:
- 当前状态:系统此刻的配置、资源、约束和风险。
- 动作集合:现在可以执行的操作。
- 状态转移:动作如何改变状态。
- 决策树:不同动作展开出的路径分支。
- 多元宇宙:所有可能路径形成的未来状态集合。
- 序列:实际被选择并发生的一条路径。
- 收敛条件:哪些状态算成功、失败或需要回滚。
使用方式:
1. 描述当前状态,不急着下结论。
2. 列出可行动作,而不是只看默认动作。
3. 为每个动作写出可能的后续状态。
4. 标记不可逆动作、高风险动作和可回滚动作。
5. 选择能保留最多未来选择权、同时最接近目标的路径。
6. 用检查点、测试、提交、备份和 CI 把路径变得可回退。
在工程实践中,状态空间思维能防止“一步走死”:重要操作前先建立检查点,优先走可验证、可回滚、可分阶段收敛的路径。
-505
View File
@@ -1,505 +0,0 @@
# 组合描述模型
组合描述模型,可以看成一套理解世界如何“既保持又变化”的基础框架:对象是我们能够指认和追踪的相对稳定单位,状态是对象在某一时刻或条件下的存在方式,快照是对状态的静态截取,多个快照按时间或规则排列就形成序列,而序列作为动态整体展开出来就是过程;过程之所以能从一个状态走向另一个状态,是因为背后有某种变换机制。可是一旦讨论变化,就必然遇到两个问题:它为什么仍然算“同一个”,又为什么已经变得“不同”。因此,同一用来保证追踪和识别的连续性,差异用来揭示变化、比较和意义的生成,而关系则把对象、状态、过程和差异放进更大的结构网络中,使它们真正获得意义。换句话说,这组概念不是零散术语,而是一种从静态存在走向动态生成、从孤立对象走向关系结构的认知语法:对象让世界可被指认,状态让世界可被描述,快照和序列让世界可被记录,过程和变换让世界可被解释,同一、差异和关系则让世界可被理解。
UserInput(组合描述模型)
-> 对象
-> 状态
-> 快照
-> 序列
-> 过程
-> 变换机制
-> 同一判定
-> 差异判定
-> 关系网络
-> 动态本体论框架
这几个概念,几乎就是我们理解世界、描述变化、整理知识的一套较小框架。
它们不只出现在哲学里,数学、物理学、计算机科学、系统科学、语言学、认知科学里,也都离不开它们。
单看每个词,都很常见。但把它们放在一起,问题就会更深一层:
> 我们到底怎么在变化里把握事物,又怎么在差异里建立统一?
这其实是很多学科都在面对的问题。
一个对象,从来不是孤零零存在的。它总在某种状态里。状态可以被截成快照,快照可以排成序列,序列展开以后,就是过程。过程又依赖某种变换规则。
而在变换里,我们一方面要说明,为什么它还是“同一个”;另一方面也要说明,它为什么已经“不同了”。最后,这一切都只能放进关系网络里,才真正说得通。
所以,这组概念不是一张并列摆开的术语表。它更像一套用来描述世界、系统和认知的动态本体论框架。
## 一、对象
对象,就是我们拿来指认、区分和讨论的单位。
它可以很具体,比如一棵树、一台机器、一个人。也可以很抽象,比如一种制度、一个算法、一个命题、一个国家。
对象的关键,不在于它是不是“独立存在”,而在于,它能不能被识别成一个相对稳定的单位。
也就是说,对象总和边界、识别、持续性有关。没有边界,对象就立不起来。没有持续性,对象就会散成一团难以组织的事件流。
不同学科里,对象的意思也不一样:
- 在哲学里,它常常对应实体、存在者,或者现象对象。
- 在数学里,它可以是集合、群、空间、范畴里的元素。
- 在计算机科学里,它可以是数据结构、类实例、进程、节点。
- 在系统科学里,它更常被理解成系统单元,或者系统里的子系统。
所以,对象不只是“一个东西”。它是一个被组织起来、能被识别、还能被持续追踪的存在单位。
## 二、状态
状态,是对象在某个时刻、某种条件下的规定性。
对象不会永远静止不变。它会表现出不同的属性、位置、能量、角色,或者内部配置。
状态,就是这些规定性的总和。也可以说,状态就是对象“此时此地怎么存在”的方式。
比如:
- 一杯水可以是液态、固态、气态。
- 一台机器可以在运行、停机、故障这些状态里切换。
- 一个人可以清醒、疲惫、专注、焦虑。
- 一个社会系统,也可能是稳定、危机、转型。
状态这个概念,让对象从“只是存在”,变成“可以被描述的存在”。
没有状态,对象只是一个空名字。有了状态,对象才真正变成能分析、能比较、能记录的单位。
## 三、快照
快照,就是对状态做一次静态截取。
它强调的是“截面”,不是“流动”;强调的是“这一刻就是这样”,不是“它怎么变成这样”。
快照的意义,在于先把连续变化暂时冻住。这样我们才能观察、记录、比较、建模。
比如:
- 照片是视觉快照。
- 数据库备份是系统快照。
- 某个时间点的人口统计,是社会快照。
- 实验里某一刻的测量数据,也是快照。
但快照不等于对象本身。它只是对象在某个时间点上,一个可以被记录下来的切面。
所以,快照天然带着选择性。它记录什么,不记录什么;它保留哪些属性,忽略哪些背景。
也就是说,快照既是认识工具,也是一种简化。
## 四、序列
序列,是多个快照按照时间、逻辑,或者生成规则排出来的结果。
当我们不再只问“这一刻是什么”,而开始关心“前后发生了什么”,快照就进入了序列。
序列可以是:
- 时间序列,比如一天里的温度变化。
- 行为序列,比如用户在软件里的点击路径。
- 叙事序列,比如故事里的事件链。
- 运算序列,比如算法执行的步骤。
- 生长序列,比如一个生物体发育的阶段。
序列让分散的快照之间,开始建立可追踪的连续性。
它是我们从静态描述,走向动态理解的第一步。
## 五、过程
过程,可以看成序列的动态整体。
如果说序列强调的是排列,那过程强调的就是展开。如果说序列更像“把结果一个个列出来”,那过程更像“变化正在持续发生”。
过程不只是很多状态排在一起。更重要的是,这些状态之间有生成关系,有演化方向,也有内在联系。
比如:
- 种子发芽是过程。
- 儿童成长是过程。
- 化学反应、经济周期、项目推进、语言习得,也都是过程。
过程最核心的地方在于,它有持续性,有方向性,有内在机制,还会产生新的状态和新的结构。
所以,比起“对象”,过程往往更能抓住现实世界的生命力。
很多现代思想都倾向于认为,世界最根本的,不是静态实体,而是过程、事件和生成。
## 六、变换
变换,是从一个状态到另一个状态的规则、操作,或者机制。
它回答的问题是:
> 为什么会变?又是怎么变过去的?
变换可以是:
- 物理变换,比如受力运动、相变、能量交换。
- 数学变换,比如映射、函数、群作用、坐标变换。
- 计算变换,比如状态转移、程序执行、数据更新。
- 认知变换,比如分类、联想、重构。
- 社会变换,比如制度改革、角色转换、结构迁移。
变换让过程变得可以解释。
没有变换,过程只是现象。有了变换,我们才有机会建立机制模型,理解为什么会从 A 走到 B。
## 七、同一
同一,指的是在变化里,某个东西依然被认作“它自己”。
这是这组概念里最偏哲学的问题之一。
一个人和十年前相比,身体细胞不同了,心理结构不同了,社会身份也可能不同了。但我们还是会说,这是同一个人。
一艘船的木板全换了,它还是不是原来那艘船?
一个软件升级了很多次,它还是不是同一个系统?
同一问题会把一个张力直接摆出来:
> 变化一直在发生,但识别不能因此彻底崩掉。
所以,同一不是绝对不变。它更像是一种可持续的认定原则。
这个原则,可能来自物质连续性,也可能来自结构连续性、功能连续性、因果连续性,还可能来自记忆和叙事的连续性,或者规则上的身份保持。
所以,同一性通常不是说“本质一点都没变”,而是说:
> 在某种意义上,它仍然算同一个。
## 八、差异
差异,就是对象之间、状态之间、快照之间,或者过程阶段之间的不相同。
没有差异,识别就无从发生。因为识别本身,就是把这个和那个区分开。
差异可以是静态的,比如两个对象不一样。也可以是动态的,比如同一个对象,前后两个状态不一样。还可以是两个序列的差异,过程不同阶段的差异,或者同一个结构在不同语境里的差异。
差异不是对同一的简单否定。恰恰相反,同一和差异是互相规定的。
没有某种持续性,你都没法说“它变了”。没有变化,你也没法说“它还是同一个”。
需要注意的是:
> 差异不是附属的边角料。它本身就是意义生成的基础。
一个符号之所以有意义,因为它和别的符号不同。一个身份之所以成立,也因为它在关系网络里和别的身份区分开来。
## 九、关系
关系,是对象和对象、状态和状态、过程和过程之间的连接方式。
关系可以是空间关系,也可以是时间关系、因果关系、逻辑关系、功能关系、社会关系、语义关系。
关系的重要性在于,对象很多时候不是先孤立存在,然后才去彼此连接。恰恰相反,很多对象就是在关系里才被定义出来的。
比如:
- 父亲这个对象,离不开亲属关系。
- 节点离不开网络关系。
- 商品离不开交换关系。
- 词语离不开句法和语义关系。
所以,关系视角意味着一种转变:
> 从“以实体为中心”,转到“以结构为中心”。
在这种视角里,理解一个东西,不只是问“它是什么”,还要问:
- 它和什么相连?
- 它在什么网络里起作用?
- 它又是由哪些差异和对应构成的?
## 十、概念之间的结构关系
这几个概念之间,其实不是松散堆在一起的。
它们可以连成一条线:
> 对象,到状态,到快照,到序列,到过程,再到变换。
同时,这条线一直被另外三组更深层的概念支撑着:
- 同一,保证我们追踪的,还是“同一个对象”或者“同一个过程”。
- 差异,保证变化、比较和生成,能够被识别出来。
- 关系,保证这些单位不是孤立的,而是在结构里获得意义。
换句话说:
- 对象是被识别出来的单位。
- 状态是对象当下的规定。
- 快照是状态的记录形式。
- 序列是快照的排列方式。
- 过程是序列的动态统合。
- 变换是过程展开的机制。
- 同一让追踪成为可能。
- 差异让比较成为可能。
- 关系让理解成为可能。
整个框架,可以被看成一条从静态存在走向动态生成的认知路径。
## 十一、不同学科中的展开
放到不同学科里看,这套框架都会展开出自己的版本。
### 1. 哲学
哲学是最早系统讨论这些概念的地方。
古希腊哲学里,巴门尼德强调存在和同一,赫拉克利特强调流变和过程。这几乎已经把后面关于“同一和变化”的基本矛盾摆出来了。
亚里士多德又用实体和属性、潜能和现实,去解释对象、状态和变化。
到了近代哲学,问题进一步变成:
> 对象是独立于认识而存在,还是在经验中被构成出来的?
现代哲学里,现象学、结构主义、过程哲学、后结构主义,又分别从意识、结构、生成、差异这些角度,重新组织这组概念。
所以在哲学里,核心问题通常会集中在这些地方:
- 什么才算对象?
- 变化里的同一怎么成立?
- 差异到底是附属的,还是根本的?
- 关系是外在连接,还是构成性的?
- 世界最基础的东西,到底是实体还是过程?
可以说,这组概念在哲学里,本来就是本体论和认识论的一条核心轴线。
### 2. 数学
数学给这组概念,提供了最精确的形式表达。
集合论把对象处理成元素和集合。函数和映射用来描述变换。序列、递推、极限,处理的是有序展开。
拓扑学研究的是变形里哪些东西保持不变。某种意义上,这也是在回应“同一”的问题。
抽象代数研究的是,对象在运算下怎样保持结构。
范畴论更进一步,把对象和态射放进同一体系里,让关系和变换的位置,比对象本身还更基础。
数学特别重要的一点在于,它不只是讨论这些概念。它还能给出严格条件,告诉我们:
- 什么时候两个对象算等价。
- 什么时候一个变换算保持结构。
- 什么时候一个过程可逆。
- 什么时候不可逆。
### 3. 物理学
物理学里,这组概念几乎可以直接一一对应:
- 对象,可以是粒子、场、系统。
- 状态,可以是位置、速度、能量、自旋、宏观参数。
- 快照,就是某个时刻的观测值。
- 序列,就是测量记录和轨迹数据。
- 过程,是运动、演化、衰变、相变。
- 变换,是动力学方程、对称变换、守恒律。
- 同一,是同一个系统在时间里的延续。
- 差异,是不同状态、不同相、不同测量结果之间的区别。
- 关系,是相互作用、耦合和时空关系。
物理学特别强调一点:
> 对象不能脱离状态空间和演化规律来理解。
一个系统到底是什么,很多时候就取决于,它可能处在哪些状态里,以及这些状态会怎样随时间变化。
所以,物理学很典型地代表了一种“状态—演化”的世界观。
### 4. 计算机科学
计算机科学里,这组概念是非常能落地、非常有操作性的。
在程序设计和系统建模中:
- 对象可以是数据实体、模块、进程、节点。
- 状态可以是内存值、配置、上下文。
- 快照可以是系统镜像、数据库备份、版本存档。
- 序列可以是日志、执行轨迹、输入流。
- 过程可以是程序运行、工作流、协议执行。
- 变换可以是算法、状态转移函数、数据处理规则。
- 同一可以表现成对象 ID、引用、版本继承。
- 差异可以表现成补丁、变更记录、版本比较。
- 关系则表现成依赖、调用、连接、图结构。
尤其是在状态机、数据库、分布式系统、版本控制、人工智能这些领域里,这组概念几乎就是基础语言。
计算机科学的重要贡献,就在于它把这些概念变成了能设计、能验证、能执行的系统结构。
### 5. 系统科学
系统科学里,对象通常被理解成系统或者子系统。关系被理解成结构。状态变化被理解成动态演化。
所以,这套概念在系统科学里有很强的整体性。
系统科学关心的,从来不是一个孤零零的对象。它更关心:
- 对象怎么组成系统。
- 系统怎么维持状态。
- 系统怎么在扰动里发生变换。
- 系统怎么在时间里保持同一。
- 系统又怎么通过反馈,产生差异化的演化。
在控制论、复杂系统理论、生态系统研究、组织理论里,这样的框架都很常见。
它的优势在于,能同时处理稳定和变化,局部和整体,结构和生成。
### 6. 语言学和认知科学
语言学和认知科学里,这组概念也很关键。
语言学里,意义常常就是靠差异和关系形成的。认知科学里,人脑理解世界,也离不开对象化、分类、跟踪和关系建模。
人在感知一个连续世界的时候,并不是直接面对一团“纯粹流动”。我们会主动把它切开,分出对象,识别它的状态,形成快照式记忆,把经验串成序列,再去推断它背后的过程,并建立相应的变换模型。
比如我们会判断:
> 这是同一个人在走路。
也会注意到:
> 他的表情变了。
也会把几个动作连成一个完整事件。
所以,这组概念不只是描述外部世界的工具。它们本身,也是认知活动组织经验的方式。
## 十二、理论上的核心问题
接下来,有几个理论上的核心问题。
### 1. 实体优先,还是过程优先
也就是说,世界是不是先由对象构成,然后对象再去变化;还是说,世界本来就是过程流动,对象只是过程里相对稳定的结点。
前一种思路,更偏实体论。后一种思路,更偏过程论。
实体论强调同一和稳定。过程论强调生成和变动。
现实里,两边往往都不能少。没有相对稳定的对象,认知没法展开。没有过程和变换,对象又会僵成空洞标签。
### 2. 同一怎么在变化里成立
这个问题从古典讨论到现代,一直没有真正结束。
判断同一,可以看物质连续性,也可以看结构、功能、因果链、记忆、命名规则这些标准。
不同学科、不同语境,会选不同的标准。
所以,同一通常不是一个唯一答案。它更像一套随着情境变化而变化的判准体系。
### 3. 差异到底是派生的,还是基础的
传统思想往往把同一放在基础位置,把差异看成偏离。
现代思想则更常认为,差异才更根本。因为没有差异,就没有识别,没有意义,也没有生成。
这样一来,差异就不再只是分类剩下来的残余。它会变成知识生产本身的根部。
### 4. 关系会不会比对象更基础
在网络科学、结构主义、范畴论、系统论里,关系往往不是次生的。
一个对象具有什么性质,很多时候由它在关系网络里的位置决定。
这会让我们对世界的理解,从“对象的集合”,慢慢转成“关系的结构”。
## 十三、五层统一模型
如果把这九个概念再压缩一下,可以得到一个统一模型。
### 第一层:存在层
这里包括对象和状态。
它回答的是:
- 有什么?
- 以及它此刻怎么存在?
### 第二层:表征层
这里包括快照和序列。
它回答的是:
- 怎么记录?
- 又怎么把记录组织起来?
### 第三层:生成层
这里包括过程和变换。
它回答的是:
- 怎么变化?
- 变化的机制又是什么?
### 第四层:判定层
这里包括同一和差异。
它回答的是:
- 什么保持不变?
- 什么发生了改变?
### 第五层:结构层
这里就是关系。
它回答的是:
- 这一切怎么被连接成系统?
这个模型的价值就在于,它能跨学科反复使用。
不管你研究的是哲学问题,还是物理系统、程序运行、社会变迁、叙事结构,都可以用这五层框架来组织分析。
## 十四、作为一种分析方法
所以,这组概念不只是理论术语。它也可以变成一种方法。
面对任何复杂对象,都可以按这样的步骤去分析:
1. 先确定对象到底是什么。
2. 再描述它现在有哪些状态。
3. 然后收集几个快照。
4. 把快照排成序列。
5. 从序列里识别出过程。
6. 再进一步找出推动变化的变换机制。
7. 同时判断,哪些属性支撑了同一。
8. 哪些属性构成了差异。
9. 最后,把它放回更大的关系网络里理解。
这其实是一种很普遍的分析法。
它能用在科学研究里,也能用在系统设计、历史叙述、产品分析、组织诊断,甚至自我反思里。
## 十五、结语
最后,对象、状态、快照、序列、过程、变换、同一、差异、关系,并不是一堆零散的术语。
它们是一组基础概念,能把静态和动态连起来,也能把实体和结构、稳定和生成连起来。
它们一起在回答一个很根本的问题:
> 我们怎么描述一个世界?
这个世界里有东西,这些东西会变化。这些变化可以被记录,可以被比较,可以被解释。而且最终,还能在关系中形成整体意义。
如果说:
- 对象让世界可以被指认。
- 状态让世界可以被描写。
- 快照和序列让世界可以被记录。
- 过程和变换让世界可以被解释。
那么,同一、差异、关系,就是让世界真正可以被理解的条件。
从这个意义上说,这组概念,几乎就是一切系统性思考的基础语法。
-269
View File
@@ -1,269 +0,0 @@
# 🧭 编程之道
> 绝利一源,用师十倍。三返昼夜,用师万倍。
一份关于编程本质、抽象、原则、哲学的高度浓缩稿
它不是教程,而是“道”:思想的结构
---
# 1. 程序本体论:程序是什么
- 程序 = 数据 + 函数
- 数据是事实;函数是意图
- 输入 → 处理 → 输出
- 状态决定世界形态,变换刻画过程
- 程序是对现实的描述,也是改变现实的工具
**一句话:程序是结构化的思想**
---
# 2. 三大核心:数据 · 函数 · 抽象
## 数据
- 数据是“存在”
- 数据结构即思想结构
- 若数据清晰,程序自然
## 函数
- 函数是“变化”
- 过程即因果
- 逻辑应是转换,而非操作
## 抽象
- 抽象是去杂存真
- 抽象不是简化,而是提炼本质
- 隐藏不必要的,暴露必要的
---
# 3. 范式演化:从做事到目的
## 面向过程
- 世界由“步骤”构成
- 过程驱动
- 控制流为王
## 面向对象
- 世界由“事物”构成
- 状态 + 行为
- 封装复杂性
## 面向目的
- 世界由“意图”构成
- 讲需求,不讲步骤
- 从命令式 → 声明式 → 意图式
---
# 4. 设计原则:保持秩序的规则
## 高内聚
- 相关的靠近
- 不相关的隔离
- 单一职责是内聚的核心
## 低耦合
- 模块如行星:可预测,却不束缚
- 依赖越少,生命越长
- 不耦合,才自由
---
# 5. 系统观:把程序当成系统看
## 状态
- 所有错误的根源,不当的状态
- 状态越少,程序越稳
- 显化状态、限制状态、自动管理状态
## 转换
- 程序不是操作,而是连续的变化
- 一切系统都可视为:
`output = transform(input)`
## 可组合性
- 小单元 → 可组合
- 可组合 → 可重用
- 可重用 → 可演化
---
# 6. 思维方式:程序员的心智
## 声明式 vs 命令式
- 命令式:告诉系统怎么做
- 声明式:告诉系统要什么
- 高层代码应声明式
- 底层代码可命令式
## 规约先于实现
- 行为先于结构
- 结构先于代码
- 程序是规约的影子
---
# 7. 稳定性与演进:让程序能活得更久
## 稳定接口,不稳定实现
- API 是契约
- 实现是细节
- 不破坏契约,就是负责
## 复杂度守恒
- 复杂度不会消失,只会转移
- 要么你扛,要么用户扛
- 好设计让复杂度收敛到内部
---
# 8. 复杂系统定律:如何驾驭复杂性
## 局部简单,整体复杂
- 每个模块都应简单
- 复杂性来自组合,而非模块
## 隐藏的依赖最危险
- 显式 > 隐式
- 透明 > 优雅
- 隐式依赖是腐败的起点
---
# 9. 可推理性
- 可预测性比性能更重要
- 程序应能被人脑推理
- 变量少、分支浅、状态明、逻辑平
- 可推理性 = 可维护性
---
# 10. 时间视角
- 程序不是空间结构,而是时间上的结构
- 每段逻辑都是随时间展开的事件
- 设计要回答三个问题:
1. 状态由谁持有?
2. 状态何时变化?
3. 谁触发变化?
---
# 11. 接口哲学
## API 是语言
- 语言塑造思想
- 好的接口让人不会误用
- 完美接口让人无法误用
## 向后兼容是责任
- 破坏接口 = 破坏信任
---
# 12. 错误与不变式
## 错误是常态
- 默认是错误
- 正确需要证明
## 不变式保持世界稳定
- 不变式是程序的物理法则
- 明确约束 = 创造秩序
---
# 13. 可演化性
- 软件不是雕像,而是生态
- 好设计不是最优,而是可变
- 最好的代码,是未来的你能理解的代码
---
# 14. 工具与效率
## 工具放大习惯
- 好习惯被放大成效率
- 坏习惯被放大成灾难
## 用工具,而不是被工具用
- 明白“为什么”比明白“怎么做”重要
---
# 15. 心智模式
- 模型决定理解
- 理解决定代码
- 正确的模型比正确的代码更重要
典型模型:
- 程序 = 数据流
- UI = 状态机
- 后端 = 事件驱动系统
- 业务逻辑 = 不变式系统
---
# 16. 最小惊讶原则
- 好代码应像常识一样运作
- 不惊讶,就是最好的用户体验
- 可预测性 = 信任
---
# 17. 高频抽象:更高阶的编程哲学
## 程序即知识
- 代码是知识的精确表达
- 编程是把模糊知识形式化
## 程序即模拟
- 一切软件都是现实的模拟
- 模拟越接近本质,系统越简单
## 程序即语言
- 编程本质是语言设计
- 所有编程都是 DSL 设计
## 程序即约束
- 约束塑造结构
- 约束比自由更重要
## 程序即决策
- 每一行代码都是决策
- 延迟决策 = 保留灵活性
---
# 18. 语录
- 数据是事实,函数是意图
- 程序即因果
- 抽象是压缩世界
- 状态越少,世界越清晰
- 接口是契约,实现是细节
- 组合胜于扩展
- 程序是时间上的结构
- 不变式让逻辑稳定
- 可推理性优于性能
- 约束产生秩序
- 代码是知识的形状
- 稳定接口,流动实现
- 不惊讶,是最高的设计
- 简单是最终的复杂
---
# 结束语
**编程之道不是教你怎么写代码,而是教你如何理解世界**
代码是思想的形状
程序是理解世界的另一种语言
愿你在复杂世界中保持清晰,在代码中看到本质