纪念Frederick P. Brooks:计算机科学巨匠的技术遗产

本文回顾了计算机科学先驱Frederick P. Brooks的生平与贡献,涵盖他在IBM 7030 Harvest协处理器设计、S/360架构开发、OS/360系统构建以及《人月神话》软件工程思想等方面的技术成就,展现了计算机发展史上的重要技术里程碑。

纪念Frederick P. Brooks, Jr. — 个人回忆

2022年11月18日

Fred Brooks于11月17日去世。他是计算机科学领域的巨匠,也是我们许多人的巨大灵感来源。

Brooks因众多成就而闻名。许多人最熟悉他是《人月神话》的作者,这本书汇集了他对软件工程及其困难根源的思考。他的一些方案在今天看来可能过时——如今没人会每晚将文档打印在缩微胶片上分发给开发人员——但他对开发问题的观察至今仍然准确。但他的贡献远不止于此。

他的职业生涯始于IBM。早期任务之一是前往NSA工作;回到IBM后,他参与了Harvest的设计,这是IBM 7030的字符处理辅助处理器。(当我上他的计算机架构课程时,我学会了识别哪些特性有助于构建优秀的密码分析机器。当然,他当时处理的是字符密码,但令人惊讶的是,这些特性中的许多对于攻击现代密码仍然有用。)

他还领导了一个失败的项目,即IBM 8000系列。项目失败后他试图从IBM辞职;Watson回复道:“我刚花十亿美元教育了你;我现在不会让你走!”

随后他领导了设计和构建IBM S/360系列大型机的项目。这在当时是一个大胆的概念——五种不同型号,价格和性能特征差异巨大,但全部共享(基本上)相同的指令集。此外,该指令集是由架构定义的,而不是由布线偶然决定的。(趣闻:IBM 7094(我记得是7094而非7090)有一个用户发现的“存储零”指令。一些客户探索后发现它有效。工程师检查布线图确认后,IBM将其添加到手册中。)S/360架构有许多有趣的方面,但Brooks认为最重要的贡献之一是8位字节(以及由此而来的32位字)。

他继续管理开发OS/360的团队。他(和Watson)认为这是一个失败;他们都在思考原因,因为他同时管理了这两个项目。这促使他撰写了《人月神话》。

他离开IBM是因为感到被召唤去创立计算机科学系。这是他长久以来的愿望;他一直知道自己总有一天会教书。(Brooks虔诚信仰宗教。由于我不分享他的信仰,我无法恰当表述,因此不再赘述。但根据我的经验,他尊重他人的真诚信仰,即使他不同意。)

几年后我开始在Chapel Hill读研究生。尽管他是系主任,时间需求很高——他办公室里有一排开关控制的时钟,用于跟踪花在教学、研究、管理等方面的时间——他仍然教授很多课程。我上了他的四门课:软件工程(《人月神话》手稿是我们的教材!)、计算机架构、专业实践研讨会和教学研讨会。这么多年过去,我仍然依赖从他那里学到的许多知识。

某个春末,他问我暑假计划。“嗯,Brooks博士,我想教书。”(我以前从未教过书,但我知道自己想教,当时在那个系,博士生必须教一个学期的入门编程,并拥有完整的课堂控制权。我最终教了四次,因为我非常喜欢教学。)

Brooks婉拒了:“X教授的项目延迟了,夏季末有交付物;我需要你参与这个项目。”

“Brooks博士,您想给一个延迟的项目增加人力吗?”(如果你读过《人月神话》,你会知道这个引用——如果还没读过,你应该读一读。)

他笑了,告诉我这是特殊情况,我应该去做,秋季我可以获得任何想要的助教职位。他100%正确:这是特殊情况,他的格言不适用。

Brooks致力于教育和学生。在教师招聘和晋升方面,他总是在有组织的场合寻求研究生意见。他称这些会议为SPQR,教师是元老院。在我能想到的一个案例中,我怀疑学生意见严重影响甚至可能改变了结果。

他对我充满信心,即使在我低谷时期,可能拯救了我的职业生涯。在我奇特的研究生生涯中某个时刻,我需要休学一年。我收到了另一所大学的教职邀请,但Brooks怀疑——很可能正确——如果我离开,我就不会回来完成博士学位。他安排我在本系工作一年——我从博士生变成教职成员,然后又变回学生。这令人头晕目眩,起初我未能很好地适应教职身份,尤其是在着装方面。Brooks温和地评论说,很明显我仍然认为自己是个学生。他当然是对的,于是我升级了衣橱,甚至在教学日打领带。(我一直在上课日穿着更正式,直到疫情开始。也许某天我会恢复这个习惯……)

在Chapel Hill,他将注意力转向计算机图形学和蛋白质建模。他获得了一个剩余的远程操纵臂;想法是人们可以用它“抓住”原子并移动它们,并感受来自变化电荷场的力反馈。从这里开始,很自然地过渡到VR的一些早期工作。

再讲两个轶事我就结束。在系里获得第一批VAX计算机后不久,一位不理解实存和虚存区别的教授启动了大约10个大型程序的副本。机器抖动如此严重,以至于没人能完成任何工作,当然包括那位教授。我不再是正式系统管理员,但我仍有root密码。我向除一个副本外的所有程序发送了STOP信号,然后非常紧张地给那位教授和Brooks发了邮件。Brooks的回复很好地说明了他的管理哲学:“如果有人被委托root密码,他们不仅有权利,而且有责任在必要时使用它。”

我作为学生时与Brooks的最后一次重要互动是去找他讨论两个工作邀请,来自IBM Research和Bell Labs(不是Bell Labs Research;那是几年后的事)。他不会告诉我选择哪个;这不是他的风格,尽管他暗示Bell Labs可能更好。但他的建议我经常向学生重复:拿一张纸,分成两栏,尽可能客观地列出每个地方的优缺点。然后睡一觉,早上跟着直觉走。

Frederick P. Brooks, Jr.:愿他的记忆成为祝福。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计