之前在《算法的乐趣》上看到俄罗斯方块的设计时有一句话深深地烙在了我的脑海里——Keep It Simple and Stupid。然后这成为了我踏入编程之门以来最喜欢的一句话,这几乎成为我所有门户网站的座右铭了。

那么何为 KISS 原则呢?

我最初的理解和大多数的程序员一样——保持简单和直接,可以只由一个小程序来实现的功能就不要给它写一个大程序。这种一切从简的思想似乎已经渗透了程序设计的方方面面,无论是小到数据表的设计,还是大到造轮子,它几乎造就了程序界所有的精品。C 语言、Linux 系统等等均是 KISS 原则的产物。

这种理解看起来仿佛十全十美了,但事实是——We don’t know KISS。

直到我今天认识了大师丹尼斯·里奇,我才真正深刻地认识到 KISS 原则。

Dennis Ritchie

大师丹尼斯·里奇诞生于 1941 年 9 月 9 日,是著名的美国计算机科学家,对 C 语言和其它编程语言、MulticsUnix 等操作系统的发展做出了巨大的贡献,在计算机科学界以他贝尔实验室的用户名 dmr 而闻名。

里奇的父亲是贝尔实验室的一名电气工程师,他在里奇 13 岁的时候便举家搬到了新泽西,而之后里奇就在这个地方待上了一辈子。自小就受到父亲的影响,里奇从小就对应用数学和物理很感兴趣,并拿到了哈佛的应用数学博士学位。毕业后里奇为军方研究过核武器,但这似乎不合他的志趣。1967 年,通过父亲的介绍,26 岁的里奇加入了贝尔实验室,并在这里缔造了传奇的一生。

里奇在贝尔实验室的第一个大 project 就是 Multics——可以由多人操作的多线程操作系统,而 Multics 由于设计过于复杂,最终无果而终。里奇心有不甘却又无能为力。与此同时,里奇在贝尔实验室的同事肯·汤普逊借鉴了 Multics 的设计思路,做了一个个人项目——Unix,并邀请里奇参与研发,里奇自然很爽快地答应了。

一位杰出的电气工程师(汤普逊)和一位杰出的数学家(里奇)的组成会擦出怎样的火花?答案就是——风靡了整整一个 80 年代并催生了 Windows、Mac OS 和 Linux 的 Unix 操作系统。

在 Multics 失败之后,里奇吸取教训,并制定了至今仍然影响着整个科技工业的“KISS 原则”。为了实现 KISS 的设计原则,Unix 被写成了很多小程序,每个小程序只实现单一的功能。表面上看这种设计很低效,既然可以用一个大程序实现的功能,为什么还要分解成这么多细枝末节呢?事实是这些小程序的组合很灵活、运行很高效,要知道很多大程序都有公用的组件,KISS 的设计原则大大地降低了系统的耦合度并提高了系统的内聚性。

Unix 还有一个重大的突破点就是用 C 语言取代了机器语言。C 语言同样也贯彻了“KISS 原则”,它对很多现代编程语言(如 C++、C#、Objective-C、Java 和 JavaScript)有着深远的影响。正是由于 KISS 原则,C 语言至今仍然拥有强大的生命力(在 TIOBE 上多年来都没有让出第二把交椅)。

然而这一切都仅仅是 KISS 原则的一部分。汤普逊或许用 C 和 Unix 来践行了 KISS 原则,但是里奇却是用一生来践行了 KISS 原则。

里奇的一生都是那么的 simple。一辈子住在新泽西,从不喜欢抛头露脸,同时还是“程序猿注孤生”的践行者,终身没有结婚。在贝尔实验室卖给朗讯之后,里奇的同事都走得七七八八了,包括最好的朋友汤普逊最后都去了 Google,只有里奇孤身留守贝尔实验室。 直到 2006 年贝尔实验室被整体卖给了阿尔卡特,里奇才选择了退休。

退休后的里奇几乎销声匿迹了,世界几乎忘记了他的存在。直到 2011 年 10 月 12 日,共事 20 年的同事 Rob Pike 前往新泽西拜访他的时候才发现他已经去世了。由于一个人独居的原因,没有人知道里奇去世的准确时间,这也是我上文没有提及里奇的忌日的原因。

里奇的一生颇为辉煌却又如此的伤感。现在看来,“Keep It Simple and Stupid”远没有我们当初想的那么简单。要想真正地践行 KISS 原则,你必须让你的生活一切从简,穷极一生去追求一个纯粹的目的。这个过程表面看则很悠然自在,很潇洒,实则很痛苦。你必须放得下一切,包括娱乐爱好、亲情爱情友情、伤病等等,才能拿得起某一样东西,这种心酸大概只有真正的践行者才能体会到。