信息技术的熵减定律

The Second Law of Information Technology

Posted by Zeusro on March 1, 2026
👈🏻 Select language

我提出过信息技术的第一悖论:信息技术是一种反人类的技术。而在公有云的诸神黄昏文章中,我总结了信息技术行业的熵增定律以及“0号规律”——边际收益为0的代码重构没人愿意做。

今天我要反驳0号规律,并提出一个新“熵减定律”——在后现代编程中,人类的意义是降低代码的时间序列复杂度(n<n-1)。

屎山代码存在的合理性以及重构的必要性

如果你反编译过一些游戏的安卓apk文件,就会发现里面存在大量冗余的美术资源,这些美术资源跟当前版本没半毛钱关系。它们是一种历史遗留的垃圾代码。

而由于0号规律的存在,没有任何程序员愿意去重构以及删除相关的美术资源。这也解释了“王者荣耀”的安装包一再膨胀,直至后来提出了“清理历史道具”和“模块化按需下载资源”的解题思路,当然有一部分人吐槽更新完之后“粽子”变成一堆堆人机一样的图标。

至于为什么这么做,其实涉及到博弈论的一个基本论述:局部最优解未必全局最优。对于游戏开发者而言,为了增加新的收入,必定需要构造新的叙事。而清理历史债务不会在游戏的财务上有所体现。

但对于游戏用户和运营公司而言,日渐膨胀的安装包推高了CDN的流量成本,垃圾代码的堆积也延长了用户下载打开游戏所需要的时间,甚至有可能引起操作卡顿。

如果用熵增定律去衡量软件开发的流程,就会发现程序设计的屎山是一种必然,从某种程度上是软件开发工程师的一种“防御性编程”。

防御性编程还是过度设计?

从政治经济学角度出发,软件开发工程师本质上依旧是不掌握生产资料的“进城农民工”。从入职公司的那一刻起,所思所写都是公司的“数字资产”。这在美剧《硅谷》中亦有所体现:Richard在Hooli工作时,利用业余时间(但部分使用了公司电脑进行测试)开发了革命性的无损数据压缩算法,并以此为基础创立了Pied Piper公司。

当Pied Piper开始崭露头角后,Hooli(由Gavin Belson领导)在第二季中正式起诉Pied Piper,指控Richard“窃取”了属于Hooli的知识产权(copyright infringement),声称根据Richard与Hooli签订的雇佣合同(包含发明转让条款),他在职期间开发的代码及其相关技术归Hooli所有。

image

与公司抗衡是不明智的。因此为了规避被裁员的风险,软件开发工程师除了不写文档之外,滥用设计模式、使用反射隐式调用方法、过度设计,也都是常见手法。

我有时真的搞不懂,用人单位为了压低薪资而询问我各种“单机高并发”,“秒杀”问题。最夸张的莫过于问我“数百万用户同时在线”这种扯淡的问题,我看了一下那份岗位对应的薪资。

在有AI帮助的情况下,我当然可以设计一个流程去适配这些场景。问题在于,在使用了Redis分布式锁,Redis集群,kubernetes HPA动态扩缩容,微服务、消息中间件解耦之后,代码产生的实际收益在于哪里?我们做出来的产品是否真的有那么多付费的用户?把一个重要的系统交给一个边缘的外部服务商员工是否合适?

回到那个面试场景,最终我没有跟他们浪费时间,我建议他们通过微博发起抽奖解决秒杀的问题,然后我command+Q结束了整个远程会话。

科学熵减大家都轻松

回望第二次世界大战之后的世界,我们在一片废墟之上,又重新构建了新的高楼大厦。而信息技术到现在未到百年,终末的号角便已吹响。如果说这个行业也会随着人工智能技术而逐渐式微,那么少用C++(避免猝死),多用GC语言,做好AI coding的最后QA。

这样每天下班还能看到尚未暗淡的天空,不好吗?

n<n-1

I once proposed the first paradox of information technology: information technology is an anti-human technology. In my article The Twilight of the Public Cloud, I summarized the law of entropy increase in the IT industry and “Rule Zero” — nobody wants to do code refactoring whose marginal benefit is zero.

Today I want to refute Rule Zero and propose a new “The Second Law of Information Technology” — in post-modern programming, the human purpose is to reduce the time-series complexity of code (n<n-1).

The Rationality of Legacy Code and the Necessity of Refactoring

If you have ever decompiled the Android APK of a game, you will find a large number of redundant art assets inside — assets completely unrelated to the current version. They are historically inherited garbage code.

Due to Rule Zero, no programmer is willing to refactor or delete these art assets. This also explains why the installation package of Honor of Kings kept growing, until solutions like “clear historical props” and “modular on-demand resource downloads” were finally proposed — though some players complained that after the update, the “Zongzi” skin turned into a pile of bot-like icons.

Why does this happen? It comes down to a basic principle of game theory: a local optimum is not necessarily a global optimum. For game developers, constructing new narratives is essential for generating new revenue. Clearing historical technical debt has no direct reflection on the game’s financials.

But for players and operators, bloated installation packages drive up CDN traffic costs, and the accumulation of garbage code prolongs the time users need to download and open the game — and may even cause lag.

If you use the law of entropy increase to evaluate the software development process, you will find that a “shit mountain” codebase is inevitable — to some extent, it is a form of “defensive programming” by software engineers.

Defensive Programming or Over-Engineering?

From a political-economic perspective, software engineers are fundamentally still “migrant workers” who do not own the means of production. From the moment they join a company, everything they think and write becomes the company’s “digital assets.” This is reflected in the US TV series Silicon Valley: while working at Hooli, Richard used his personal time (though partially on company computers for testing) to develop a revolutionary lossless data compression algorithm, and founded Pied Piper on that basis.

As Pied Piper began to gain traction, Hooli (led by Gavin Belson) formally sued Pied Piper in season two, accusing Richard of “stealing” Hooli’s intellectual property (copyright infringement), claiming that under Richard’s employment contract with Hooli (which included an invention assignment clause), all code and related technology he developed during his employment belonged to Hooli.

Fighting the company is unwise. To guard against the risk of being laid off, software engineers resort to more than just avoiding documentation — abusing design patterns, using reflection for implicit method calls, and over-engineering are all common tactics.

I sometimes genuinely don’t understand: employers ask me about “single-machine high concurrency” and “flash sale” scenarios just to negotiate salaries down. The most absurd was being asked about “millions of users online simultaneously” — I took one look at the salary range for that position.

With AI assistance, I could certainly design a workflow to handle these scenarios. The real question is: after deploying Redis distributed locks, Redis clusters, Kubernetes HPA auto-scaling, microservices, and message broker decoupling — where is the actual return on that code? Does our product truly have that many paying users? Is it appropriate to hand a critical system over to an employee of a marginal third-party vendor?

Back to that interview: I didn’t bother wasting my time with them. I suggested they run a Weibo lottery to solve the flash sale problem, then hit Command+Q to end the entire remote session.

Scientific Entropy Reduction Makes Everyone’s Life Easier

Looking back at the world after World War II, we rebuilt towering structures from ruins. Information technology has not yet reached a hundred years, and already the final horn is sounding. If this industry is destined to gradually fade with the rise of artificial intelligence, then use less C++ (avoid sudden death), use more GC languages, and serve as the final QA for AI coding.

That way you can still see a sky that hasn’t faded when you leave work each day — isn’t that a good thing?

n<n-1

Я однажды предложил первый парадокс информационных технологий: информационные технологии — это антигуманная технология. В статье Сумерки публичного облака я сформулировал закон возрастания энтропии в IT-отрасли и «Правило ноль» — никто не хочет делать рефакторинг кода с нулевой предельной выгодой.

Сегодня я хочу опровергнуть Правило ноль и предложить новый «Второй закон информационных технологий» — в постмодернистском программировании роль человека состоит в снижении временно́й последовательной сложности кода (n<n-1).

Обоснованность существования «горы мусора» и необходимость рефакторинга

Если вы когда-либо декомпилировали Android APK игры, то обнаружили бы огромное количество избыточных художественных ресурсов, не имеющих никакого отношения к текущей версии. Это исторически унаследованный мусорный код.

Из-за Правила ноль ни один программист не хочет рефакторить или удалять эти художественные ресурсы. Это объясняет, почему установочный пакет Honor of Kings постоянно разрастался, пока наконец не были предложены решения в виде «очистки исторических предметов» и «модульной загрузки ресурсов по запросу» — хотя некоторые игроки жаловались, что после обновления скин «цзунцзы» превратился в груду иконок, похожих на ботов.

Почему так происходит? Это связано с фундаментальным тезисом теории игр: локальный оптимум не обязательно является глобальным оптимумом. Для разработчиков игр новые нарративы необходимы для получения нового дохода. Устранение исторического технического долга никак не отражается в финансовых показателях игры.

Однако для пользователей и операторов разрастающийся установочный пакет увеличивает затраты на CDN-трафик, а накопление мусорного кода удлиняет время загрузки и запуска игры — и может даже привести к зависаниям.

Если оценивать процесс разработки программного обеспечения через призму закона возрастания энтропии, становится ясно, что «гора мусора» в коде неизбежна — в определённой мере это «защитное программирование» со стороны разработчиков.

Защитное программирование или чрезмерное проектирование?

С точки зрения политической экономии, разработчики программного обеспечения по-прежнему остаются «приезжими рабочими», не владеющими средствами производства. С момента прихода в компанию всё, о чём они думают и что пишут, становится «цифровым активом» компании. Это нашло отражение в американском сериале «Кремниевая долина»: работая в Hooli, Ричард в свободное время (хотя частично использовал рабочий компьютер для тестирования) разработал революционный алгоритм сжатия данных без потерь и основал на его базе компанию Pied Piper.

Когда Pied Piper начала набирать обороты, Hooli (во главе с Гэвином Белсоном) во втором сезоне официально подала на Pied Piper в суд, обвинив Ричарда в «краже» интеллектуальной собственности Hooli (нарушении авторских прав), утверждая, что согласно трудовому договору Ричарда с Hooli (включавшему пункт о передаче изобретений), весь написанный им код и связанные технологии принадлежат Hooli.

Противостоять компании неразумно. Поэтому, чтобы снизить риск увольнения, разработчики прибегают не только к отказу от документирования — злоупотребление шаблонами проектирования, неявный вызов методов через рефлексию и чрезмерное проектирование тоже относятся к распространённым тактикам.

Иногда я действительно не понимаю: работодатели спрашивают меня о «высоком параллелизме на одной машине» и задачах «flash sale» лишь для того, чтобы сбить зарплату. Самое абсурдное — вопрос о «миллионах пользователей одновременно онлайн» — я посмотрел на предлагаемую зарплату для этой вакансии.

При помощи ИИ я, конечно, могу разработать процесс для этих сценариев. Вопрос в другом: после применения распределённых блокировок Redis, кластеров Redis, автомасштабирования Kubernetes HPA, микросервисов и развязки через брокер сообщений — в чём реальная отдача от такого кода? Действительно ли у нашего продукта столько платящих пользователей? Уместно ли доверять важную систему сотруднику сторонней периферийной компании?

Возвращаясь к тому собеседованию: я не стал тратить с ними время. Предложил им провести лотерею в Weibo для решения проблемы flash sale, а затем нажал Command+Q и завершил весь удалённый сеанс.

Научное снижение энтропии облегчает жизнь всем

Оглядываясь на мир после Второй мировой войны: мы возвели новые небоскрёбы из руин. Информационным технологиям ещё нет ста лет, а финальный горн уже трубит. Если эта отрасль всё же будет постепенно угасать с развитием искусственного интеллекта — используйте меньше C++ (избегайте внезапной смерти), больше GC-языков и станьте последним QA для AI-кодинга.

Так вы сможете каждый вечер, возвращаясь домой, видеть небо, которое ещё не потускнело — разве это плохо?

n<n-1



💬 讨论 / Discussion

对这篇文章有想法?欢迎在 GitHub 上发起讨论。
Have thoughts on this post? Start a discussion on GitHub.

在 GitHub 参与讨论 / Discuss on GitHub