保持简单-纪念丹尼斯·里奇 Dennis Ritchie
丹尼斯·里奇对人类的贡献,被大大低估。此时此刻,全世界几十亿人正在使用的几百亿件电子产品,里面的软件最终都可以追溯到他的智力贡献。
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语言。


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语言。


从小小的bit到无尽的YB
整天接触电脑,不可避免地要与各种计量单位打交道,尤其是数据量,但是你知道bit、Byte、KB、GB、TB等等都意味着多少数据么?有没有听说过EB、ZB、YB呢?
bit(比特)是binary digit的英文缩写,量度信息的单位,也是表示信息量的最小单位,只有0、1两种二进制状态。8个bit组成一个Byte(字节),能够容纳一个英文字符,而一个汉字需要两个字节的存储空间,普通英文单词则需要十个左右的字节。
从字节开始往上按照千分位递进,分别就是KiloByte(KB)、MegaByte(MB)、GigaByte(GB)、 TeraByte(TB)、PetaByte(PB)、ExaByte(EB)、ZettaByte(ZB)、YottaByte(YB)。1KB就是 1024个字节,或者说2的10次方、大约10的3次方;1YB已经是2的80次方、大约10的24次方个字节,完整地写下来就是 1208925819614629174706176。
这里俺补充一下关于宽带的带宽问题,咱们的运营商给用户报的带宽其实计量单位是bit,比如2M的ADSL,其中的2M说的是2Mb,注意Mb里的b是小写的,也就是bit,如果要换算成Byte,要除以8,2Mb/8=0.25MB,要是换算成KB那就乘以1024得到256KB,这里的B是大写的表示字节Byte,表示2M的ADSL用户,其最大理论下载速度是256KB每秒。其他依次类推。不过刚才说的都是下行速度,上行的基本都被运营商无耻的限制了,限制到了512Kb,注意,这里的b是小写的,你自己可以换算一下,就知道自己的实际上传速度是多少KB了。
其他一些形象地数据量:
一张电报:100字节
一个笑话:1KB
一页书籍:10KB
一张低分辨率照片:100KB
一部微型小说:1MB
一次胸透视:10MB
两章百科全书:100MB
一卷磁带:200MB
一张CD光盘:500MB
一部广播级质量电影:1GB
一卷大型数字磁带:100GB
五万棵树制成的纸:1TB
一套大型存储系统:50TB
NASA EOS对地观测系统三年数据:1PB
所有印刷材料:200PB
全人类说过的所有的话:5EB
bit(比特)是binary digit的英文缩写,量度信息的单位,也是表示信息量的最小单位,只有0、1两种二进制状态。8个bit组成一个Byte(字节),能够容纳一个英文字符,而一个汉字需要两个字节的存储空间,普通英文单词则需要十个左右的字节。
从字节开始往上按照千分位递进,分别就是KiloByte(KB)、MegaByte(MB)、GigaByte(GB)、 TeraByte(TB)、PetaByte(PB)、ExaByte(EB)、ZettaByte(ZB)、YottaByte(YB)。1KB就是 1024个字节,或者说2的10次方、大约10的3次方;1YB已经是2的80次方、大约10的24次方个字节,完整地写下来就是 1208925819614629174706176。
这里俺补充一下关于宽带的带宽问题,咱们的运营商给用户报的带宽其实计量单位是bit,比如2M的ADSL,其中的2M说的是2Mb,注意Mb里的b是小写的,也就是bit,如果要换算成Byte,要除以8,2Mb/8=0.25MB,要是换算成KB那就乘以1024得到256KB,这里的B是大写的表示字节Byte,表示2M的ADSL用户,其最大理论下载速度是256KB每秒。其他依次类推。不过刚才说的都是下行速度,上行的基本都被运营商无耻的限制了,限制到了512Kb,注意,这里的b是小写的,你自己可以换算一下,就知道自己的实际上传速度是多少KB了。
其他一些形象地数据量:
一张电报:100字节
一个笑话:1KB
一页书籍:10KB
一张低分辨率照片:100KB
一部微型小说:1MB
一次胸透视:10MB
两章百科全书:100MB
一卷磁带:200MB
一张CD光盘:500MB
一部广播级质量电影:1GB
一卷大型数字磁带:100GB
五万棵树制成的纸:1TB
一套大型存储系统:50TB
NASA EOS对地观测系统三年数据:1PB
所有印刷材料:200PB
全人类说过的所有的话:5EB

优秀站点寻觅中,欢迎您来推荐。






