编程中的简单与复杂 Quotes
计算机科学家 Alan Kay(面向对象之父):
"Simple things should be simple, complex things should be possible."
(简单的东西应该保持简单,复杂的东西应该成为可能。)
一、 极简与控制复杂度(Simplicity & Complexity)
- C.A.R. Hoare(图灵奖得主,快速排序算法发明者,ALGOL 语言设计者)
"There are two ways of constructing a software design: One way is to
make it so simple that there are obviously no deficiencies, and the
other way is to make it so complex that there are no obvious
deficiencies."
“软件设计有两种方式:一种是让它简单到‘明显没有缺陷’;另一种是让它复杂到‘没有明显的缺陷’。”
- Antoine de Saint-Exupéry(《小王子》作者,虽然是作家,但这句话被工程界誉为设计最高法则)
"Perfection is achieved, not when there is nothing more to add, but
when there is nothing left to take away."
“完美不是加到无法再加,而是减到无可再减。”
—— Unix 哲学与 Go 语言设计理念的灵魂基石:好的设计永远在做减法。
- Brian Kernighan(C 语言与 Unix 传奇巨擘,《C 程序设计语言》合著者)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by
definition, not smart enough to debug it."
“调试代码的难度是写代码的两倍。因此,如果你写代码时穷尽了所有的聪明才智(去炫技),那么按定义来说,你就不够聪明去调试它。”
二、 易用性与降低心智负担(Developer Experience)
- Martin Fowler(《重构》、《企业应用架构模式》作者,软件设计大师)
"Any fool can write code that a computer can understand. Good
programmers write code that humans can understand."
“任何傻瓜都能写出计算机看得懂的代码。只有优秀的程序员才能写出人类看得懂的代码。”
- Rob Pike(Go 语言首席设计师,Unix 核心成员)
"Simplicity is hard to build, easy to use, and hard to charge for.
Complexity is easy to build, hard to use, and easy to charge for."
“简单:构建起来极其困难,用起来极其轻松,却很难卖出高价。复杂:构建起来很容易,用起来极其痛苦,却很容易开出高价。”
三、 架构设计的终极目标(Pragmatic Engineering)
- Rich Hickey(Clojure 语言设计者,极简主义架构大师)
"Simplicity is a prerequisite for reliability."
“简单,是可靠性的先决条件。”
—— 系统越复杂,不可控的隐患就越多;想要系统 99.999% 稳定,唯一的途径就是把结构设计得足够简单。
- Edsger W. Dijkstra(图灵奖得主, Dijkstra 算法发明者,结构化编程奠基人)
"Simplicity is prerequisite for reliability. Simplicity is also the
ultimate sophistication."
“简单是可靠的前提,简单也是最高级的复杂。”
(这句话后半句源自达·芬奇的 "Simplicity is the ultimate sophistication")

