而在关于众多计算机语言的激烈辩论中,始终处在中心位置的C语言作者Dennis却显得很平静。西班牙的一位大学生曾经问过他类似的问题: 如果 UNIX 被选为过去和当前的操作系统,尽管过去几年出现了一些面向对象的语言,毫无疑问C 也将被认为是“唯一的语言”。你怎么看待 C++ 和 Java,以及 C 和 C++ 程序员之间在 UseNet 上经常发生的激烈争论呢?
他说:C++ 的很大一部分得宜于 C。因为 C 早在 C++ 出现之前就已经具有了非常好的兼容性,所以 C++ 才可以采用 C 作为建构自身的基础并使用它来开发自己的编译器。C 被设计成为一种便携式汇编语言,对于这一特性人们褒贬不一,C++ 则试图把编程方法提高到面向对象这种更抽象的层次上来。从最近形成的标准来看,二者共同的缺点是:带有过多的装饰和附属物。同样的,它们都采用了相同的编程思想,都试图按照真正的需求来编写代码。Java 显然是 C++ 的改进版本。它砍掉了 C 中的指针操作部分,引入了生成独立于机器的目标文件这种编程思想(虽然这个思想并不是很新的,但是也许直到现在它才真正可行了)。既然 Sun 和 Microsoft 公司(它的产品同样的有过多的装饰附件)已经把 Java 作为它们之间竞争的工具,谁也难以预料事态将向何处发展。
图:Ken Thompson和 Dennis Ritchie 在PDP11 1971
问:您是怎样发明C语言的?发明的过程是什么样子的。它对您的生活和研究有什么影响吗?
D M R:公正地说,发明C语言的目的是:为了写编译器和语言设计,为了更易于编写UNIX操作系统程序,我们做的一个可以在小型计算机上使用的工具。Unix做的比较好,并且PC开始相当普遍,由于C语言在Unix上的很好地应用,使得用它来写应用程序和操作系统迅速增长起来。因此,对我来说,C语言的确非常重要。
问:您觉得C语言和C++有什么不同吗?
D M R:多年以来,C和C++,已经是两种不同的语言了;Stroustrup先生汲取了C语言语法和潜在的语义学中的许多东西,形成了C++语言。在一些交叉领域,标准委员会尽量使两种语言兼容。
问:您觉得计算机语言和我们人类的语言有什么不同呢?
D M R:计算机语言更加正式和明确,有统一的规则,当然,它们都是经过设计的。人类语言有语法,但相对来说不很正式,有些规则可以打破,当然,它们有不同的目的——为了同人交流而不是同机器交流。
人物印象
D M R先生的专业精神令人感动,近40年如一日,在他所从事的领域辛勤耕耘,而他的多项发明,包括C语言,Unix,也包括现在正在进行的Plan9,无论哪一项,在软件发展史上都有着举足轻重的地位,和他的伟大成就形成对照的是他的行事,态度低调,他的表达,象他的软件一样,简洁生动而准确。