很多人可能听说过 Dennis Ritchie 这个人。上世纪 60 年代末,他从哈佛大学应用数学系毕业并「子承父业」加入贝尔实验室,在那里度过了他的整个职业生涯。加入贝尔实验室不久,他就和 Ken Thompson 一起开发了 Unix 操作系统和经久不衰的 C 语言。Thompson 领导了系统的开发,Ritchie 则主导了 C 语言的创造。在 C 语言问世之后,Thompson 又用它重写了 Unix。1983 年,Dennis Ritchie 和 Ken Thompson 共同获得图灵奖。 半个世纪之后,Unix 已经成为构建数字世界大多数操作系统的基础,而 C 语言则成为世界上最受欢迎的编程语言之一。
Ken Thompson 和 Dennis Ritchie 虽然 Dennis Ritchie 已经于 2011 年去世,但贝尔实验室依然保留着他的个人主页。在这个页面上,Ritchie 用他特有的干巴巴的口吻对自己的计算科学求学生涯进行了介绍: 「我在哈佛大学读本科并进一步深造,我的本科专业是物理学,研究生专业是应用数学…… 我的博士论文(1968 年)关于函数的子递归层次(subrecursive hierarchies)。本科阶段的学习让我明白,以自己的才智还不足以成为一名物理学者,而往计算机方向发展似乎相当不错。研究生阶段的经历又让我清醒,自己的才智也不足以让我成为算法理论方面的专家。我自己更喜欢过程式语言,而不是函数式语言。」 且不论这些自我评价是否客观,Ritchie 选择的道路的确将他带到了一个让自己大放异彩的领域。 尽管 Ritchie 在计算机领域享有盛名,但鲜为人知的是,他的博士学位论文没有几个人亲眼见过,因为这份论文——遗失了。 没错,就是遗失了,既没有发表也没有被任何公开文献收录,甚至哈佛大学图书馆的馆藏目录和论文数据库中也找不到这篇论文。2011 年 Ritchie 去世的时候,他的妹妹 Lynn 仔细地翻阅了哈佛的馆藏记录和其他渠道,也没有找到一份副本。 功夫不负苦心人,最终,她从 Ritchie 导师的遗孀那里找到了一本。但由于缺少公开副本,在过去的半个世纪里,只有不到十几个人读过这篇论文。 为什么会出现这种情况? 在 Ritchie 的自我描述中,我们注意到,他并没有明确说明自己凭借 1968 年那篇论文拿到了博士学位。实际情况是:他的确没有拿到博士学位。 这中间出了什么状况?Ritchie 的研究生同窗、MIT 教授 Albert Meyer 给出了一个意想不到的答案。 因为不想付装订费,博士论文遗失了半个多世纪 Albert Meyer 回忆道: 「我从我们导师 Pat Fischer 那里听到的解释是,当时哈佛有一项规定:要想获得博士学位就得向学校图书馆提交一份装订好的论文,然后图书馆才会给你一份用来获得博士学位的证明。当时,Dennis 已经将论文提交给了论文评审委员会,而且得到了通过。他还手打了一份准备提交给图书馆,但图书馆却告诉他论文需要装订成册再提交。那时候,装订费不是一笔小数目…… 倒也不是贵到拿不出来那种,只是说所费不菲。据 Pat 所说,Dennis 当时的态度是:『如果哈佛图书馆想要一本装订好的论文,那他们应该自己掏钱,我是不会掏的!』很显然,他的确这么做了,也因此没拿到博士学位。」 所以,这位大佬之所以没有拿到博士论文,并不是论文本身有问题,而是因为「任性」,打死不交装订费! 经过多方打听,Lynn 证实了 Ritchie 的确没有提交装订版论文,也的确没有拿到哈佛的博士学位,但 Ritchie 的兄弟 John 认为,他之所以这么「任性」绝不仅仅是因为那点装订费:Ritchie 当时已经有了一份梦寐以求的工作——贝尔实验室研究员,而且他是那种不拘小节的人,「不会去关心生活中的一些细枝末节」。
Dennis Ritchie 遗失半个世纪的论文手稿首次公开。 和影印本一起公开的还有该论文的电子版。 论文地址:https://archive.computerhistory.org/resources/access/text/2020/05/102790971/Ritchie_dissertation.pdf 或许,这篇论文可以带我们一窥计算机科学发展的早期情况,了解当年的先驱人物所面临的挑战。此外,它还可以提醒我们在这条路上已经走了多远,以及技术在人的短暂一生中所发生的变化。 解码 Dennis Ritchie 的博士论文