C语言之父访谈:C语言的成功很出乎意料

开发 前端
近日,“日本奖”基金会在美国举行了2011年度“日本奖”的颁奖仪式。Unix之父Dennis Ritchie荣获“信息与通讯奖“。IEEE Spectrum资深新闻编辑Samuel K. Moore为此专访了Dennis Ritchie,下面是对本次采访内容的编译。

 

[[31063]]

Unix之父Dennis Ritchie“日本奖”基金会于今年1月宣布了2011年度“日本奖”获奖名单,Dennis Ritchie和Ken Thompson因在Unix操作系统开发中所作出的贡献,而荣获“信息与通讯奖”;Tadamitsu Kishimoto和Toshio Hirano则因为发现白细胞介素6(interleukin-6)而获得“生物科学与医药科学奖”。

 

该颁奖仪式往年通常在日本举行,但由于今年日本发生地震和海啸,3月17日,该基金会宣布该颁奖仪式改在美国举行。5月19日,该颁奖仪式在位于新泽西州Murray Hill区的贝尔实验室总部举行。Ritchie和Thompson曾在这个实验室工作并开发了Unix操作系统,现在该实验室是法国通信公司Alcatel-Lucent的一部分。Thompson现任谷歌高级工程师,Ritchie仍在贝尔实验室工作,是“退休研究员中的显要成员”。除了开发了Unix,Ritchie还发明了C编程语言。

IEEE Spectrum资深新闻编辑Samuel K. Moore参加了本次颁奖仪式,并专访了Ritchie。

IEEE Spectrum:你同时发明了Unix和C,你更喜欢哪一个呢?

Dennis Ritchie:很显然,C语言带来了丰厚的利润,由我和Brian Kernighan合著的《The C Programming Language》一书仍在出版和销售。Unix正在不断壮大,同时C语言至今仍在使用。从某种意义上,C语言更多出自我手,它由Ken发明的B语言发展而来,但却经历了很大的进化。虽然我曾和很多人谈过此语言,但C语言所有的变化都归根于我。但对于Unix的进化,很多人都做出了贡献。

IEEE Spectrum:用你的话来说,“C语言既古怪又有缺陷,却取得了巨大成功”,如果你有机会重新设计的话,它将会有什么不同?

Dennis Ritchie:需要改很多小地方,但我不想逐一列出了。其中一些在标准化过程中已经改正。但是原设计中也有很多内在的一致性(注:指不太好改),比如,内部类型系统的运作方式。并不总是那么易用。例如,Null结尾数组也就是字符串,是一个以Null结尾的字符数组。人们常常抱怨这种设计容易使人犯各种各样的错误,要是改成字符串是个计数然后放字符之类的设计就好了。可事实上,语言的内部基本机制决定了字符串就是数组,没有地方放计数,即使很容易犯错。

IEEE Spectrum:Unix不仅延续了下来,还占领了计算机世界。对于Unix的现代化身Linux,你如何看待?

Dennis Ritchie:我认为它很成功。我不再评论它细微的变化。虽然它并没有通过相同的方法获得批准,也没有遵循相同的标准,但我认为从本质来说,Linux是Unix新的实现形式。所以从这个意见上说,它做得很好,并将做得更好,为此我很高兴。

IEEE Spectrum:你的网站上有一篇1976年写的很难懂的备忘录:“提议对Unix进行可移植性实验”。它代表了把Unix当作一个更普遍的计算机平台的新思考方式,或许甚至考虑把它当作操作系统,对你来说,它的意义很重要吧?

Dennis Ritchie:当时我们正在移值Unix,我不得不很艰辛地寻找其他任何系统在移值中的参考资料。我发现了一些,但他们却没起到任何作用。所以我和Steve Johnson在实现Unix的移植性上做出了特殊的贡献。Ken对内核做了大量的修改,从而使实现移植性成为可能,但他当时正打算离开,去澳大利亚公休,所以实际的移植性实现工作都是我和Steve做的。

IEEE Spectrum:到1970年代后期,AT&T已经拥有使互联网诞生的一切要素。Unix及其所有工具和服务,比如电子邮件,都已经有了,运行CP/M的个人电脑也比较常见。AT&T还有ISDN技术——我们本来可以跳过调制解调器/窄带网络时代的,应该在1985年而不是1985年就出现万维网(Web)了。你是否觉得错失了一个大机遇?贝尔实验室当时有人预见到世界的这一图景吗?

Dennis Ritchie: AT&T的思维定势基本上是以连接为中心的。长时间连接,就像电话那样。分组交换对他们没意义。AT&T在早期互联网时代有太多机会被视而不见了。

IEEE Spectrum:Unix的最初目的是想作为一个电话交换机的平台,是吗?

Dennis Ritchie:Ken最初的想法是计划写一个操作系统。他开始后,我也很早便加入了。除了做了一些新的、很酷的东西后,真正引导我们的是我们的“自私”——去开发一些可以使我们的生活变得更轻松的工具:“我喜欢用相应工具去做相应的事。对于一件很困难的事,我常思考我可以开发什么样的工具,让它实现起来更简单呢?”

IEEE Spectrum:后来你都开发了哪些诸如此类的工具呢?

Dennis Ritchie:有很多。比如Brian Kernighan开发的一种小语言。我们都喜欢排版和文档——这是一种突发奇想,你可以写一种语言去描述图片、线条,然后用它来绘制图表及有机分子图。Unix使这一切都很简单。

IEEE Spectrum:Unix实际应用里你最喜欢哪个?

Dennis Ritchie:Kindle基于Linux,真酷啊。智能手机之类的也是。真让人惊喜。

【编辑推荐】

  1. 敏捷教练都该下课——Fred George访谈录
  2. 加速程序开发 Python整合C语言模块
  3. Python语言如何在C语言中实现操作
  4. Python编程语言比C语言编程好用的理由
  5. IT公司中最流行的10种编程语言
责任编辑:陈贻新 来源: CSDN
相关推荐

2014-06-18 09:32:30

编程语言Caml

2020-07-29 17:15:19

Java人脸识别人工智能

2021-01-13 10:52:29

C语言Linux计算机领域

2011-10-19 13:41:02

JavaC语言丹尼斯·里奇

2011-10-19 13:38:41

Java

2011-10-20 13:09:19

JavaC

2010-01-14 10:34:02

C++语言

2017-11-27 11:08:33

编程C语言代码

2011-10-14 19:58:04

C语言

2011-10-13 10:35:39

C语言

2011-11-07 09:17:10

C语言

2011-10-17 10:24:33

C语言

2020-04-01 14:51:03

语言RubyJava

2011-06-29 09:38:13

电子书平板电脑Kindle

2021-05-27 08:47:16

C语言C语言程序开发

2022-03-28 13:34:26

Go泛型部署泛型

2020-11-24 09:55:37

编程语言C ++Vasa

2011-10-17 09:12:32

2011-10-27 15:56:11

C语言之父

2010-01-11 11:09:10

C++语法
点赞
收藏

51CTO技术栈公众号