首页 > 其他分享 >保持简单(Keep it simple)—-纪念丹尼斯•里奇(Dennis Ritchie)

保持简单(Keep it simple)—-纪念丹尼斯•里奇(Dennis Ritchie)

时间:2023-07-13 19:32:22浏览次数:38  
标签:里奇 simple 丹尼斯 程序 Keep Unix Ritchie 贝尔实验室 C语言


1954年,电气工程师阿利斯泰尔•里奇(Alistair E. Ritchie),决定举家从纽约州的布朗克斯维尔(Bronxville),搬到几十公里以外的新泽西。这样可以离他的工作单位”贝尔实验室”更近一些。

13岁的丹尼斯•里奇(Dennis Ritchie),就这样随着父亲一起来到新泽西。那时,谁也没有想到,这个文静的少年将在这里待上一辈子,并且创造出改变世界的发明。

中学毕业后,丹尼斯•里奇听从父亲的建议,进入哈佛大学学习应用数学,直到拿到博士学位。他的第一份工作,是为军方研制核 武 器,这并不符合他的志趣。1967年,通过父亲介绍,26岁的他进入贝尔实验室,从事刚刚兴起的计算机研究。从此,他在新泽西老家一住就是44年,直到去世。



他在贝尔实验室的第一个任务,是参与大项目Multics,即开发一个前所未有的、可以多人使用的、同时运行多个程序的操作系统。该项目由贝尔实验室、麻省理工学院和通用电气公司三方联合研制,但是由于设计过于复杂,迟迟拿不出成果,1969年贝尔实验室宣布退出。

第一个任务这样无果而终,丹尼斯•里奇很不甘,但也无能为力。谁知过完了夏天,比他小两岁的同事肯•汤普森(Ken Thompson)找上门,说借鉴Multics的设计思路,做了一个个人项目Unix,问他有没有兴趣一起参与。丹尼斯•里奇立刻表示同意,于是两人一起投入Unix的开发。肯•汤普森的专业是电子工程,丹尼斯•里奇专业是应用数学,正好互补。经过日以继夜的工作,1969年圣诞节前,Unix已经可以初步运行了。



吸取了Multics设计复杂而导致失败的教训,丹尼斯•里奇将Unix的设计原则定为”保持简单和直接”(Keep it simple stupid),也就是后来著名的KISS原则。为了做到这一点,Unix由许多小程序组成,每个小程序只能完成一个功能,任何复杂的操作都必须分解成一些基本步骤,由这些小程序逐一完成,再组合起来得到最终结果。

表面上看,这样的设计很低效:为了取得结果,你必须运行一连串小程序,那么为什么不用一个大程序一次运行就得到结果呢?但是事实证明,由于小程序之间可以像积木一样自由组合,所以非常灵活,能够轻易完成大量意想不到的任务。而且,计算机硬件的升级速度非常快,所以性能也不是一个问题。另一方面,开发单一目的的小程序,要比开发大型程序容易得多,所以Unix才有可能在短短几个月内问世。

Unix迅速在程序员中流传,到了80年代,已经成为主流操作系统,演变成整个软件工业的基础,当代最主要的操作系统—-Windows、MacOS和Linux—-都与Unix有关。由此可见,丹尼斯•里奇的”保持简单”原则,对计算机时代的影响有多大。

丹尼斯•里奇对世界的贡献还不止于此。Unix最早是用不通用的机器语言编写的,如果换一个型号的计算机,就必须重新编写一遍。为了提高通用性和开发效率,丹尼斯•里奇决定发明一种新的计算机语言—-C语言。



C语言也贯彻了”保持简单”的原则,语法非常简洁,对使用者的限制很少。丹尼斯•里奇编写的教材《C编程语言》总共只有100多页,薄得难以置信。很多人都被它的简洁性吸引,学习并使用C语言。直到今天,C语言依然是世界上最重要的编程语言之一,”保持简单”原则显示了强大的生命力。

发明Unix和C语言,给丹尼斯•里奇带来巨大的荣誉,他得到了1983年的图灵奖、1990年的汉明奖、1999年的美国国家技术奖章。尽管功成名就,但是就像他的工程设计思想,丹尼斯•里奇在个人生活上也尽量”保持简单”。他依然住在新泽西,低调地生活,不太在媒体上曝光,终身没有结婚。



他也始终没有跳槽,一直在贝尔实验室工作,尽管后者多次分拆,到了最后已经名存实亡。2001年,接手贝尔实验室的朗讯公司,决定关闭大多数实验室,许多研究人员纷纷离开,包括Unix发明者之一的肯•汤普森都去了Google,但是丹尼斯•里奇哪里也没去,还是留了下来。2006年12月1日,贝尔实验室被整体卖给了法国阿尔卡特公司,第二年他就选择退休了。

退休以后,他过上了隐居生活,外界几乎忘了他的存在。2011年10月12日,共事20年的同事Rob Pike从加州到新泽西去拜访他,才发现他已经去世了。由于是独居,无法知道准确的死亡时间。据他的兄弟透露,这几年丹尼斯•里奇的健康状况一直不好,他患有前列腺癌和心脏病。

Rob Pike在Google Plus发了一条简短的消息,”据我所知,Unix和C语言发明人丹尼斯•里奇已经去世”,外界才知道这件事,引发了纪念浪潮。虽然这个过程有点令人伤感,但是必须说,这很符合他的”保持简单”的原则。

标签:里奇,simple,丹尼斯,程序,Keep,Unix,Ritchie,贝尔实验室,C语言
From: https://blog.51cto.com/u_1044274/6715591

相关文章

  • SimpleITK 重采样数据到固定尺寸
    1、resampleSize这个重采样不是重采样Spacing,却是重采样size,为了达到所有的数据一致的size例如:(880,880,12)采样统一的(880,880,16)因为假如3DUnet网络数据设置了输入格式为(N,C,16,xxx,xxx),可以把每个数据的size都重采样(16,xxx,xxx),然后输入网络。如果直接设置Size为(1......
  • SimpleITK 图像配准
    SimpleITK图像配准在网上找的资源,效果不佳,等清楚了函数和原理再细改,调试效果。1#-*-coding:UTF-8-*-2#@file:regist.py3#@Time:2021-11-1217:004#@Author:wmz56importSimpleITKassitk78#Utilitymethodthateither......
  • SimpleITK 图像对齐
    1、使用SimpleITK对齐图像在看voxelmorph的代码,看到图像对齐部分,记录一下。下面是从voxelmorph项目中截取的一段保存图像的函数。函数输入分别是:配准后的图像、固定图像、要将配准图像保存的名字。将图像对齐的操作需要将对齐的图像的原点、方向、间距设置成与被对齐的图像一致。......
  • SimpleITK 读写nii.gz文件
    1、读写nii.gz文件1##usingsimpleITKtoloadandsavedata.2importSimpleITKassitk3itk_img=sitk.ReadImage('./nifti.nii.gz')4img=sitk.GetArrayFromImage(itk_img)5print("imgshape:",img.shape)67##save8out=si......
  • SimpleITK 三维图像分析
    1、去除3D小连通域在一些计算机视觉任务中,需要对模型的输出做一些后处理以优化视觉效果,连通域就是一种常见的后处理方式。尤其对于分割任务,有时的输出mask会存在一些假阳(小的无用轮廓),通过3D连通域找出面积较小的独立轮廓并去除可以有效地提升视觉效果。二维图像连通域一......
  • FIX tutorial in Java with QuickFIX/j simple example
    http://www.tuicool.com/articles/v2me6r 时间 2014-07-3112:22:00ArulkumaranKumaraswamipillaiblog主题Log4J Q.WhatisFIXProtocol? A.FIXstandsforFinancialInformationeXchange,whichisanopenprotocolintendedtostre......
  • SimpleITK 简单使用
    SimpleITKITK是一个开源、跨平台的框架,提供给开发者增强功能的图像分析和处理套件(推荐使用)。Note:注意SimpleITK不支持中文,即路径中不能有中文X射线图像对应的读取1#@file:itk_p1.py2#@Time:2021/8/2816:273#@Author:wmz4importSimpleITKassitk......
  • zookeeper作为注册中心,实现服务注册以及服务发现的思路图解
    一、服务发现 二、服务的发现: ......
  • POJ3468 A Simple Problem with Integers
    ASimpleProblemwithIntegers题目链接:ASimpleProblemwithIntegers题意给定\(N\)个数,可以选择\([l,r]\),让下标在区间内的值都增加一定值,或者输出下标在区间内元素的和。思路可以用带懒标记的线段树写,但是代码太长,不利于编写。这里有一个利用差分借助树状数组实现的写法......
  • Three_Phase_Rectifier_SimpleSVPWM:基于MATLAB/Simulink的三相电压型简单SVPWM整流器
    Three_Phase_Rectifier_SimpleSVPWM:基于MATLAB/Simulink的三相电压型简单SVPWM整流器仿真模型,输出电压开环控制。仿真条件:MATLAB/SimulinkR2015bID:7120649953967466......