Dennis Ritchie

Steve Jobs 的死举足轻重、倾国倾城;Dennis Ritchie 的死悄无声息、乏人问津。原因何在?Jean-Baptiste Queru 从科技的复杂性角度给出了自己的看法: Steve 的影响力能被大多数人所看见,而 Dennis 的影响力层次更深。如果没有 Jobs,计算世界可能没那么闪亮,但设备仍能照常运转。但如果没有 Ritchie,计算世界将会怎样?

你打开Google的首页,鼠标点击一下就行了。但实际上发生了什么呢?

好吧,如果你知道一点浏览器的工作原理,这事儿没那么简单。你只是启动了 HTTP、HTML、CSS、ECMAscript 等东西。实际上背后的技术异常复杂,以至于任何工程师多想一些的话都会眼花缭乱,以至于没有任何一家公司可以单独应对整个问题的复杂性。

让我们化繁为简。你只是把电脑连接到了 www.google.com。

如果你知道一点网络原理的话,根本没那么简单。你只是启动了 DNS、TCP、UDP、IP、Wifi、Ethernet、DOCSIS、OC、SONET 等东西。实际上背后的技术异常复杂,以至于任何工程师如果想得太多的话就会眼花缭乱,以至于没有任何一家公司可以单独应对整个问题的复杂性。

让我们化繁为简。你只是在浏览器的地址栏里输入了 www.google.com。

如果你知道一点操作系统原理的话,根本没那么简单。你只是启动了一个内核,一个图形驱动等若干东西,所有这些都是通过高级语言编写的,都经过编译器、连接程序、优化程序、解释程序等程序的处理。实际上背后的技术异常复杂,以至于任何工程师多想一点的话都会眼花缭乱,以至于没有任何一家公司可以单独应对整个问题的复杂性。

让我们化繁为简。你只是按下了键盘上的一个按键。

实际上,如果你了解一点周边输入设备工作原理的话,根本没那么简单。你只是启动了一个电源稳压器,一个反跳,一个输入多路复用器,一个 USB 设备堆栈,一个 USB 集线器堆栈,所有这些都是通过一个芯片部署的。这个芯片的核心是超薄的高纯单晶硅晶圆,并在晶体结构中掺杂了微量其它原子,和多层铜或铝相连,然后根据高精度高能紫外线的规律叠放在一起,通过金线连接到外部世界,里面的世界由一中在尺寸上和热力学上都很稳定的树脂封装。掺杂规律和互连结构用来部署晶体管,晶体管分组后可以创建逻辑门。在芯片的某些地方,逻辑门组合在一起构成算法和位运算函数,后者组合在一起构成算术逻辑单元(ALU)。在芯片的另一些地方,逻辑门组成双稳态循环,后者对齐后形成行,行和选择器一起构成寄存器组。在芯片的另一些位置,逻辑门组成总线控制器、指令解码器以及微码,进而形成一个执行调度。除此之外还有更多。实际上背后的技术异常复杂,以至于任何工程师多想一点的话都会眼花缭乱,以至于没有任何一家公司可以单独应对整个问题的复杂性。

我们还能进一步化繁为简吗?

实际上很不幸,不能。我们很难理解计算机键盘上一个芯片的复杂性,但是我们不能进一步简化了。下一步我们会被带到用来设计芯片逻辑的软件,这些软件本身就很复杂,需要回到循环上去。

现在的电脑如此复杂,以至于只能通过比它们略微简单一点的电脑来设计和制造。反过来用于设计和制造的电脑如此复杂,它们也只能通过比自己略微简单一点的电脑设计和制造。你不得不这样循环几次,最终回到一个可以一切从头开始的阶段。

一旦你明白了当代设备的工作和制作原理,你很难不被其中涉及的深邃技术搞得眼花缭乱,很难不对它们能正常运行这样的事实心存敬畏,因为墨菲定律说这样的事情本不靠谱。

对非科技人士而言,这完全是一个暗箱。这是科技的伟大胜利:所有复杂性都被隐藏起来,人们在使用时根本感觉不到它们的存在。这也正是很多人认为计算机很难使用的原因:很多东西可能出错,而且有些问题必然出现,但由于问题过于复杂,一般面对错误通常无计可施。

这也是科技人士和非科技人士难以交流的原因:科技人士懂得太多,非科技人士懂得太少,双方无法建立有效的直接沟通。差距如此之大,以至于没有一个人可以在两群人之间进行调解,并且这最终导致多级技术支持呼叫中心的出现。没有如此深度的支持,当终端用户遇到一个工程师直接使用的 bug 数据库时,大家都会不知所措:终端用户和工程师都无法获得解决问题的信息。

这也正是主流媒体和大众人群谈到 Steve Jobs 的死滔滔不绝,相比之下,而对 Dennis Ritchie 的死乏人问津的原因:Steve 的影响力能被大多数人所看见,而 Dennis 的影响力层次更深。一方面,我能够想象,如果没有 Jobs 及其启发的天才,计算世界将会怎样:可能没那么闪亮,略显暗淡,更加中规中矩。但往深处说,我们的设备仍能照常运转,做同样的事情。另一方面,我无法想象,如果没有 Ritchie 及其启发的天才,计算世界将会怎样。在80年代中期,Ritchie 的影响力已经建立,而且他做的大多是前无古人的事情。

最后,同样重要的是,这也是我们的专利系统失败的原因:科技在隐藏自身复杂性方面表现卓越,监管和运营专利系统的人们很难意识到自己在监管和运营专利系统。这最终导致了避重就轻的无用功:就好比常见的有关核电站的会议讨论最终沦为电站车棚涂料颜色的讨论,有关现代计算系统的专利讨论最终沦为屏幕大小和图标顺序的讨论,因为在这两种情况下,这些是参与者唯一有能力讨论的东西,尽管它们和所讨论的整个系统的实际功能风马牛不相及。

Dennis MacAlistair Ritchie​ 教会我们什么?

UNIX ,是一个强大的多用户、多任务操作系统,支持多种处理器架构。UNXI 是这样发展而来的,当时 UNIX 开发者之一的 Ken Thompson 开发了一个叫 Space Travel 的游戏,在 MULTICS 上运行后他发现这个游戏速度很慢,价格昂贵,当时要花75美金来运行,那时候的75美金是一笔不小的数目,高昂的价格使电脑爱好者无法对之感兴趣。因此丹尼斯及汤普森就一起努力,为爱好者们创建他们的天堂,一个可以测试小程序,分享结果的地方。他原本是学物理和数学出生身,却在正确的时间爱上了计算机科学。他们所创立的 UNIX 系统最特别最关键的理念就是“分享”。那么,我们从这位计算机巨人身上能学到些什么呢?

首先:要对你所做的事有兴趣。他们的初衷并非为了挣钱,事实上刚开始是为了省钱,或者将他们的游戏装到一个更省钱的机子里边。

第二:跳出舒适区工作非常有必要。丹尼斯是一个物理学家和数学家,但是,他却成了最具传奇的程序员。很显然,他的专业背景为他研发出C语言或者 UNIX 起了很大帮助,正如 Dennis Ritchie 所言:丹尼斯不惧工作在一个陌生的领域里,如果丹尼斯花了数十年的时间在晦涩的数学上,或许 UNIX 就会胎死腹中。

第三:要有创新思维。丹尼斯在贝尔实验室是幸运的,那里资金充足,不缺员工,他才有条件与他得朋友按照自己的时间安排来研发他们想要的东西。

最后:要懂得分享。现在许多企业都喜欢保密,将自己的核心技术藏匿起来,但这在我看来都是不成功的,他们的思想与态度都是不利于公司发展的。

可以说现今世界上最重要的软件是 UNIX,之所以重要,是因为它是开放的,任何人都可用。很多人可能会说开放就等于无利可图,在我看来这样的人最悲观最愚蠢。

丹尼斯还教会我们,计算机世界不是什么深不可测的世界。虽然我们任何人也许都不会达到他和贝尔/AT&T的成就,尤其是考虑到他们的出身背景以及信息时代的起源,但是这不重要,毕竟,我们这些年来从 UNIX 源代码中学到了许多东西:“你不需要了解它”,只需要以它为基础,创造出更有价值的东西。