Unix今天会发生吗?

2022-02-19 00:33:08

受人喜爱的Unix先驱布赖恩·克尼根即将迎来80岁生日,他在今年的澳大利亚Linux大会上特别亮相。在传统的1月份活动上——这几乎是连续第二年举行——克尼根回忆起了20世纪70年代和“贝尔实验室的Unix早期”,总是小心翼翼地感谢其他人以及他之前的开发人员的贡献。

Kernighan还利用这个机会反思了从Unix操作系统的历史、从C编程语言,甚至从微软进军Unix的过程中吸取的教训——最终提出了一个尖锐的问题:类似Unix的现象是否还会再次发生。

最后,Kernighan还展望了未来,并真诚地希望这次会谈“也许能教会我们如何有效地进行软件开发,也许还能教会我们如何管理人员和流程,使其尽可能高效。”

据会议主席迈尔斯·古德休(Miles Goodhew)简要介绍,年轻的布莱恩·克尼根(Brian Kernighan)于1969年从普林斯顿大学获得博士学位,然后在贝尔实验室(Bell Labs)传奇的计算科学研究中心工作到2000年。古德修开玩笑说,克尼根现在是普林斯顿大学的计算机科学教授,“他在那里写短程序和长书。”

克尼根在演讲开始时列举了实验室最重要的发明——晶体管、激光光纤,并指出实验室至少有八位诺贝尔奖获得者。(或多达12个,“取决于你如何计算它们。”)

实验室有一个有利于研究的环境。“人们会聚集在走廊里谈论想法,”克尼根曾在2018年告诉一位采访者。“人们会在午餐时见面,谈论类似的事情。”这最终导致了一些有用但又出人意料的发展。虽然Unix的第一个版本是用汇编语言编写的,但到了第四个版本,丹尼斯·里奇已经开发了更易于阅读的“高级”语言C,并用它来编写整个操作系统的代码。

这里有一个教训要吸取。Kernighan告诉他的听众,里奇正在借鉴他在早期名为MULTICS的操作系统上的经验,该系统由贝尔实验室、通用电气和麻省理工学院共同开发。

Unix的几个重要特性——不仅仅是它的分层文件系统和可编程外壳,但事实上,它是用一种易读的“高级”语言编写的——“可以说它来自MULTICS。它不像Unix是从无到有地冒出来的。MULTICS有大量好的想法,并且很好地展示了其中一些想法的可行性,这些想法只是以某种方式进行了修改和简化,并在Unix中使用。”

另一方面,Unix的“管道”功能——将一个程序的输出用作另一个程序的输入的能力——似乎是Unix独有的,并最终使操作系统获得了一套强大的工具(以及Unix对正则表达式模式匹配的支持)。因此,信用是应得的。

Kernighan的一张幻灯片将Unix描述为“遵循摩尔定律的曲线”,他指出,不断出现的硬件成本更低的循环也为Unix操作系统创造了自然的受众。所以“技术进步推动了这一切。”

最终,Unix普及的一个关键因素是它的易移植性——这最终是由里奇的高级语言实现的。C语言导致了Kernighan记忆中的“应用程序爆炸”,包括编译器yacc和lex等与语言相关的工具。关键的是,它还被史蒂夫·约翰逊(Steve Johnson)的pcc用于“可移植C编译器”(portable C compiler),克尼根(Kernighan)认为这是一个“导致操作系统本身可移植性”的工具因为如果一个新系统可以运行C编译器,考虑到它可以编译Unix操作系统。

Unix“不是计划好的。这是一系列因素的意外组合!”

除此之外,正是操作系统的这种可移植性——以及它所有有用的工具——导致了它在新兴市场上被Sun Microsystems和MIPS(后来成为SGI)等公司的商业工作站所使用。

Kernighan回忆说,事实上,可移植性最终在20世纪80年代初将Unix引入IBM PC,甚至一家名为Microsoft的年轻公司也有自己的Unix版本Xenix。“在20世纪80年代的一段时间里,”微软是Unix操作系统的最大分销商。

“我一直在想,如果微软不是在DOS下起飞,而是在Unix下起飞,世界会是什么样子?谁知道会发生什么?”

Kernighan的下一张幻灯片名为“剩下的都是历史”,它引用了世界500强超级计算机中的100%、25强网站中的23个、世界100万强服务器中的96.3%以及所有云基础设施中的90%的说法。

但可以说更有趣的是它是如何发生的。Kernighan强调,回顾早期,Unix“不是计划好的。它是一系列因素的意外组合!”

在他列出的众多因素中,最重要的是“两个非常有创造力的人”,肯·汤普森和丹尼斯·里奇。Kernighan特别承认他们作为开发人员的“特别好的品味”,发现“最小”的机制仍然干净利落地完成了很多工作。(克尼根后来称赞了他们“发现共性”的能力。)

他补充说,贝尔实验室还“以各种方式提供了一个很好的支持阵容”,称赞其管理层,他记得这句话“在技术上很有天赋,而且通常非常温和。它不是‘你必须这么做,每个季度都告诉我们你做了什么’。它更像是‘哦,天哪,你在这么做吗?听起来真的很有趣!只要看起来不错,你为什么不继续这么做呢?&39

或者,正如Kernighan在2018年告诉一位采访者的那样,“这是一个很棒的地方,因为有很多非常优秀的人在做非常有趣的事情,没有人告诉你该做什么……”当他回顾50年的Unix时,Kernighan回忆道贝尔实验室“对这类事情特别有兴趣”但他也记得,这是他今天很少看到的东西。“环境本身令人难以置信、合作、合议,而且非常有趣。”

这让Kernighan看了他最后的一张幻灯片,问道:Unix会再次发生吗?

“首先,显然总是有好人……”此外,克尼根补充道,“尽管有迪尔伯特漫画,但也有好的管理者。”他认为今天的硬件“非常便宜”,还有很多免费的开源软件。

但是Kernighan也看到了另一种类似Unix的现象的可能性。“在这些不受约束的环境中,没有那么多人被简单地放任,让人们去做他们想做的事情,这些事情可能有趣或有用。在工业界很难做到这一点,因为事情往往是短期的。在大学里很难做到这一点,因为——钱。但原则上,这可能会发生。”再一次,为了某件事。"

然后Kernighan在演讲结束时引用了已故的Dennis Ritchie的一句漂亮的话,他在1984年曾说过Unix不仅仅是为了构建一个良好的编程环境,“但这是一个可以形成奖学金的系统。我们从经验中知道,公共计算的本质不仅仅是将程序输入终端,而不是键盘打孔,而是鼓励密切沟通。”

Kernighan将这一希望总结为提供了一个社区,“一个开发软件的温暖而受欢迎的地方”,并记住,在Unix早期,人们“享受他们的工作,享受与他们一起工作的人”,创造了一种良性循环,为每个人创造了一个高效的环境。

“因此,我认为我们今天想要做的是同样的事情,我们有一种社区意识,我们正在共同努力,尝试做一些事情,以某种方式让世界变得更好。”