专业书籍精读 · A Philosophy of Software Design · 第 1 章

引论:一切都是复杂度

A Philosophy of Software Design · Ch 1 · Introduction (It's All About Complexity) · Ousterhout · 2nd ed 2021

EN →

这一章讲什么?

你手机上的 App 是不是越更新越卡、修好一个毛病又冒出两个新的?背后往往是同一件事:写它的人越来越看不懂自己的程序了。这本书的作者是斯坦福的老教授,写过好几个被广泛使用的软件。他在第一章只说一句话:做软件,说到底就是跟「复杂」打仗。

先说个怪事

盖房子受钢筋、预算、物理定律限制;写程序几乎不受这些限制,想造多大就造多大。可程序员照样会被卡住——卡住他们的不是机器,而是脑子装不下。程序越长越大,各部分互相牵扯,改一处就得想清楚十处,最后谁都不敢动。

旧世界为什么难

核心机制直觉

带来了什么 / 该怎么选

把「这会不会让程序更难懂、更难改」当成每次动手前的第一问,团队就能把系统越做越大还不失控。一句诚实的代价:这些原则靠判断,不是照着做就灵的配方,推到极端同样会把事情搞砸。

一句话记住

程序员最大的敌人不是机器,是自己脑子装不下的复杂;能扔的扔掉,扔不掉的关进盒子,并且天天收拾。

想看复杂度为何是根本约束、消除与封装两条路、瀑布与增量开发、红旗与代码评审,以及 Dijkstra、Brooks、Google SRE 的同调? → 切到精读版