整理 | 王启隆  王晓曼

出品 | 程序人生 (ID:coder _life)

Dennis Ritchie (丹尼斯·里奇)于 1941 年 9 月 9 日出生在美国纽约的布朗克斯维尔,2011 年 10 月 12 日逝世(享年 70 岁)。他于 1969 年和 Ken Thompson 一起创建了 B 语言;1972 年与 Brian Kernighan 一起创建了 C 编程语言;随后帮助开发 Multics 操作系统和 UNIX 操作系统。这些成就让丹尼斯获得了 1983 年的图灵奖,可以说,所有网络产品都是站在他的肩膀上诞生的。

图源:维基百科

在贝尔实验室工作期间,Dennis Ritchie 参与了 Multics 操作系统的开发,这是一个前所未有的多用户操作系统,可以同时运行多个程序。这个项目是贝尔实验室、麻省理工学院和通用电气的合资项目,但贝尔实验室在 1969 年退出了,因为设计流程太复杂了。

随后,他与 Ken Thompson 合作开发了 Unix 操作系统,并从 Multics 复杂设计的失败中吸取了教训。Dennis Ritchie 提出了 Unix 设计原则“保持简单,愚蠢”,这后来被称为 KISS 原则:Unix 由许多小程序组成,每个小程序只能执行一个功能。Unix 迅速在程序员中传播开来,到 20 世纪 80 年代,它已经成为主流操作系统,成为整个软件行业的基础。

我们这个时代最重要的操作系统——Windows、MacOS、iOS 和 Linux——都与 Unix 相关。

Unix 一开始是使用不通用的机器语言编写的,如果更换一台计算机,就必须重新编写。为了提高通用性和开发效率,丹尼斯·里奇发明了一种新的计算机语言,就是现在的 C 语言。C 语言本身是为 Unix 而构建的,这两者最初是不可分割的,直到 C 语言被更广泛地使用并成为今天主流编程语言的基础。

C 语言和 Unix 是黑客文化的基础,黑客文化是互联网的基础。换句话说,没有 Dennis Ritchie 就没有 C/Unix,没有 C/Unix 就没有今天的互联网。Unix 的付费版本并没有在 2021 的今天流行起来,但是 Unix 的免费版本(比如 Linux),则为今天除 Windows 之外的几乎所有操作系统(iOS、Android、WebOS、Bada 等)奠定了基础。

图源:维基百科

C 语言是丹尼斯·里奇在 1969 - 1973 年间开发的,它被认为是第一个真正意义上可移植的现代编程语言。自它诞生差不多近 50 年以来,它已经被移植到几乎每一个出现过的系统架构和操作系统上。因为它是一种命令的、编译的和程序化的编程语言,它允许语法变量作用域和递归,允许内存的底层访问,还有复杂的 I/O 和字符串操作功能,这种语言变得相当通用。

里奇和布莱恩·克尼汉(Brian Kernighan)对它进行了一定程度的优化,最终于 1989 年被美国国家标准协会的 X3J11 委员会进一步细化为 ANSI C 程序设计语言。1978 年,克尼汉和里奇合著出版了《C 程序设计语言》这本书。该书被很多人简称为“K&R C”,是计算机科学的杰作,它也是解释现代程序设计概念的一个关键参考,甚至到今天,它还是计算机科学课程里学习程序设计的经典教材。

直到今天,ANSI C 作为一种编程语言还被大量地使用,后来它还发展出很多的衍生语言,这些语言又都有很多的追随者——比如 Objective-C。Objective-C 很大程度上被认为是一个鲜为人知的 C 语言衍生品,直到它在八十年代末和九十年代初被广泛用于 NeXT 计算机系统公司的 NeXTStep 和 OpenStep 操作系统上,也就是乔布斯所开发的 NeXT。2001 年,苹果发布了 Mac OS X,其中沿用了 Objective-C 的框架,以及 NeXTStep 和 OpenStep 所引入的面向对象技术。

图源:CSDN 下载自东方 IC

C 语言只能诠释丹尼斯·里奇生涯的一半。里奇还是 UNIX 操作系统的共同发明人,UNIX 的原型是用汇编语言编写,到七十年代早期就完全用C重写了。早在 1969 年,在一台 DEC PDP-7上引导了第一个版本的“Unics”,从那开始UNIX已经演变出很多类似的操作系统,并运行在各种各样的系统架构上。每一个主要的计算机供应商都曾经实现过自己的 UNIX。甚至连微软也曾经拥有一个叫做 XENIX 的产品,后来卖给了 SCO。

这些成就让丹尼斯获得了 1983 年的图灵奖,可以说,几乎所有网络产品都是站在他的肩膀上诞生的。Android 智能手机、流媒体设备,Mac 和 iPad、Windows 11和 Surface Book、云计算……

Dennis Ritchie 退休后,一直过着隐居的生活,几乎被外界遗忘。2011 年 10 月 12 日,与他共事 20 年的同事罗布·派克(Rob Pike)从加州来到新泽西看望他,却发现他已经去世了。由于 Dennis Ritchie 独自生活,确切的死亡时间不得而知;据他哥哥说,丹尼斯里奇多年来一直健康状况不佳,患有前列腺癌和心脏病。

罗布·派克当时只在社交平台上发了个极其简短的讣告:“据我所知,Unix 和 C 语言发明人丹尼斯·里奇已经去世。”,Dennis Ritchie 的“保持简单”的原则,不仅体现在他的 C 语言和 Unix 系统,还贯彻了他的一生。

C 语言之父丹尼斯·里奇逝世十周年相关推荐

  1. C语言之父,UNIX之父丹尼斯·里奇去世 享年70岁

    [caption id="attachment_84" align="alignleft" width="278" caption=&quo ...

  2. 纪念C语言之父丹尼斯·里奇离世6周年

    不知不觉, 丹尼斯·里奇离开我们 6 年了.2011 年 10 月 12 日,和里奇共事 20 多年的同事 Rob Pike 从加州到新泽西去拜访他,才发现他已经去世了.由于是独居,当时无法知道准确的 ...

  3. 乔布斯逝世十周年,库克带领的苹果终将走向何方?

    星标/置顶 公众号

  4. 【历史上的今天】10 月 12 日:C 语言之父逝世;西门子诞生;乔布斯推出 NeXT 电脑

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 10 月 12 日,历史上的这一天,哥伦布发现了"新大陆",在他发现的这片美洲上 ...

  5. 历史上的今天:C 语言之父逝世;西门子诞生;乔布斯推出 NeXT 电脑

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 10 月 12 日,历史上的这一天,哥伦布发现了"新大陆",在他发现的这片美洲上 ...

  6. 让乔布斯立足肩上的C语言之父

    2011年,人们对乔布斯的去世记忆深刻,但这一年还有另一位本应获得同样关注的人物也与世长辞,他就是C语言之父丹尼斯·里奇(Dennis Ritchie). 不过,并非所有人都没能正确认识到里奇所曾作出 ...

  7. 不缅怀C语言之父的果粉都不是真果粉

    Unix和 C 语言的发明人,图灵奖获得者,丹尼斯·里奇先生,于2011年10月8日在位于美国新泽西州的家中病逝.可以说,几乎所有的网络产品和操作系统都是基于丹尼斯先生的成就诞生的,我们都站在他的肩膀 ...

  8. java c 语言之父_Java之父评价C语言之父:他是一位天才,c语言撑起了一切

    Java之父詹姆斯·高斯林(James Gosling)曾在C语言之父丹尼斯·里奇(Dennis Ritchie)去世时发布了关于他的讨论的简短博文,大致内容如下:丹尼斯·里奇辞世的新闻如五雷轰顶.过 ...

  9. 程序员必知的编程4大祖师爷,C语言之父堪称编程界的牛顿!

    编程语言哪家好,这是网友们一直争议和调侃的话题. 不过,并不是所有的程序员都知道编程语言的开山鼻祖. 不得不说,正是因为拜在祖师爷门下,才混有今天撸代码这口饭吃. 下面我们就来了解一下编程语言的祖师爷 ...

  10. 丹尼斯·里奇-c语言之父,Unix之父

    丹尼斯·里奇,全名丹尼斯·麦卡利斯泰尔·里奇.C语言之父,UNIX之父.曾担任朗讯科技公司贝尔实验室下属的计算机科学研究中心系统软件研究部的主任一职.1978年与布莱恩·科尔尼干(Brian W. K ...

最新文章

  1. MSP430单片机输入与输出
  2. 【Coursera课程笔记】Web智能和大数据Week3_MapReduce
  3. java主机上切换用户,linux 主机上更换默认的jdk
  4. Oracle的解惑一二to date 与24小时制表示法及mm分钟的显示
  5. 批量梯度下降python实现_python实现梯度下降算法的实例详解
  6. 【springboot+easypoi】一行代码搞定excel导入导出
  7. MongoDB 字段拼接 $concat(aggregation)
  8. mysql查看版本号_十分钟了解MySQL事务机制
  9. Win7系统电脑修改不了文件属性怎么办
  10. Spring Cloud Config - RSA简介以及使用RSA加密配置文件
  11. ​Java面向对象的概念整理
  12. mysql status uptime_MySQL优化(四) 慢查询的定位及优化
  13. 马化腾:腾讯的梦想是“三张网”
  14. MapReduce的map流程
  15. htons、inet_addr、
  16. matlab转变图像位深,[转载]matlab 图像处理命令 (转)
  17. Linux音频驱动-AOSC之Codec
  18. 项目进度管理方法——里程碑式管理
  19. JavaScript的20个工具函数助力H5高效开发
  20. 50行的python游戏代码_教你使用50行Python代码刷王者荣耀金币

热门文章

  1. IoT -- 物联网平台架构设计分析
  2. 3D动漫游戏建模很难学?教你如何使用3DMax和ZBrush制作卡通角色
  3. 低功耗微波雷达模块,LED庭院灯智能感应,雷达传感器助力节能减排
  4. 通俗理解核方法(kernel function)
  5. 【机器学习】SVM核方法
  6. Windows动态库DllMain
  7. iOS13.3越狱插件推荐
  8. 最新官方版本Fliqlo 炫酷翻盖时钟屏保 多平台
  9. latex pdf 统计字数
  10. 颜色透明度16进制对照表