本文发表在 rolia.net 枫下论坛采访Dennis M. Ritchie (丹尼斯?里奇) -- By Manuel Benet
(翻译:江雄, 译着玩的,有错请指正。:)
有的人因为改变历史而出名,也有的人是因为创造历史。Dennis Ritchie就属于这种人。当我们中大多数人还在学走路的时候,他开发出使用最为广泛的C语言。这个对人类的贡献勿需多言。
这还远不够。Dennis Ritchie和Ken Thompson开发了Unix操作系统,真正意义上的“操作系统”。没错,他创造了Unix。
他在计算机和操作系统上的工作没有停止。他领导的研究人员开发出了Plan 9和Inferno系统。
他的工作得到了无数计算机组织的承认:1974年因系统和语言方面的杰出论文获得ACM奖章;IEEE Emmanuel Piore奖章(1982),Bell实验室高级成员(1983);ACM图灵奖(1983);NEC C&C基金奖(1989); IEEE Hamming奖章(1990)等等。
现在,Dennis M. Ritchie是新泽西州Murray Hill的贝尔实验室/朗讯科技的计算机科学研究中心、系统软件研究部主任。
LF(采访者): 象孩子们希望成为超人一样,你是全世界许多C程序员和Unix爱好者的偶像。被成千上万Unix和C程序员崇拜是什么感觉?如果没有Unix或者C的话,完全无法想象现在我们的世界会是什么样子。当你创造C语言并开始Unix工作的时候,你想到过它会成为计算机科学的“未来”吗?
Dennis: 这两个问题差不多,也是人们常常问到的。当然我和同事们受到的奖励和评价是令人愉快的,我们的确感觉到我们协助创造了一些真正有意义的东西。但我们真的没有料到它成其为“未来”,甚至没有意识到我们工作的最后影响。它源于“让我们做点有用的事”同时帮帮其它参与者这样的思想。
记住这点很重要:虽然整个Unix和C或者C++很重要,计算机科技和真正产品的天地更加广阔。无论在编程语言的学术研究方向上还是富有的软件领域都是如此。
LF: 如果说Unix是过去和现在的操作系统,C当之无愧地可以称为过去和现在的编程语言,尽管也出现了很多面向对象的语言。对C++、Java以及C和C++程序员之间常常出现的激烈争论你怎么看?
Dennis: C++从C中获得很多东西,因为在C++之前C就被相当广泛接受,C++可以把C作为构造新语言的基础及其编译器的工具。C(令人羡慕而又招人怨恨地)表现为一种可移植的汇编语言,C++试图将它提升到面向对象的层次,成为更抽象的编程方法。(根据最近出现的标准)这两者都显得过于装饰性,堆积了不少小玩意儿。它们体现出一种实用主义,试图理解确实需要的东西。Java则明显是C++的后代,立即除去了C中和指针有关的东西,加进机器无关的目标码的想法(并非很新颖,但很合理)。现在它陷入Sun和Microsoft之间的较量中,(当然仍然存在装饰性强的问题),很难说它会怎么发展。
LF: 提个假设性的问题:以现在的眼光来看,有了这么多年C编程的经验,如果你不得不重新设计C,你会有什么不同的考虑吗?
Dennis: 设法(如果时间允许的话)坚持在ANSI/ISO标准中存在的一些东西:函数形参类型的完整说明,即1989年C标准中称作函数原型的东西。还有很多小细节显得过于零乱。例如,static关键字因被用于好几种目的而意思含混。对于语言声明部份的文法我还不很明确。在语言声明中使用的文法模仿了变量声明的做法。这引起了很多批评,但这样做还是有一定道理的。
LF: 当C语言建立和完善地定义出来时,操作系统还在不断演化之中。更高速和更便宜的硬件也带来一些新的想法。在操作系统基础设计中的关键因素是什么?特别地,你对微内核和一体化设计方法持什么看法?
Dennis: 我认为这方面并非一个很有意义的问题。我确实很倾向于在Unix(包括Linux)、Plan 9、Inferno中为应用程序提供的结构化、公用的名字空间和资源访问机制。在我看来,微内核的想法在实际中并不重要,至少对通用目的的操作系统基础是这样。实际上,微内核常常是为在其之上的宏观系统服务的。它可以是系统内部结构中有用的工具,但它本身并不能独立存在。当然(事情复杂起来了),也有些情形简单操作系统会用于小的工具设备,而不是一般性的用途,无论是桌面系统或者大型机。
LF: UNIX现在已经是有很长历史的操作系统。它很多年前就出现了,打那时起,网络、硬件、服务和应用程序的能力和要求都起了巨大变化。面对当前和以后近期的用户需求,Unix眼下的局限性或弱点是什么?
Dennis: 从基本系统API(系统调用)上看,没有本质的、技术上的局限性。当然在商业/政治问题上有很大的问题,表现为不同Unix商业卖主之间和几种“免费”的Unix(包括Linux和BSD)之间的明争暗斗。
LF: 最近人们对千年虫问题和由此产生的Internet崩溃的可能非常关心。你觉得一些专家的这样的天命预言有根据吗?
Dennis: 对此没什么好的见解,真的。在1999年12月31日23:59我不会在坐飞机,但因为我任何新年的时候附近都没有飞机,这实际上和千年虫没有关系。
LF: 我们无法不提到Inferno,你现在工作中的操作系统。开发这样一个全新的操作系统,以及它自身的Limbo语言主要是出于什么样的原因?并且为什么有了JavaVM/Java,还要Inferno/Limbo?换句话说,Inferno要提供Java所缺少的什么东西?
Dennis: Inferno是Phil Winterbottom和Rob Pike的创造物,它正好在Java出现之前开始。Java也有它的前身(内部名称叫Oak),但酝酿Inferno的时候还没有理由相信会出现Java热,并且尽管我们也知道Java,但它毕竟还未成型。我想这是一个奇怪的汇聚,一个古老的技术上的想法(一种用可移植虚拟机实现的语言)同时被Sun和我们复活了。也就是说,Inferno的想法源于操作系统技术中更有趣的一些东西(一种可以在原始、廉价、最低限度的硬件上工作的语言和系统能同样在Windows或Unix或Linux上作为应用程序运行)。同时Sun由于和巨大膨胀的WWW/浏览器市场挂钩更加紧密,也应该获得尊敬。
LF: 在我们看来,Limbo作为一种编程语言的未来和Inferno的扩充和广泛化密不可分。把Limbo移植到其它操作系统有没有意义呢?会不会它的设计和目标太依赖于Inferno了呢?
Dennis: 技术上,Limbo并不特别地依赖Inferno。现实中,它的确是依赖的,很简单,因为一个新的语言总是依赖于使用它的环境的。
LF: 从你在贝尔实验室的经历看来,你似乎每时每刻都是在为你所喜爱的项目工作。我假定对Inferno也是如此。那么难道我认为你非常喜欢Unix和C设计会不对了吗?
Dennis: 我确实喜欢我在贝尔实验室的工作(现在和以后)。
LF: 我不可避免的要把你和所有为非盈利项目工作的人作个比较,因为他们也喜欢如此----虽然我相信如果有人为他们的免费工作支付薪水他们也不会拒绝。如果你不是在贝尔实验室,你会加入Linux或者类似的项目中吗?根据你多年的、在创新性的研究室的经验你对这些人怎么看?由于我们的杂志主要面向Linux用户,我不会忘了问个Linux的问题。首先,你对Linux的发展动力、以及很多公司开始为它开发软件的决定(例如贝尔实验室,Inferno也移植到了Linux上)持什么样的观点?
Dennis: 让我一起来回答这些问题。我认为Linux现象是可喜的,因为它从Unix提供的基础中吸收了这么多东西。尽管有种种BSD系统和工作站、大型机厂商的正式产品,Linux可说是Unix直接派生出来的最健康的一种。当然,我不得不注意到,“免费源码”的Unix派生世界看来和商业领域里发生的和正在发生的一样,受着分裂和冲突的折磨。
LF: 关于Linux的重大问题:你曾用过Linux吗?如果用过,你对它意见如何?
Dennis: 恐怕我得承认,我实际上没有真正用过它----即依靠它来做我每天的工作。我自己的计算环境是Plan 9、Windows和Inferno的奇怪混合体。我非常钦佩Linux的发展和活力。偶尔人们也问我几乎同样的问题,但是出于一种希望得到这样的回答的姿态,希望我对Linux和其它传统公司的Unix的竞争表现出嫉妒或愤怒。一点也不。这两者我看都是Ken和我以及其它很多人很多年前产生的想法的继续。
LF: 还有微软...你对该公司现在在桌面计算机上的垄断地位怎么看?过去科幻电影描绘了一幅人类生活被巨型机器所控制的图画,现实则是完全不同的另一种画面。计算机,在很多方面都被看作是一种简单设备。你为程序员着想开发了一个操作系统,在科幻电影的场景中生活过,想象到过计算机的实际情形,你怎么预见未来的计算机时代呢?你认为Inferno和Linux在其中处于什么样的位置?
Dennis: 这是两个问题。微软的确对桌面系统有一定的垄断,但那不是世上计算机的唯一应用领域。提供软件的其它途径(如Linux),以及那些没有产生象Windows或浏览器大战那样火爆的新闻的计算机领域(如高性能计算、高可靠性计算、极小型计算)都会有一席之地。我相信Linux和Inferno都会兴旺的。更多精彩文章及讨论,请光临枫下论坛 rolia.net
(翻译:江雄, 译着玩的,有错请指正。:)
有的人因为改变历史而出名,也有的人是因为创造历史。Dennis Ritchie就属于这种人。当我们中大多数人还在学走路的时候,他开发出使用最为广泛的C语言。这个对人类的贡献勿需多言。
这还远不够。Dennis Ritchie和Ken Thompson开发了Unix操作系统,真正意义上的“操作系统”。没错,他创造了Unix。
他在计算机和操作系统上的工作没有停止。他领导的研究人员开发出了Plan 9和Inferno系统。
他的工作得到了无数计算机组织的承认:1974年因系统和语言方面的杰出论文获得ACM奖章;IEEE Emmanuel Piore奖章(1982),Bell实验室高级成员(1983);ACM图灵奖(1983);NEC C&C基金奖(1989); IEEE Hamming奖章(1990)等等。
现在,Dennis M. Ritchie是新泽西州Murray Hill的贝尔实验室/朗讯科技的计算机科学研究中心、系统软件研究部主任。
LF(采访者): 象孩子们希望成为超人一样,你是全世界许多C程序员和Unix爱好者的偶像。被成千上万Unix和C程序员崇拜是什么感觉?如果没有Unix或者C的话,完全无法想象现在我们的世界会是什么样子。当你创造C语言并开始Unix工作的时候,你想到过它会成为计算机科学的“未来”吗?
Dennis: 这两个问题差不多,也是人们常常问到的。当然我和同事们受到的奖励和评价是令人愉快的,我们的确感觉到我们协助创造了一些真正有意义的东西。但我们真的没有料到它成其为“未来”,甚至没有意识到我们工作的最后影响。它源于“让我们做点有用的事”同时帮帮其它参与者这样的思想。
记住这点很重要:虽然整个Unix和C或者C++很重要,计算机科技和真正产品的天地更加广阔。无论在编程语言的学术研究方向上还是富有的软件领域都是如此。
LF: 如果说Unix是过去和现在的操作系统,C当之无愧地可以称为过去和现在的编程语言,尽管也出现了很多面向对象的语言。对C++、Java以及C和C++程序员之间常常出现的激烈争论你怎么看?
Dennis: C++从C中获得很多东西,因为在C++之前C就被相当广泛接受,C++可以把C作为构造新语言的基础及其编译器的工具。C(令人羡慕而又招人怨恨地)表现为一种可移植的汇编语言,C++试图将它提升到面向对象的层次,成为更抽象的编程方法。(根据最近出现的标准)这两者都显得过于装饰性,堆积了不少小玩意儿。它们体现出一种实用主义,试图理解确实需要的东西。Java则明显是C++的后代,立即除去了C中和指针有关的东西,加进机器无关的目标码的想法(并非很新颖,但很合理)。现在它陷入Sun和Microsoft之间的较量中,(当然仍然存在装饰性强的问题),很难说它会怎么发展。
LF: 提个假设性的问题:以现在的眼光来看,有了这么多年C编程的经验,如果你不得不重新设计C,你会有什么不同的考虑吗?
Dennis: 设法(如果时间允许的话)坚持在ANSI/ISO标准中存在的一些东西:函数形参类型的完整说明,即1989年C标准中称作函数原型的东西。还有很多小细节显得过于零乱。例如,static关键字因被用于好几种目的而意思含混。对于语言声明部份的文法我还不很明确。在语言声明中使用的文法模仿了变量声明的做法。这引起了很多批评,但这样做还是有一定道理的。
LF: 当C语言建立和完善地定义出来时,操作系统还在不断演化之中。更高速和更便宜的硬件也带来一些新的想法。在操作系统基础设计中的关键因素是什么?特别地,你对微内核和一体化设计方法持什么看法?
Dennis: 我认为这方面并非一个很有意义的问题。我确实很倾向于在Unix(包括Linux)、Plan 9、Inferno中为应用程序提供的结构化、公用的名字空间和资源访问机制。在我看来,微内核的想法在实际中并不重要,至少对通用目的的操作系统基础是这样。实际上,微内核常常是为在其之上的宏观系统服务的。它可以是系统内部结构中有用的工具,但它本身并不能独立存在。当然(事情复杂起来了),也有些情形简单操作系统会用于小的工具设备,而不是一般性的用途,无论是桌面系统或者大型机。
LF: UNIX现在已经是有很长历史的操作系统。它很多年前就出现了,打那时起,网络、硬件、服务和应用程序的能力和要求都起了巨大变化。面对当前和以后近期的用户需求,Unix眼下的局限性或弱点是什么?
Dennis: 从基本系统API(系统调用)上看,没有本质的、技术上的局限性。当然在商业/政治问题上有很大的问题,表现为不同Unix商业卖主之间和几种“免费”的Unix(包括Linux和BSD)之间的明争暗斗。
LF: 最近人们对千年虫问题和由此产生的Internet崩溃的可能非常关心。你觉得一些专家的这样的天命预言有根据吗?
Dennis: 对此没什么好的见解,真的。在1999年12月31日23:59我不会在坐飞机,但因为我任何新年的时候附近都没有飞机,这实际上和千年虫没有关系。
LF: 我们无法不提到Inferno,你现在工作中的操作系统。开发这样一个全新的操作系统,以及它自身的Limbo语言主要是出于什么样的原因?并且为什么有了JavaVM/Java,还要Inferno/Limbo?换句话说,Inferno要提供Java所缺少的什么东西?
Dennis: Inferno是Phil Winterbottom和Rob Pike的创造物,它正好在Java出现之前开始。Java也有它的前身(内部名称叫Oak),但酝酿Inferno的时候还没有理由相信会出现Java热,并且尽管我们也知道Java,但它毕竟还未成型。我想这是一个奇怪的汇聚,一个古老的技术上的想法(一种用可移植虚拟机实现的语言)同时被Sun和我们复活了。也就是说,Inferno的想法源于操作系统技术中更有趣的一些东西(一种可以在原始、廉价、最低限度的硬件上工作的语言和系统能同样在Windows或Unix或Linux上作为应用程序运行)。同时Sun由于和巨大膨胀的WWW/浏览器市场挂钩更加紧密,也应该获得尊敬。
LF: 在我们看来,Limbo作为一种编程语言的未来和Inferno的扩充和广泛化密不可分。把Limbo移植到其它操作系统有没有意义呢?会不会它的设计和目标太依赖于Inferno了呢?
Dennis: 技术上,Limbo并不特别地依赖Inferno。现实中,它的确是依赖的,很简单,因为一个新的语言总是依赖于使用它的环境的。
LF: 从你在贝尔实验室的经历看来,你似乎每时每刻都是在为你所喜爱的项目工作。我假定对Inferno也是如此。那么难道我认为你非常喜欢Unix和C设计会不对了吗?
Dennis: 我确实喜欢我在贝尔实验室的工作(现在和以后)。
LF: 我不可避免的要把你和所有为非盈利项目工作的人作个比较,因为他们也喜欢如此----虽然我相信如果有人为他们的免费工作支付薪水他们也不会拒绝。如果你不是在贝尔实验室,你会加入Linux或者类似的项目中吗?根据你多年的、在创新性的研究室的经验你对这些人怎么看?由于我们的杂志主要面向Linux用户,我不会忘了问个Linux的问题。首先,你对Linux的发展动力、以及很多公司开始为它开发软件的决定(例如贝尔实验室,Inferno也移植到了Linux上)持什么样的观点?
Dennis: 让我一起来回答这些问题。我认为Linux现象是可喜的,因为它从Unix提供的基础中吸收了这么多东西。尽管有种种BSD系统和工作站、大型机厂商的正式产品,Linux可说是Unix直接派生出来的最健康的一种。当然,我不得不注意到,“免费源码”的Unix派生世界看来和商业领域里发生的和正在发生的一样,受着分裂和冲突的折磨。
LF: 关于Linux的重大问题:你曾用过Linux吗?如果用过,你对它意见如何?
Dennis: 恐怕我得承认,我实际上没有真正用过它----即依靠它来做我每天的工作。我自己的计算环境是Plan 9、Windows和Inferno的奇怪混合体。我非常钦佩Linux的发展和活力。偶尔人们也问我几乎同样的问题,但是出于一种希望得到这样的回答的姿态,希望我对Linux和其它传统公司的Unix的竞争表现出嫉妒或愤怒。一点也不。这两者我看都是Ken和我以及其它很多人很多年前产生的想法的继续。
LF: 还有微软...你对该公司现在在桌面计算机上的垄断地位怎么看?过去科幻电影描绘了一幅人类生活被巨型机器所控制的图画,现实则是完全不同的另一种画面。计算机,在很多方面都被看作是一种简单设备。你为程序员着想开发了一个操作系统,在科幻电影的场景中生活过,想象到过计算机的实际情形,你怎么预见未来的计算机时代呢?你认为Inferno和Linux在其中处于什么样的位置?
Dennis: 这是两个问题。微软的确对桌面系统有一定的垄断,但那不是世上计算机的唯一应用领域。提供软件的其它途径(如Linux),以及那些没有产生象Windows或浏览器大战那样火爆的新闻的计算机领域(如高性能计算、高可靠性计算、极小型计算)都会有一席之地。我相信Linux和Inferno都会兴旺的。更多精彩文章及讨论,请光临枫下论坛 rolia.net