熵增定律与代码腐烂

原文来自:熵增定律与代码腐烂:为什么所有的系统终将走向混乱? - 知乎

热力学第二定律说,一个孤立系统的熵不会减少,只会增加。熵是无序的度量。一杯热水会变凉,一个整齐的房间会变乱,一座无人维护的建筑会风化。能量自发地走向均匀分布,秩序自发地走向瓦解。这个过程不可逆。

软件工程里有一个对应概念,叫代码腐烂。一个代码库,如果长时间不被触碰,不会变好,只会变差。依赖项过时,设计文档失联,曾经清晰的模块边界逐渐模糊。没有人故意破坏它,它只是放在那里,就自己坏掉了。

这两个现象指向同一件事:秩序是有成本的。

物理学对熵增的解释很清晰。系统趋向混乱,不是因为有外力在破坏,而是因为“混乱的状态”在概率上远远多于“有序的状态”。一个有序的状态只有寥寥几种排列方式,而混乱的状态有天文数字种。系统随机游走,自然会走向那个最有可能的去处。

代码腐烂也类似。一段清晰的代码,只是代码所有可能状态里极少数的一种。变量命名准确,是一种约束。函数职责单一,是一种约束。模块边界清楚,是一种约束。每一个约束都是对可能性的限制,是有人在无数种写法的海洋里,划出了一个很小的高地。那个高地不会自己维持。约束一旦松懈,代码就回到那个最可能的、最混乱的状态。不是有人把它推下去的,是它本来就想掉下去。

所以软件工程的核心工作,不是创造新秩序,而是抵抗秩序的自然瓦解。重构、测试、文档、代码审查,这些不产生新功能,只做一件事:把系统从高概率的混乱状态,重新拉回到那个低概率的有序高地上。

人也是一样。一个人不主动维护自己,就会滑向混乱。作息变乱,注意力变散,情绪变钝。这些变化不需要做错什么。什么都不做就够了。维持一种清晰的状态,需要持续的、主动的努力。早起是约束,运动是约束,设定优先级是约束,拒绝信息噪音也是约束。这些约束没有一个是自然的。不设约束,人就会自动填充进那个最不费力、最顺应默认设置的状态。睡觉比早起容易,滑动屏幕比深度阅读容易,拖延比面对困难任务容易。

很多时候以为自己在休息,其实是在往下滑。下滑不需要用力。待在水里,就会往下漂。

但这里有一个需要深究的地方。人类对抗熵增这件事,和物理系统不一样。物理系统是封闭的,熵增是铁律。人是开放的,可以从外部输入能量。更重要的是,人类可以选择为自己注入负熵。阅读,学习,训练,创作。这些动作,本质上是从外部引入秩序,来抵消内部的瓦解。

但需要警惕的是,不能把“对抗熵增”理解成一种单纯的意志力叙事。那种“只要你足够自律,就能永远有序”的说法,忽略了结构的力量。人类对抗混乱,从来不是靠意志力硬顶,而是靠建立结构。制定固定的时间表,搭建自动化的检查机制,设计好环境来减少决策成本。结构是对抗熵增的框架,不是某个伟大个体的精神原子弹。

意志力本身也会熵增。用尽是一种自然规律,不是性格弱点。

再往下走一步。有一个更微妙的问题:既然熵增不可逆,那创造秩序到底有什么意义?代码最终会腐烂,项目最终会下线,人最终会衰老。既然如此,为什么要维护?为什么不就让它滑下去?

答案可能在这里:秩序本身没有终极目的,但秩序的创造过程,是人类少数不需要任何外部理由的行动之一。我们整理一个房间,不是因为它能永久整齐。我们重构一段代码,不是因为它能永久干净。我们维持自己的清醒,不是因为我们不会老。我们做这些,是因为在创造秩序的过程中,我们短暂地成为了那个对抗宇宙惯性的支点。那一刻的秩序,就是目的本身。

熵增是宇宙的方向。但人类所有值得一做的事情,几乎都是逆着这个方向的。抵抗本身,就是意义。

代码终究会腐烂。但那个在腐烂之前被你重新组织过的结构,那个曾经恰好容纳了几个人协作的架构,那个在它存在的几年里持续运转、减少了多少错误的系统——它存在过。它的存在没有改变宇宙的熵,但改变了使用它的人。

熵增定律不承诺结局。它只是说,你要接受最终会滑下来。但你可以选择滑得多慢,滑得漂亮。并且,在滑下来的过程中,创造一些只有秩序才能带来的东西。


熵增定律与代码腐烂
https://blog.cikaros.cn/archives/wei-ming-ming-wen-zhang-Oh93ndrI
作者
Cikaros
发布于
2026年06月22日
许可协议