像我儿子一样永远保持好奇和梦想

KISS - DMR - the other man inside your iPhone

上一篇 / 下一篇  2012-12-06 15:21:27 / 个人分类:ideas

   KISS = Keep It Simple and Stupit -- ---

Dennis M. Ritchie

这是一篇纪念DMR的文章,包含中文,和英文版本,精彩的是众多牛逼的人都回复跟帖。。。。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台;Vgf;U$x!dQ


ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台uX.K zK4j9h#WZn

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

作者: 阮一峰ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台O:{$?+R p|4?:HB

日期: 2011年10月25日

\:oH%^*C:F0

大师去世以后,财新网约我写一篇纪念文章。

u_/Q1n4Gur0

现在文章已经发表了,我可以把原稿贴出来了。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台o P l^ QB(L

丹尼斯•里奇对人类的贡献,被大大低估。此时此刻,全世界几十亿人正在使用的几百亿件电子产品,里面的软件最终都可以追溯到他的智力贡献。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台D~*Sj2Aj

==========================================

,KX i?7mPD0

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

.k k,Kq&a qw0

作者:阮一峰

[r;z:N!~y{q.V"BO*W0

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台jU6l h)}v/Nl

1954年,电气工程师阿利斯泰尔•里奇(Alistair E. Ritchie),决定举家从纽约州的布朗克斯维尔(Bronxville),搬到几十公里以外的新泽西。这样可以离他的工作单位"贝尔实验室"更近一些。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台/X{1J8~9u`oN d

13岁的丹尼斯•里奇(Dennis Ritchie),就这样随着父亲一起来到新泽西。那时,谁也没有想到,这个文静的少年将在这里待上一辈子,并且创造出改变世界的发明。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Q^k;]~ a

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

F'F#gch'H QP&z0

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台_F|"w:S9]"fQ

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

tQ] WD0

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

._I-j-tZ!P/S,h| y0

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台,w a:^+_(y4B"n

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

k C!\3Z7~*?0

表面上看,这样的设计很低效:为了取得结果,你必须运行一连串小程序,那么为什么不用一个大程序一次运行就得到结果呢?但是事实证明,由于小程序之间可以像积木一样自由组合,所以非常灵活,能够轻易完成大量意想不到的任务。而且,计算机硬件的升级速度非常快,所以性能也不是一个问题。另一方面,开发单一目的的小程序,要比开发大型程序容易得多,所以Unix才有可能在短短几个月内问世。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台?2r \j4p3zC

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

~6Uv8oB|nV0

丹尼斯•里奇对世界的贡献还不止于此。Unix最早是用不通用的机器语言编写的,如果换一个型号的计算机,就必须重新编写一遍。为了提高通用性和开发效率,丹尼斯•里奇决定发明一种新的计算机语言----C语言。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台`9C#uVR'W

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台3M'V l$Mb

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

.p]o3R^\$[GE!{#It0

发明Unix和C语言,给丹尼斯•里奇带来巨大的荣誉,他得到了1983年的图灵奖、1990年的汉明奖、1999年的美国国家技术奖章。尽管功成名就,但是就像他的工程设计思想,丹尼斯•里奇在个人生活上也尽量"保持简单"。他依然住在新泽西,低调地生活,不太在媒体上曝光,终身没有结婚。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Jz:riJ1DiuT Z7rL

5| sW;^g^}0

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

Qz {(\+d%r*|!jj'K3P0

退休以后,他过上了隐居生活,外界几乎忘了他的存在。2011年10月12日,共事20年的同事Rob Pike从加州到新泽西去拜访他,才发现他已经去世了。由于是独居,无法知道准确的死亡时间。据他的兄弟透露,这几年丹尼斯•里奇的健康状况一直不好,他患有前列腺癌和心脏病。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台/tck!G,^-?y3A

Rob Pike在Google Plus发了一条简短的消息,"据我所知,Unix和C语言发明人丹尼斯•里奇已经去世",外界才知道这件事,引发了纪念浪潮。虽然这个过程有点令人伤感,但是必须说,这很符合他的"保持简单"的原则。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台j0W N:Lzs)wG


ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台h^%[Y} P rS

Showing 136 of 137 comments

  • Aurvondel

    printf("Goodbye world.\n");

    "bt-R;m P0
  • Natanael L, Tech geek! Love computers and science.

    C you later.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 r| {+Yl0u(q

  • g kast

    sync; sync; haltET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台M p"H1z!YIE[ Z

  • Segmentation fault. Core dumped.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台?,DN5UQdDR

  • librtee_dot_com

    exit code 0? No, hell no. Exit code 1. Subroutine successful!ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台k&`:My7b;G+Q

    (edit: i suck at c! i do apologize for my error. RIP Mr. Ritchie)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台'KQ k Rn j1J

  • Aurvondel

    In UNIX, an ultimate exit code of 1 (or any non-zero, unsigned 8-bit int) signifies an error.  I assume the reason is that there's only one kind of success, but many kinds of failure.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台+oQJl0^/uC h1_

  • Thomas Zaraat

    Returning a NULL pointer on the other hand is often an indicator that Bad Thing occurred and any other value is presumably a success :)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台:P#u8V'}/r~

    But, yeah, you're supposed to return a "0" to tell UNIX that your process didn't abort.

    ] cHgFs0
  • Peter Yard

    Perhaps a return code of 1 is appropriate, because it just seems wrong that he has left us.

    :g?6}2[$F$p0
  • Melinda Shore

    Sorry, guy, clearly not a C programmer or a Unix programmer.  exit() is a system call (C doesn't have "subroutines") and "return" is a C language statement.  exit() takes you back out to the parent process and the convention, at least as far as shells are concerned, is that exit(0) is a normal termination and exit(anything else) means some problem was encountered.  That said, there's some confusion about the distinction between library invocations of system calls, where returning 0 usually indicates success, and library routines for other stuff, where returning 0 usually indicates failure.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台6FXqf6vuO#@V

    Take better care of Unix - it's an extraordinary legacy he left us.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台5[3q$j'Y/HBrI

  • librtee_dot_com

    I just got pwned!ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台9`0Lhq l ~)y`

    I sure love Unix, it's a beautiful thing, although I am a shitty C programmer, haven't done so in 10 years.

    ^"q/b.R3lUR]0

    Spending all my energy now on the bastard child JS :(ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台5f,K)].A1~6E/h

    TAG: iPhone iphone

     

    评分:0

    我来说两句

    显示全部

    :loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

博聚网