×

Loading...
Ad by
  • 最优利率和cashback可以申请特批,好信用好收入offer更好。请点链接扫码加微信咨询,Scotiabank -- Nick Zhang 6478812600。
Ad by
  • 最优利率和cashback可以申请特批,好信用好收入offer更好。请点链接扫码加微信咨询,Scotiabank -- Nick Zhang 6478812600。

Continue

本文发表在 rolia.net 枫下论坛AT&T于1983年发布了System V(简称SVR1,意为System V的第一版,在Bell Labs原版的基础上吸收了一些来自其它版本的技术),此后便一直沿用这一名称。直到1993年AT&T将UNIX卖给Novell之后(连同拥有UNIX产权的子公司USL,Unix System Laboratories),Novell仍使用了一段时间,最后一个System V版本是Novell于1993年12月推出的SVR4.2MP(MP是“多处理器”的意思)。而最先的那个版本(以Version x命名)Bell Labs仍继续发展了一段时间,直至1990年推出的Version 10。但SV系列推出后,这一系列影响就小了,大多数UNIX的变种都是源自SV系列和BSD系列,而SVR4本身就吸收了BSD系列的一些东西(主要是TCP/IP协议栈)。
  UNIX技术虽然广受欢迎,但这一商标本身似乎并未创造很大的价值,AT&T大概是因为受条约限制,据说在它身上只赚了几亿美元,而Novell也没能很好地利用它,Novell后来将自己的Netware与SVR4相结合,推出了Unixware,随后就将UNIX的商标权卖给了X/Open Company。到了1995年,干脆把Unixware也卖给了SCO(Santa Cruz Operation,这家公司好象不太厚道,前两年因为Novell转向发展Linux,SCO以不太站得住脚的原因起诉Novell侵权,同时还告了IBM,因为诉讼对Linux非常不利,激起公愤,我记得当时《电脑报》以很少见的激烈言辞在头版予以报道)。
  X/Open Company在1996年与OSF (Open Softare Foundation)合并,成立了The Open Group。这个非赢利组织到目前为止拥有着UNIX的商标权,实际上,经过这么一番复杂的变迁,UNIX这一名称似乎已经谈不上有多大的商业价值了,更多的是一种标准和象征。The Open Group负责发布和维护Single Unix Specification(UNIX规范),后来ISO(国际标准化组织)发布的UNIX标准主要就是照这个来的。关于UNIX还有一个重要的标准,就是由IEEE(电气和电子工程师协会)发布的POSIX(Portable Operating Systems Interfaces for Computer Environment,Linux最初就是照着这个葫芦画瓢来实现与UNIX的兼容的:)

有关AT&T的叙述告一段落,再说两句Thompson和Ritchie,与这两位牛人告别:)。就象顶尖的物理学家只对大问题感兴趣一样(一般是在证明一种理论后就转向研究其它,那些细枝末节的问题就交给那些实验物理学家了),在发明UNIX之后,他们并没有在这上面花费太多功夫,除了做一些本职工作的研究之外(例如IP电话),他们还继续对操作系统进行探索。由于UNIX的核心设计完成的如此之早,Thompson他们虽然天纵英才,却也没能料到计算机的发展如此日新月异,UNIX最初是作为一个基于单机的分时系统来设计的,这显然不符合当今潮流,虽然仗着它高效、稳固以及灵活的可扩充性设计,在今天的网络时代仍挑着大梁,但在新兴应用层出不穷的情形下不时表现出的核心技术的滞后让Thompson他们颇为不爽,于是他们决心搞一个新玩意。
  在80年代后期,Thompson和Ritchie开始开发Plan9(1995年推出)。这个看上去与UNIX颇为相似、仍旧以C语言编写的操作系统是全新的,它面向网络和分布式计算,在一定程度上,它提出的概念有点类似上世纪末Oracel和SUN他们提出的NC(NetWork Computer),或者叫“瘦客户端”,核心理念就是把网络里的运算能力集中起来,客户机则用不着太快。在Plan9系统的网络里,有一个“CPU服务器” ,它来处理大多数的运算请求,然后将结果返回到各客户端。这一构想很早就有人提出,所以Thompson他们也好,Oracel他们也好都不算是发明创造,在今天,这种应用也很普遍(比如Google,海量信息的搜索和查询请求的处理就是在服务器端完成的,大多数网络开发技术都是基于服务器端),但在系统级的架构上实现这一理念,Plan9首开先河。而且令人兴奋的是,Plan9顺应了开源软件的大潮,大家可以去Bell Labs或者Vita Nuova(经营Plan9和Inferno的公司)的网站上下载到它附有源码的版本。
  后来,Thompson和Ritchie还主持编写了一个叫做Inferno的系统(1996年推出),这个系统基于一种叫做Limbo的语言(这个主要是Sean Dorward设计的,Thompson曾特意声明,大家别搞错了,呵呵:),在概念上与JAVA比较类似,它有一个通过Limbo语言接口的交互层,即可以做为一个单独的操作系统安装,也可以作为一个应用程序在别的操作系统中运行——就象JAVA虚拟机(SUN也曾做过纯JAVA的操作系统,不过好象效率低下,没能推广开),Inferno比JAVA推出的略晚一些,但考虑到研发的时间因素,分不清谁先谁后,不过Thompson说Limbo要比JAVA清爽,当然这只是一面之辞:)。
  除了计算机之外,Thompson和Ritchie的爱好就不大相同了。Ritchie喜欢古典音乐,但并不发烧,通常只在收音机里听听,Thompson喜欢流行音乐,而且非常发烧,他收集了几万首上过排行榜的流行歌曲——以一种Bell Labs发明的叫做PAC的压缩格式,音质远超MP3,而且他透露大多是“非法”取得的(相信不少同志有过类似行为:)。Ritchie喜欢旅行,规规矩矩的那种,比较出格的也就是开开大卡车,Thompson就比较猛,他喜欢开飞机,而且水平不错,在前苏联时代,曾经开着飞机过去跟他们的米格-29比试了一番。现在Thompson己经退休,当上了飞机教练,Ritchie则还在Bell Labs工作,当上了领导,负责系统软件研发部门,主要工作不再是写代码,改成了开支票(按咱们时下的流行理论,这也算是程序员修成了正果,呵呵)。Ritchie曾经与Brian W.Kernighan合写了《The C Programming Language》,是计算机科学的经典名著(单就发行量似乎不如谭浩强那本,但影响不可同日而语),世界上最著名的程序——“Hello,World.”就是在这本书里首次亮相:)。Ritchie低调而自负,自称没有偶像,唯独对Thompson赞赏有加,他拒不承认对UNIX的贡献与Thompson一样多,并声称Thompson的编程水平自己望尘莫及。而Thompson似乎是个乐天派,他自称做过的几乎所有事情都是出于个人爱好——我真希望自己也能说出同样的话来。
  1983年,Thompson和Ritchie荣获图灵奖,首开以软件工程师而不是计算机科学家的身份获奖的先例,并促使图灵奖开设了一个新奖项——软件系统奖;199年,他们俩又获得了“全美技术勋章”,作为程序员,他们获得的荣誉可算是登峰造极了。但Thompson对当今计算机业的看法却不太令人鼓舞,他说计算机业已经进入了中世纪,不再那么令人兴奋,他建议自己的儿子选择生物工程,而不是计算机,顺便说一句,Thompson曾经细读过Linux的源码,对这个新一代的传奇评价不高,进而对整个计算机业的技术发展似乎都比较失望。比起二、三十年前,现如今的IT业的确商业味更浓,而革命性的创新鲜见,如果真如Thompson所言,如今是处于计算机业的“中世纪”的话,真希望能早点等到“文艺复兴”的到来:)。

转过头再来说BSD。
  当时搞UNIX研发的并非只有Berkeley一家,只因Berkeley出了Bill Joy这么个大牛人,一下子把别人都压下去了,到第三版(就是可以完美支持VAX机的那一版)推出后,风头之健,更是盖过了Bell Labs,成为UNIX技术发展的中心,因为这样的优势地位,不久之后,一个巨大的机遇找上门来。
  1979年,DARPA(Defens Advanced Research Projects Agency,美国国防部高级研究计划局)开始着手一项计划,全面更新他们的ARPAnet(一个用于连接他们散落在美国各地研究中心的计算机的网络 ,Internet的前身)。早期运行ARPAnet的都是些PDP-10,现在已是风烛残年,该退休了,DARPA准备换上新型的VAX机来接班,加上前两年开发的TCP/IP协议(Transimission Control Protocol/Internet protocol)也得借这次机会登台亮相,这将是一次脱胎换骨的大换血。DARPA首先想到的是找DEC,毕竟VAX就是他们的产品,但他们需要对操作系统进行大幅度的修改,想到DEC对于自家VMS的保守态度,上门搞不好要碰个大钉子,自己动手吧,又没下嘴的地方——正犹豫间,BSD的出现让他们眼前一亮——完全支持VAX,可获得源码,可定制,可移植,简直就是个度身定做的系统!
  于是他们找上了Berkeley。Berkeley当然是有见识的,这么有意义的活计上哪去找,共襄盛举那是求之不得啊,于是在1980年两家就签订了一个合同,由DARPA资助Berkeley发展UNIX,以满足DARPA的需要。Berkeley为此专门成立了一个小组叫做CSRG(Computer System Research Group),由Bob Fabry教授负责(就是将UNIX引入Berkeley的那位),Fabry当然很想Joy参加进来,但当时Joy刚通过Ph.D.的考试,为其学业着想,Fabry也不好意思去找他,但没多久Joy就主动找上门来了(一点不奇怪,他不参加倒真奇了怪了:)。
  且说DARPA的一个主要要求就是要将TCP/IP协议集成到UNIX中,他们此前就找了一家叫BBN的公司写好了协议栈,CSRG就安排Joy来做集成工作。没想到的是,没过几天,Joy就完成了——这没什么稀奇,稀奇的是,他根本没用BBN写的协议栈,他居然自己重写了一个,原因竟是,他嫌BBN的那个写得太烂!要知道BBN的那玩意可是一项巨额合同的成果,BBN和DARPA这下觉得太没面子了,肯定有内情,就开会研究,请Joy参加。且说Joy穿着件T恤,蓬头垢面的就进了会议室,满坐西装革履,看着这小子不觉有点发呆,回过神来就问他,你是怎么写出来的(估计还存着念头,以为他以前做过相关研究什么的)?没想到回答简直让他们喷血,Joy说,这个嘛,很简单,你读协议,然后编码,就行了。:)


最早集成Joy所写的TCP/IP模块的BSD版本是4.1a,跟3BSD之间隔了两个版本,4.0和4.1。这两个版本的进步不算大,4.0版主要是加进去一个Lisp系统(Lisp是一种资格极老的语言,由MIT的John McCarthy教授于1958年发明,仅比史上最早的高级语言——1957年由IBM开发的Fortran——晚了1年而已,这种设计理念奇异的语言非常与众不同,它对程序与数据不加区别,对其缺乏了解的人看到它浑然一体、遍布密密麻麻括号的源程序肯定会一头雾水,但它有着强大的表达能力,尤其适合符号和文字处理,是AI(Artificial Intelligence,人工智能)领域的首选语言——目前可能是它的一个变种Scheme用得更多些,著名的AutoCAD自带的脚本语言AutoLisp就是基于它,还有著名的Emacs也是Lisp写的,还附带一个完整Lisp版本——Emacs Lisp),以及一个增强的邮件处理系统,这个版本的生存期只有几个月,因为它存在一些严重隐患,大家抱怨颇多,于是CSRG很快就推出了4.1版,这个版本主要是对4.0版做了些修修补补,此外大一点的改动就是增加了自动配置代码功能。
  本来按Berkeley的命名规则,4.0版过后就应该是5.0版,但这时AT&T有意见了,因为他们自己推出的UNIX就叫System V,两个5容易混淆。BSD本来就是从AT&T那儿发展来的,人家一直都很宽容,况且到当时为止,AT&T的代码都还没替换干净,吃人家的嘴短,当然不好争什么,于是Berkeley决定,4字头就不往上升了,以后的版本只升小数点以后的数字(有点致敬的意思,好比芝加哥公牛队在乔丹退役后就不再使用23号球衣:)。
  而4.1a这个版本相当于现在软件的α版(内部测试版),Joy不仅为它集成了TCP/IP,还增加了多网络协议的支持能力,多个网络协议可以同时使用,这在以后成为操作系统的设计标准。因为4.0版的失败,所以CSRG决定发布新版本要慎重一点,所以先自己试用,但与现在的情形一样,这个版本还是流传了出去,并勾起了大家的兴致,不少FANS开始对4.2版充满期待。

但4.2版的诞生颇为艰难,自1982年4月4.1a版发布开始,又过了1年零4个月,中间经历了4.1b和4.1c两个非正式版本,经历了Bob Fabry(还记得他吗?CSRG的BOSS,UNIX由他引入Berkeley,他的离去很大程度上是因为不堪重负——这种高强度的开发工作是很折磨人的)和Bill Joy(他于1982年以唯一一名技术人员的身份与Scott McNealy等4名Stanford的学生一起创办了SUN公司,如你所知,这是当今最著名的生产UNIX机器的公司,但他关于BSD的工作仍持续了好几年)的离去,才于1983年8月正式发布。
  这一版本非常成功(尽管问题也不少,主要是因为一堆新增的功能还没有很好的优化),发行量超过以往版本的总和,并且打败了AT&T的System V,成为广大UNIX厂商制作移植版本的首选,著名的如SunOS 4就是基于它,AT&T在SV的后续开发中也集成了4.2版的许多精华(抄袭是最好的赞美,谁说的来着:)。事实上,这一版本影响如此深远,尤其是其网络模块,此后几乎所有重要的操作系统都从中借鉴,更有一些是直接拿过来用。
  除了骄人的网络功能,4.2版还有许多其它方面的重大进步,如:新的、更强大的文件系统以及磁盘配额机制,新的信号机制,以及独立出来的输入/输出系统,还有全新的文档——这些都是大动作,而且就这还是迫于发布压力进行了妥协,不然还准备对交互通讯机制和虚拟内存管理模块开刀:)。
  所有人都表示赞赏——除了BBN(就是那个写了最初的TCP/IP协议栈并被Joy给否了的公司)。他们对Joy的那一箭之仇一直耿耿于怀,于是不停地向DARPA抱怨,说自己的理念是如何先进,设计又是如何优秀,BSD如果采用了我们的模块一定会跑得更欢云云~~~~,DARPA也不禁动了心,就责成CSRG重新评估BBN的代码,CSRG的高手一看,也确实有可取之处啊,但要说把自己的代码给换掉,也未见得可行,毕竟自己的代码此时已是经过考验的,于是就提出一个折衷方案,把两套代码都包含进去,由用户选择。但这下DARPA又不同意了,这可是网络模块,搞两个政府,自立山头,不是明摆着添乱吗?坚决不行!公说公有理,婆说婆有理,这也不是办法,于是干脆,DARPA请了个第三方的专家——Ballistics实验室Mike Muus来做评估。Muus忙乎了一个月之后,结果出来了,Joy的代码通过了所有测试,而BBN的呢,在高负荷的时候时不时会死给你看:)。于是DARPA拍板,新版本继续使用Joy的代码,BBN这下郁闷死了~~~:)。更多精彩文章及讨论,请光临枫下论坛 rolia.net
Sign in and Reply Report

Replies, comments and Discussions:

  • 工作学习 / 专业技术讨论 / 闲话操作系统(zt)
    本文发表在 rolia.net 枫下论坛闲话操作系统
      
        最近在看Eric.Raymond写的一本《Unix编程艺术》,里面讲了不少计算机的、特别是Unix的历史渊源,出于个人爱好,我对电脑的发展史一向比较关心,也看过一点相关的书本、资料,于是就当是作笔记也好,写学习总结也好,把我所知道的关于计算机操作系统的历史拉拉杂杂地写下了一点文字(如果有人喜欢看,以后也会写些其他方面的),想到坛子里也许还有同好,就贴了上来,欢迎交流,欢迎拍砖(如能有根有据地拍,那就更求之不得:)。
      
        闲话少说,开练。
      
        关于操作系统的定义,我没有找到一个权威的解释,基本上可以说,它是一个程序,一个介于计算机硬件和计算机用户/开发者之间的程序,用户通过它来操作计算机,开发者用它提供的接口来编写程序。操作系统大概可算是最重要(也可算是最复杂)的程序,基本上,它决定了我们能用电脑干什么和怎样用电脑,软件当然是千变万化,不断发展,但无论是在那一种操作系统下跑的软件,必然受限于操作系统所提供的功能,换句话说,它只能在操作系统划下的圈子里翻筋斗。
      
        第一代计算机是电子管(vacuum tube)计算机(大约1945~1959)是没有操作系统的,比如1945年问世的第一台电脑ENIAC,那玩意每秒只能做5000次加减法,连现在地摊上最廉价的计算器都不如,你给它写个操作系统,它也跑不动啊。所以那时操作电脑都是赤祼祼地跟主机打交道,要它干活,得一步步地按开关来告诉它(键盘是没有的,因为用的是机器语言,开关就够用了,后来出现了汇编语言,才出现打孔带这种输入方式),至于输出,它是靠两排小灯泡的闪烁来实现(跟眨眼睛差不多,闭着就是0,开着就是1,所以按照信息技术的理论,眉目岂止能传情,任何信息都可以通过眨眼睛来表达:)。蓝色巨人——IBM(国际商用机器公司)从这时就开始涉足计算机,在这个时代,他们推出的产品是700系列。
      
        第二代的计算机是晶体管(transistor)计算机(大约1959~1964),这个时代的计算机都是所谓的大型机,代表产品是IBM的1403机,运算能力比第一代快多了,达到了每秒几十~几百万次,这个数字看起来还不错,操作系统够简单的话,是可以跑得动的,操作系统也就是在这时候出现的(也有一种说法,说是在五十年代中期就出现了简单的操作系统,但没看到进一步的介绍,)。那时的大型机基本上是一种型号配一种操作系统,通用?没门。这时候的计算机工程师通常也是横跨硬、软件领域,非常的牛X,比如著名的CRAY巨型机,就是由Seymour Cray一手包办软硬件设计,让很多计算机FANS惊为天人,后来,苹果电脑横空出出世,Steven Wozniak也曾再现这种辉煌,这种包办一款电脑软硬件设计的壮举,搁现在,相信没人 可以办到了。在文明发韧之初,类似情形比较常见,古希腊的那些大牛,亚力士多德什么的,都是学贯文理,很多领域都插上一杠子,往往还成了创始人,到了牛顿,虽然差点,文科基本没沾边(神学据说他钻研颇深,但成就如何不得而知),但在理科的好几个领域也是开宗立派、威风八面,现在的科学家大概只有高山仰止的份了。但学术的传承有好几千年,牛顿到现在也有三四百年了,而计算机的历史到今天满打满算也不过六十一年,居然就到了这份上,可见其发展之快。
        那时的操作系统跟我们现在所看到的其实大相径庭,当时只是把它称作Batch System,它的功能也非常单一,仅仅是把一些常用的操作指令进行了封装以供程序调用,甚至都谈不上用户界面。
        但就在这个时代,有一个特别值得一提的操作系统已经开始酝酿,就是大名鼎鼎的OS/360。
      
      (待续)
      
        这款操作系统出自蓝色巨人——IBM(国际商用机器公司)之手,IBM在电脑史上的地位堪称泰山北斗,甚至有专家说过,“电脑的历史就是IBM的历史”。而“360系统”堪称IBM历史上最重要的项目之一。
      
        在61年年底,IBM开始打算实施“360系统电子计算机计划”,据当时的估算,整个计划投资约需50亿美元(这可是在60年代初,十几年前的“曼哈顿工程”才花了20亿),这是不折不扣的大手笔,要知道,当时IBM的年营业额还不到这个数字。
      
        之所以如此花钱,是因为这项计划要做一些以前没人做过的事,这将是一个通用的系统(360就是360度的意思,表示该系统全面的应用范围),该系列不同型号的计算机将能享用同样的设备,如磁带机、打印机等,能使用同样的软件,并且可以相互连接,一起工作,这些在今天看来理所当然的事,在当时可是闻所未闻。
      
        该项目在硬件设计上很有创新,乃至IBM不得不自己动手设计制造芯片(因为买不到),但更大的困难却是在软件方面,要让所有的软件适用于所有的电脑(当然,仅限于360系列),这个理念让IBM的软件工程师们伤透脑筋,投入到这个项目中的软件工程师超过2000人(Windows2000也只动用了1700名),花费超过5亿美元,竟然超过了硬件研发的费用,所有这些都是创纪录的。
      
        负责这项艰苦卓绝的开发任务的,是Frederick Brooks,当时年仅三十,他是世界上第一批获得计算机科学博士学位的人之一,有趣的是,当开发这个新型操作系统的计划提出时,Brooks本是最强硬的反对派,因为他觉得这个项目的难度骇人听闻,实在是不切实际。但当IBM的管理层拍下板来,要Brooks担当重任时,他居然慨然应允,高风亮节,实在是令人佩服。
      
        360操作系统的开发用了5000个人年(人年就是一个人一年的工作量),由于从未有过开发这种大型软件的经验,开发组陷入了“有史以来最可怕的软件开发泥潭”,最终也没能实现当初的设想。Brooks后来根据这次开发任务的经验,写了一本《人月神话》(The Mythical Man-Month),成为软件工程领域内的经典著作(某种程度上是宣扬的一种失败论)。他本人更在99年获得了计算机领域的最高奖——“图灵奖”。
      
        尽管软件开发工作未获全胜,但360项目还是取得了辉煌的成功,IBM在籍此在计算机行业几乎是一统天下,IBM/360更被誉为人类从原子能时代进入信息时代标志。此后IBM开发的大型机系列都保持了与360系统的兼容,直到最新的z系列,在360上写的程序仍可以不经修改的运行,“兼容”这一概念从此开始深入人心。
      
      (待续)
      
        需要交待一下,360计划虽然是在61年开始启动,但等到完成己是1964年,它的主要部件采用了集成电路(Intergrated Circuit,IC),属于第三代计算机,它也是第三代计算机的标志产品,还有前面提到的CRAY巨型机,也属于第三代。Cray此人厉害无比,不可一世的IBM几次栽在他手上,在IBM研制360时,Cray还在CDC(控制数据公司,好象那时的计算机公司起名都很低调,象IBM、DEC都是平铺直叙,不象现在的IT公司,名字一个比一个花哨)工作,他带领的团队只花了700万美元就搞出了一台比IBM的产品快上3倍的东东,让IBM震惊不己,而他的诀窍就在于开创性地使用了并行技术(就是用多个处理器并行工作),这项技术到现在还是制造超级计算机的基础。
        Cray后来离开CDC自立门户,于1972年开了家用自己名字命名的公司(这好象是西方的传统,象HP、DELL都是这么来的,Microsoft也差点就叫Alan-Gates),专搞巨型机,并练就了一门叫做“向量处理”的绝技,独步天下,在80年代,他的产品一度占到世界巨型机总数的70%(“侏罗纪公园”里的恐龙DNA就是用CRAY机来处理的,呵呵),让IBM丢尽脸面。不过CRAY公司其亡也忽焉,后来渐渐没落,公司几次易手,先后被SGI和TERA收购,巨型机老大的位子不久就被IBM夺回去了。
        说了半天,也没提操作系统,有点跑题了,呵呵。其实是因为关于CRAY机的操作系统,我也一抹黑:(,只是听说它的操作系统都是由Cray博士用机器码(就是0101001......)写出来的,居然没出现什么BUG,我真是无语了~~
      
      (待续)
      
        CDC和CRAY并非唯一斩IBM于马下的公司,在小型机领域,IBM也是一败涂地,胜利者叫做DEC(数据设备公司,成立于1957年,明明是家计算机公司,招牌上却不带计算机字样,之所以如此,是因为当时IBM在计算机领域只手遮天,不敢撄其锋芒也),创始人Ken.Olsen,是计算机历史上一个颇有悲剧色彩的人物,他能力非凡, 白手起家创建了长期排名世界第二的计算机公司,在1986年被《财富》杂志评选为“全美历史上最成功的企业家”,但最终却因经营不善,被他自己一手创建的公司扫地出门(Steve.Jobs倒也有此经历,不过他卷土重来了),更因为对PC的错误估计(1977年曾说“我们没有理由认为人们会需要家用电脑”)被人们引为笑柄(其实犯这种错误的名人多了,不一一列举)。
        为了不引起IBM注意,DEC推出的第一台机器都不敢叫计算机,而是取了个暧昧的名字叫做“程序数据处理机”(PDP,呵呵,了解电脑发展史的人肯定如雷贯耳)。PDP-1于1959年推出,全晶体管构造,在当时还是电子管计算机当道的年月,可说是相当先进。相比当时的那些大块头,这台只有冰箱大的机器显得相当小巧,这台设计精良的机器让DEC发展迅速,仅仅几年功夫,DEC就从借来的七万美元起家发展到年销售额几百万美元,在六十年代初,这可是个很可观的数字。
        DEC坚持走小型机的道路让一些本来只能望着昂贵的计算机兴叹的单位终于可以买上一台,它独创的分时技术也为更多的人使用计算机创造了机会,在众多的受益者当中,有一个叫Ken Thompson,在操作系统的历史上值得大书特书。
      
      (待续)
      
        Unix可能是世界上最有影响的操作系统,它的第一版是由Ken Thompson在一台PDP-7上完成的。
      Thompson当时供职于AT&T的Bell Labs(贝尔实验室,一个资格极老、极牛的科研机构,晶体管就是在这里发明的,96年AT&T被拆分后划归朗迅),Bell Labs曾经参与了一个叫做Multics(Multiplexed Information and Computing System)的研究联盟,该项目旨在建立一个多功能的“信息应用工具”,以支持多用户对大型机的交互式分时操作,但跟IBM的360计划一样,这个志向高远的项目不幸以失败告终,尽管也得到了几个不太成功的系统。Thompson参与了这个开发项目,散摊子的时候,他收获了一些灵感,还有一个自己编写的游戏(不务正业啊~~这个叫做《星际旅行》的游戏只比公认的史上第一款游戏《太空争霸战》(1962)晚了几年而已)。
      Thompson首先是在GE(通用电器,没错,他们那时也造计算机)的大型机上玩,糟糕的是,在这台机器上,源自Multics项目的操作系统运行的很不尽人意,玩起游戏来,响应忽快忽慢,让Thompson很是不爽(我们当然能够理解,想想你正在魔兽中杀的过瘾,机子忽然停下来狂读硬盘是何等扫兴),于是他以开发一个新的交互式操作系统的名义,向领导要求配备一台DEC-10——另外还有一个原因,据Thompson的死党Dennis Ritchie(也是个大牛人,C语言的发明者,Unix的合作发明者)透露,在Ge上玩一次游戏的费用高达75美元(当时的机时可是很贵的),想来如此挥霍公款,Thompson心下也有点惴惴,要台机子自己瞎掰,就安全的多——但刚在Multics项目上遭遇失败的领导们断然拒绝了他的无理要求(呵呵,可怜的Thompson),最后,Thompson只搞到了一台已经废弃的PDP-7。
      
      (待续)
      PDP-8是DEC的第一台采用集成电路的计算机(第三代),也就是说PDP-7还是一台晶体管计算机,这就好比,你向领导打报告要配一台酷睿2,最后却只能在仓库里翻一台286出来用,Thompson的沮丧可想而知。PDP-7的配置如何,我没查到资料,但PDP-11也只有512KB的磁盘,PDP-7想来更少得多,内存应该只几十K(别吃惊,这个数字我估计得很乐观了,几十K内存也是可以做不少事的,Gates同学写的第一个BASIC解释器可是在一台4K内存的Altair上跑),显示器当然是别想,一台电传打字机把输入输出都包了(什么?没显示器怎么玩游戏?谁告诉你是游戏一定是视频的?)。后来,Thompson在忆苦思甜的时候告诉Raymond,我那时用的机子那个惨啊,内存磁盘加一块还赶不上现在一个最便宜的手机~~
      要在这么烂的的机器上玩游戏,当然得下一番功夫,原有的系统肯定是不能支持了,得重头干,没说的,为了游戏。经过Multics项目的煅炼,Thompson对于写操作系统已很在行,反正机器烂,不可能搞什么复杂的名堂,什么项目计划书呀,都免了,就跟Ritchie两人合计合计,他一个人花了两天时间就搞出来一个原型,厉害吧?WindowsNT的主设计师(也是VMS的设计师)David Cutler曾有一句名言——“Who can't write an OS in a week?”,固然牛气哄哄,比起Thompson似乎还颇有不如,呵呵。
      
      (待续)
      
      那是1969年,Thompson搞出来的这个东西就是Unix的雏形,尽管把它称作Unix还有点勉强,但已经显示出Unix的一些基本特征——简洁、高效、比当时所有的操作系统都更注重交互性、对程序员友好(它就是程序员写出来给自己用的,是当时唯一允许程序员边写代码边测试的系统),也许,还有那么一点散漫,而且,即使如此恶劣的硬件条件下,它仍然具备一个简陋的文件系统,有特殊的文件类型以支持目录和设备,甚至,可以支持多任务(想想晚它十几年问世的DOS还只能支持单任务,就知道Thompson有多牛了,当然,DOS可以用变通的方式支持多任务,但毕竟不是原生的)。当然, 还有很多Unix的特性它还不具备,比如,它的核心是用汇编写的(汇编器也是Thompson自己写的),当然不具备可移植性,并且,只支持两个用户(想来就是Thompson和Ritchie,呵呵)。
      有一点值得一提,这个系统除了用汇编以外,还用到了另外一种语言,就是解释型的B语言(也是Thompson自己发明的,这家伙真是自力更生模范的说~~),主要用来写应用程序。B语言是Thompson在一种叫作BCPL(Basic Combined Programming Language,由剑桥大学的Matin Richards在CPL语言的基础上简化而来,CPL是在ALGOL 60语言上发展而来,至于ALGOL 60可就牛了,它被称作是“计算机科学诞生的标志”,这些语言通通源自剑桥)的语言的基础上简化改进而来(之所以叫B语言,就是把BCPL精简提炼的意思),它非常简单(不支持数据类型和结构,放在今天真难以想像),并且极亲近硬件,可以把它看作是一种稍微高级了一点的汇编语言。后来,Ritchie给B语言加上了数据类型和结构的支持,推出了一代王者——C语言(意思是“BCPL”中排在B之后,在TIOBE语言排行榜上至今在一、二名徘徊),并将Unix用C语言重写,那就是后话了。
      
      (待续)
      
      经过一番鼓捣,Thompson的游戏终于可以在PDP-7上跑起来了,但这台机子毕竟太烂,而且还是借来的,Thompson他们一直期待着能搞台更好的机器用,在1970年,这个机会来了,Bell Labs的专利部门需要一套“文字处理系统”(他们的专利可是很多的),当时可没有现成的Word,Thompson就把这活接下来了, 并名正言顺地买了一台PDP-11/20(比当初申请的DEC-10还是便宜多了)。
      他们首先把Unix从PDP-7上移植了过来,汇编写的代码没什么可移植性,所以基本上就是在PDP-11上重写了一次,这种没多大创造性的工作想来做起来并不怎么愉快,给后来Thompson下定决心,用高级语言(C语言)来写操作系统增加了动力(MULTICS可能是最早用高级语言写操作系统的尝试,当时用的是PL/I,以失败告终,那时的普遍观念,操作系统是不宜用高级语言来写的)。
      在PDP-7上,他们曾经写过一个叫做roff的文本格式化程序,再配上一个编辑器,一个“文字处理系统”基本上就齐活了,于是Bell Labs的专利局成了Unix的第一个商业用户,这是在1971年11月,在与系统配套的手册中,该版本被称做“First Edition”,有些史料就把这一年作为Unix的诞生之日。
      顺便说一下,Unix这个名字是Thompson在Bell Labs的同事Brian Kernighan取的,在1970年,Kernighan开玩笑地把Thompson在PDP-7上的那个简陋系统称为“UNICS”,意思是“UNiplexed Informationand Computinig System”,这是相对于MULTICS来的, MULTICS是“Multiplexed Information and Computing System”的意思,后来,UNICS变成了Unix并且流传开来(这种简化应该是出自一种黑客趣味)。
      
      (待续)
      1972年Unix发布了第二版,最大的改进是添加了后来成为Unix标志特征之一的管道功能,所谓管道,就是程序之间交流数据的通道。这一设计,对鼓励简洁、小巧、灵活,而又注重通用和协作的Unix程序设计风格意义重大,与此相关的,还有过滤器这一设计,Unix下的程序大多小而精,但相互之间的协作性极好,与WINDOWS下推崇大而全的程序设计风格大异其趣,这是在系统设计之初就埋下了种子的。这一年,Unix的装机数达到10台,都是Bell Labs内部的机器。
      在写第二版的时候,Thompson和Ritchie曾经试图用B语言来重写核心,但因为B语言功能太弱,最后放弃了。Ritchie因些萌生了搞一个新语言的想法,它必须强大到可以写系统级软件。于是,在对B语言进行了卓越的改进之后,一个传奇——C语言诞生了,这是在1973年,此后,这一语言包揽了绝大多数的系统级开发,在前两年泄露出来的WINODWS2000的多达几百M的源代码中,大家看到,除了极少的汇编和C++,绝大部分代码都是C语言写就,在记者问到Ritchie为什么C语言会如此受欢迎时,Ritchie很低调的回答,可能是C语言的抽象程度既能满足需要,又比较容易掌控。跟Unix一样,C语言确实是一种简洁而优美的语言,“审美”是这种殿堂级软件设计思想的核心,爱因斯坦曾经说过,描述基本物理理论的数学方程中必须有美,与软件设计倒是不谋而合(但世事难料,比如Windows,或者Perl,这些许多人认为比较臃肿、丑陋的设计也都活得有滋有味,当然,能挺多久难说)。顺便说一下,虽然C语言如此威猛,但身为C语言之父的Ritchie最爱的语言却并不是它,而是一种我听都没听说过的Alef。
      有了C语言这柄利剑,Thompson和Ritchie很快就重写了Unix,在MULTICS项目失败以后,用高级语言写操作系统的梦想终于实现了,好多年后,Ritchie骄傲的写到,很肯定,Unix的成功很大程度上源自其以高级语言作为表述方式所带来的可读性、可改性和可移植性。看着这个基本上达到了预想的作品,Thompson和Ritchie不免有些沾沾自喜,觉得可以拿出去“炫”一把了,于是在1974年,他们在《美国计算机通信》(Communications of the ACM)上发表了一篇文章,第一次对外面的世界展示了Unix的存在。
      且说这个新版的Unix搞出来以后,Bell Labs里的很多科学家都挺感兴趣,经常跑到那台PDP-11上去鼓捣一番,但很快他们就发现,自己设置的帐户Thompson总能轻易地闯进去,Bell Labs里的人物岂是泛泛之辈,怎甘受此羞辱,于是就有人把源码翻了出来,经过一番分析,去掉了后门,然后重新编译,于是,整个世界清静了——且慢,正在他们沾沾自喜的时候,却发现,帐户又被Thompson破解了,这下大家彻底郁闷了,这一郁闷就是好多年,Thompson的洋洋自得就别提了。直到14年后,Thompson才突然良心发现,道出了个中巧妙,原来代码中的后门是有的,不光是系统本身,还藏了一个在C编译器中,系统本身的后门虽然被清除了,可还是用有后门的编译器来编译的啊!哈哈。
      而Ritchie就厚道多了,他只是很热心地向大家推介他的C语言,并鼓励大家使用C语言中的函数调用——这真是一种先进的设计方法,何况还有Ritchie信誓旦旦地保证——C语言中的函数调用的机器开销真的很小很小,于是,人人都开始写函数,搞模块化,等到大家终于搞清楚,在PDP-11上,函数调用的机器开销竟达到50%时,已经是积习难改、欲罢不能了,至于Ritchie,当然是躲到一边偷笑去了(话说回来,这种设计思想毕竟是正确而先进的,只是在当时落后的硬件条件下,显得有些奢侈,呵呵)。
      
      Thompson和Ritchie在Communications of the ACM上的文章发表后,引起了许多大学和实验室的关注,因为文中着重鼓吹Unix的简约设计及在低性能机器上的良好表现,大家(主要是那些用落后机器的穷单位,嘿嘿)都想见识一下。本来这是笔送上门来的生意,但AT&T有点特殊情况,因为它由来已久的垄断地位,早在1958年就被反托拉斯调查,根据那次调查达成的协议,AT&T不准进入计算机相关的商业领域(IBM少了个大对头),也就是说,AT&T不能拿Unix卖钱(交待一下,Unix虽然是Thompson他们自作主张搞出来的,但毕竟是AT&T员工的工作成果,因此AT&T享有版权),而且依据那次协议,AT&T有义务将电话(这是本行)以外的技术许可给任何提出要求的人——这条有点匪夷所思,简直是欺负人嘛:)——正是这条协议,给Unix的流传大开方便之门。于是,在仅收取工本费之后,Thompson开始将Unix的磁带和磁盘一包包的寄往世界各地(是不是有点史诗味道?:)——据说,每一包里都附了张小纸条,上书“love,ken”——真是剑胆琴心的说~~~~
      寄出去的Unix是第五版,附有源代码。犹如散落的火种,这些被安装在各处管理松散的廉价计算机上(这点很重要,如果是安装在昂贵的大型机上,就没有那么多机会让人瞎鼓捣了)的操作系统,点燃了许多计算机爱好者的创造热情,他们日以继夜扑在上面,摆弄代码,添加功能,然后彼此交流,相互炫耀。不少大学都开始拿Unix作教学之用。
      大家在遇到麻烦的时候,可以向Thompson他们的小组打电话 , 或者通过原始的UUCP(Unix to Unix Copy Program, Bell Labs开发的一的种在Unix机器之间通过电话线和MODEM通讯的程序)发送问题,甚至可以跑到Bell Labs去与他们当面交流。Unix许多重要的改进和发展正是由这群主要来自于各所大学的爱好者们完成的,这些成果被反馈到Bell Labs。在1979年发布的第7版Unix中包含了很多由爱好者们贡献的创意乃至代码,这是公认的第一个完整意义上的Unix。可惜由于版权问题及商业利益的影响,这种开历史先河的发展模式并没有持续多久,幸好,在好多年以后,在Internet的支持下,我们将会看到,Linux,这一Unix的变种,成功地将这一模式予以了辉煌的再现。

    最早散布出去的UNIX几乎都是装在DEC的PDP机器上,在1976年前后,开始有好事者将其移植到其他种类的机器上,包括Interdata系列、IBM的Series1系列以及VM/370。这时,Thompson和Ritchie用C语言编写系统的苦心开始得到回报——即使是设计大不相同的异构机器,移植工作也进行的相当顺利(当然,是相对的),Ritchie甚至宣称,将UNIX移植到别的机器上比把一个应用程序移植到另一个操作系统中还要简单。1978年,DEC公司推出新的拳头产品VAX后,UNIX很快就被移植到上面,尽管没有支持VAX特有的换页功能(一种内存管理的技术),但仍然很快流行开来,对DEC苦心开发的专门用于VAX机器的VMS构成了重大威胁。
      UNIX在初期主要是用于DEC的机器,尽管没有正规的技术支持,但仗着灵活、快捷、容易修改和扩充以及资源丰富(包括支持的硬件设备更丰富,DEC的操作系统只支持自己的系列产品)的强大优势,很快就严重影响到DEC自身的软件推广。碰上这样的飞来横祸,DEC当然是非常恼火,他们对使用UNIX而带来的硬件问题拒不提供支持,但尽管如此也不能阻挡大家对UNX的热情。而VAX/VMS乃是DEC寄予厚望的战略级产品,技术那是相当的优秀,居然甫一推出,就又遭到UNIX的追杀,也难怪老板Olsen会口出恶言,讥讽UNIX是“蛇油”(意为“骗人的万用药”)了。DEC苦撑了几年之后,终于不支,改变态度,于1982年推出了自己的UNIX变种——DEC ULTRIX,但在推广策略上,仍是以自家的VMS为主导。DEC公司的保守作风终于酿成大祸,在别的公司推出专门针对UNIX设计的机器后,DEC的江湖地位每旷愈下,在PC问世后,更是一蹶不振,后来连年亏损,1992年把Olsen赶下台也没解决问题,终于在1998年,这个曾经的传奇——一度排名世界第二的计算机公司被后起之秀COMPAQ并购,不过96亿美元的天价也算是对它价值的承认。COMPAQ后来被HP以260亿美元收购,HP后来被……HP这么大的块头,估计一时半会也没人吞得下它,呵呵。
      DEC的机器曾是UNIX诞生的温床,但DEC的没落UNIX却起到了相当重要的推波助澜的作用,如果DEC当时采取拥抱UNIX的策略,也许计算机产业又是另一番格局了。当然,世事难料,这种推测也只是扯淡罢了。

    VAX是一种32位的小型机,因为它惊人的寻址能力(达4GB,尽管由于成本关系,大多数VAX机器也只配备了1M内存),DEC为它设计了革命性的换页技术,的确让Unix有点赶不上趟,但这项让DEC引以为傲的技术优势并没有保持多久,仅仅一年之后,一个叫做Bill Joy的来自Berkeley(加州大学伯克利分校,University of California at Berkeley)的学生就在Unix上实现了这一技术。
      Berkeley是一所很牛的大学,做为一所州立大学,它在很多领域都能和那些财大气粗的私立学校相抗衡,它不仅拥有数以十计的诺奖得主,而且还是许多社会潮流的源头,比如嬉皮文化、反越战运动等。在九十年代末的一次美国大学评比中,它的不少专业都名列前茅,比如文学、新闻等,当然,更值得说的是,它的电脑和电子工程技术专业名列全美第一,甚至把更鼎鼎大名的MIT、Stanford都甩到了后面。Berkeley与Bell Labs似乎关系不错,早在Thompson发表那篇宣言般的论文之前,就搞了一份Unix来用,还专门为此买了一台PDP-11/45,比较丢人的是,他们鼓捣了几天也没把Unix装上去,最后还得劳动Thompson亲自出马,呵呵。其实原因是出在Unix自身,因为他们买的那台PDP太高级,竟然配备了双硬盘,Unix那时还不支持。
      其实早在此之前,Joy就已经致力于Unix的研发。在1997年年初,Joy就编写并发布了一个以BSD(Berkeley Software Distribution)命名的Unix版本(有个传说,说最初Joy用三天时间就写成了一个简陋但可用的Unix,忍不住怀疑搞操作系统的都是一伙超人~~~~:),BSD后来影响如此之大,足可与AT&T的原版相提并论。在第一版的BSD中,Joy就搞出了些新意思,他写了Unix中的第一个Pascal编译器(Pascal由瑞士的Niklaus Wirth教授于1970年发明,是一种影响深远的语言,许多现代语言,例如Java都受过它的影响,尤其以应用于教学著称,当然也应用于许多实际的项目,著名的如Delphi,它甚至被用来写操作系统,Apple早期的MAC系统就是用他们自己的特殊版本的Pascal写的),以及Unix中的第一个全屏编辑器VI(到现在仍是Unix中最常用的程序之一,虽然编辑器出了无以数计,但能与VI相提并论的,大概也只有Emacs了,这又关涉到另一个大牛人,先按下不表:),另外,他还写了一个重要的C语言函数库termcap(也流行了好多年)。

    早期的BSD并不全是Berkeley搞出来的,里面含有大量属于AT&T的代码,以及一些其它大学贡献的代码。这时的AT&T由于不能用UNIX赚钱,所以态度很不明朗,对于教育及科研机构的政策很宽松,只收取象征性的费用,提供源码,并且没什么使用限制(很高明的推广策略,事实证明成效斐然,堪与微软对盗版暧昧的纵容相比),对于企业用户的收费就很高(一份带源码的拷贝要2万美元,装多台机器的话还得另加,比起BSD来这还算便宜,一份源码版的BSD要4万),而且限制多多。但也不能说它把UNIX商品化, AT&T没有自己的UNIX开发计划,而且既不作广告推销,也不提供技术支持、售后服务,对产品品质也不作任何保证(如果出现什么BUG,你也得自己认了~~),至于没有试用期,一手交钱一手交货那就不用提了,跩到这个份上,也实在不象做生意的样子:)。
      但Bell Labs内部还是成立了几个小组(类似学校里的兴趣小组,当然也可能怀有商业用心:),承担了一部分UNIX的技术支持工作(非官方),并且进行进一步地开发。Thompson和Ritchie他们的小组就叫“Research”,他们主要搞研发(并不限于UNIX),对技术支持没多大兴趣,挑大梁的是另外两个,一个叫PWB(Programmer's Workbench,他们对UNIX做了不少改进,并且发布了一个自己的版本PWB/UNIX),一个叫USG(UNIXSupport Group)。糟糕的是,这几个小组互相看不顺眼(文无第一,武无第二,这也是没办法的事:),对UNIX的理解也不尽相同,乃至各自散发出去的的版本都不是很兼容,UNIX复杂到让人头大的谱系这时就已开了滥觞。
      在这种状况下,UNIX尽管在教育科研领域声誉日隆、炙手可热,但对计算机产业的影响仍然有限,毕竟它还只是一种非标准化、非商业运作的技术,只能拿来用,没法靠它赚钱。后来AT&T的政策松动了一些,在1978年前后,才开始出现商业公司提供UNIX的技术服务。1980年,AT&T发布了UNIX的distribution binary许可证(可分发二进制版),这下别的公司终于可以用UNIX来卖钱了,第一家买下这种许可证的公司是Onyx Systems,值得一提的是,它的产品是微机(比较另类的一种,采用Z80000的CPU),UNIX与微机的渊源可谓由来久矣。
      差不多与此同时,有公司开始开发UNIX的克隆版——就是全盘复制UNIX的功能,可以兼容UNIX的程序,但代码完全重写。第一个版本是Whitesmiths公司推出的IDRIS(它雇了几个前AT&T的程序员,还曾经推出第一个商业C语言编译器,),开始为了避免版权纠纷,Whitesmiths有意在库名称及参数顺序等地方作了些小改动,后来AT&T高姿态地宣布不追究这些细节,于是开发与UNIX完全兼容的系统成为可能,很快很多公司(包括几乎所有的业内大腕)就开始蜂涌而上了:)。顺便说一下,上世纪末的时候,有一家澳大利亚公司曾开发出一个兼容Windwos的操作系统,但因为版权关系,没来得及推广就夭折了:(。
      举几个开发过UNIX克隆版本的公司名字,有IBM(名字叫AIX,1986年发布),HP(HP-UX,1982年),SGI(IRIX,1987年),Microsoft(XENIX,1980年),SUN(Solaris,1985年),Apple(MacOS X,2001年)~~~~其中有一些主要源自BSD的版本,如SUN和Apple,但追根究底,仍是来自那个出于Bell Labs的天才发明。Bell Labs的一位高层人物后来曾说,UNIX和晶体管是Bell Labs最重要的两项成就。如此评价,Thompson和Ritchie应该可以得意地笑了:)。

    待续。。。。。。。。。更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • Continue
      本文发表在 rolia.net 枫下论坛AT&T于1983年发布了System V(简称SVR1,意为System V的第一版,在Bell Labs原版的基础上吸收了一些来自其它版本的技术),此后便一直沿用这一名称。直到1993年AT&T将UNIX卖给Novell之后(连同拥有UNIX产权的子公司USL,Unix System Laboratories),Novell仍使用了一段时间,最后一个System V版本是Novell于1993年12月推出的SVR4.2MP(MP是“多处理器”的意思)。而最先的那个版本(以Version x命名)Bell Labs仍继续发展了一段时间,直至1990年推出的Version 10。但SV系列推出后,这一系列影响就小了,大多数UNIX的变种都是源自SV系列和BSD系列,而SVR4本身就吸收了BSD系列的一些东西(主要是TCP/IP协议栈)。
        UNIX技术虽然广受欢迎,但这一商标本身似乎并未创造很大的价值,AT&T大概是因为受条约限制,据说在它身上只赚了几亿美元,而Novell也没能很好地利用它,Novell后来将自己的Netware与SVR4相结合,推出了Unixware,随后就将UNIX的商标权卖给了X/Open Company。到了1995年,干脆把Unixware也卖给了SCO(Santa Cruz Operation,这家公司好象不太厚道,前两年因为Novell转向发展Linux,SCO以不太站得住脚的原因起诉Novell侵权,同时还告了IBM,因为诉讼对Linux非常不利,激起公愤,我记得当时《电脑报》以很少见的激烈言辞在头版予以报道)。
        X/Open Company在1996年与OSF (Open Softare Foundation)合并,成立了The Open Group。这个非赢利组织到目前为止拥有着UNIX的商标权,实际上,经过这么一番复杂的变迁,UNIX这一名称似乎已经谈不上有多大的商业价值了,更多的是一种标准和象征。The Open Group负责发布和维护Single Unix Specification(UNIX规范),后来ISO(国际标准化组织)发布的UNIX标准主要就是照这个来的。关于UNIX还有一个重要的标准,就是由IEEE(电气和电子工程师协会)发布的POSIX(Portable Operating Systems Interfaces for Computer Environment,Linux最初就是照着这个葫芦画瓢来实现与UNIX的兼容的:)

      有关AT&T的叙述告一段落,再说两句Thompson和Ritchie,与这两位牛人告别:)。就象顶尖的物理学家只对大问题感兴趣一样(一般是在证明一种理论后就转向研究其它,那些细枝末节的问题就交给那些实验物理学家了),在发明UNIX之后,他们并没有在这上面花费太多功夫,除了做一些本职工作的研究之外(例如IP电话),他们还继续对操作系统进行探索。由于UNIX的核心设计完成的如此之早,Thompson他们虽然天纵英才,却也没能料到计算机的发展如此日新月异,UNIX最初是作为一个基于单机的分时系统来设计的,这显然不符合当今潮流,虽然仗着它高效、稳固以及灵活的可扩充性设计,在今天的网络时代仍挑着大梁,但在新兴应用层出不穷的情形下不时表现出的核心技术的滞后让Thompson他们颇为不爽,于是他们决心搞一个新玩意。
        在80年代后期,Thompson和Ritchie开始开发Plan9(1995年推出)。这个看上去与UNIX颇为相似、仍旧以C语言编写的操作系统是全新的,它面向网络和分布式计算,在一定程度上,它提出的概念有点类似上世纪末Oracel和SUN他们提出的NC(NetWork Computer),或者叫“瘦客户端”,核心理念就是把网络里的运算能力集中起来,客户机则用不着太快。在Plan9系统的网络里,有一个“CPU服务器” ,它来处理大多数的运算请求,然后将结果返回到各客户端。这一构想很早就有人提出,所以Thompson他们也好,Oracel他们也好都不算是发明创造,在今天,这种应用也很普遍(比如Google,海量信息的搜索和查询请求的处理就是在服务器端完成的,大多数网络开发技术都是基于服务器端),但在系统级的架构上实现这一理念,Plan9首开先河。而且令人兴奋的是,Plan9顺应了开源软件的大潮,大家可以去Bell Labs或者Vita Nuova(经营Plan9和Inferno的公司)的网站上下载到它附有源码的版本。
        后来,Thompson和Ritchie还主持编写了一个叫做Inferno的系统(1996年推出),这个系统基于一种叫做Limbo的语言(这个主要是Sean Dorward设计的,Thompson曾特意声明,大家别搞错了,呵呵:),在概念上与JAVA比较类似,它有一个通过Limbo语言接口的交互层,即可以做为一个单独的操作系统安装,也可以作为一个应用程序在别的操作系统中运行——就象JAVA虚拟机(SUN也曾做过纯JAVA的操作系统,不过好象效率低下,没能推广开),Inferno比JAVA推出的略晚一些,但考虑到研发的时间因素,分不清谁先谁后,不过Thompson说Limbo要比JAVA清爽,当然这只是一面之辞:)。
        除了计算机之外,Thompson和Ritchie的爱好就不大相同了。Ritchie喜欢古典音乐,但并不发烧,通常只在收音机里听听,Thompson喜欢流行音乐,而且非常发烧,他收集了几万首上过排行榜的流行歌曲——以一种Bell Labs发明的叫做PAC的压缩格式,音质远超MP3,而且他透露大多是“非法”取得的(相信不少同志有过类似行为:)。Ritchie喜欢旅行,规规矩矩的那种,比较出格的也就是开开大卡车,Thompson就比较猛,他喜欢开飞机,而且水平不错,在前苏联时代,曾经开着飞机过去跟他们的米格-29比试了一番。现在Thompson己经退休,当上了飞机教练,Ritchie则还在Bell Labs工作,当上了领导,负责系统软件研发部门,主要工作不再是写代码,改成了开支票(按咱们时下的流行理论,这也算是程序员修成了正果,呵呵)。Ritchie曾经与Brian W.Kernighan合写了《The C Programming Language》,是计算机科学的经典名著(单就发行量似乎不如谭浩强那本,但影响不可同日而语),世界上最著名的程序——“Hello,World.”就是在这本书里首次亮相:)。Ritchie低调而自负,自称没有偶像,唯独对Thompson赞赏有加,他拒不承认对UNIX的贡献与Thompson一样多,并声称Thompson的编程水平自己望尘莫及。而Thompson似乎是个乐天派,他自称做过的几乎所有事情都是出于个人爱好——我真希望自己也能说出同样的话来。
        1983年,Thompson和Ritchie荣获图灵奖,首开以软件工程师而不是计算机科学家的身份获奖的先例,并促使图灵奖开设了一个新奖项——软件系统奖;199年,他们俩又获得了“全美技术勋章”,作为程序员,他们获得的荣誉可算是登峰造极了。但Thompson对当今计算机业的看法却不太令人鼓舞,他说计算机业已经进入了中世纪,不再那么令人兴奋,他建议自己的儿子选择生物工程,而不是计算机,顺便说一句,Thompson曾经细读过Linux的源码,对这个新一代的传奇评价不高,进而对整个计算机业的技术发展似乎都比较失望。比起二、三十年前,现如今的IT业的确商业味更浓,而革命性的创新鲜见,如果真如Thompson所言,如今是处于计算机业的“中世纪”的话,真希望能早点等到“文艺复兴”的到来:)。

      转过头再来说BSD。
        当时搞UNIX研发的并非只有Berkeley一家,只因Berkeley出了Bill Joy这么个大牛人,一下子把别人都压下去了,到第三版(就是可以完美支持VAX机的那一版)推出后,风头之健,更是盖过了Bell Labs,成为UNIX技术发展的中心,因为这样的优势地位,不久之后,一个巨大的机遇找上门来。
        1979年,DARPA(Defens Advanced Research Projects Agency,美国国防部高级研究计划局)开始着手一项计划,全面更新他们的ARPAnet(一个用于连接他们散落在美国各地研究中心的计算机的网络 ,Internet的前身)。早期运行ARPAnet的都是些PDP-10,现在已是风烛残年,该退休了,DARPA准备换上新型的VAX机来接班,加上前两年开发的TCP/IP协议(Transimission Control Protocol/Internet protocol)也得借这次机会登台亮相,这将是一次脱胎换骨的大换血。DARPA首先想到的是找DEC,毕竟VAX就是他们的产品,但他们需要对操作系统进行大幅度的修改,想到DEC对于自家VMS的保守态度,上门搞不好要碰个大钉子,自己动手吧,又没下嘴的地方——正犹豫间,BSD的出现让他们眼前一亮——完全支持VAX,可获得源码,可定制,可移植,简直就是个度身定做的系统!
        于是他们找上了Berkeley。Berkeley当然是有见识的,这么有意义的活计上哪去找,共襄盛举那是求之不得啊,于是在1980年两家就签订了一个合同,由DARPA资助Berkeley发展UNIX,以满足DARPA的需要。Berkeley为此专门成立了一个小组叫做CSRG(Computer System Research Group),由Bob Fabry教授负责(就是将UNIX引入Berkeley的那位),Fabry当然很想Joy参加进来,但当时Joy刚通过Ph.D.的考试,为其学业着想,Fabry也不好意思去找他,但没多久Joy就主动找上门来了(一点不奇怪,他不参加倒真奇了怪了:)。
        且说DARPA的一个主要要求就是要将TCP/IP协议集成到UNIX中,他们此前就找了一家叫BBN的公司写好了协议栈,CSRG就安排Joy来做集成工作。没想到的是,没过几天,Joy就完成了——这没什么稀奇,稀奇的是,他根本没用BBN写的协议栈,他居然自己重写了一个,原因竟是,他嫌BBN的那个写得太烂!要知道BBN的那玩意可是一项巨额合同的成果,BBN和DARPA这下觉得太没面子了,肯定有内情,就开会研究,请Joy参加。且说Joy穿着件T恤,蓬头垢面的就进了会议室,满坐西装革履,看着这小子不觉有点发呆,回过神来就问他,你是怎么写出来的(估计还存着念头,以为他以前做过相关研究什么的)?没想到回答简直让他们喷血,Joy说,这个嘛,很简单,你读协议,然后编码,就行了。:)


      最早集成Joy所写的TCP/IP模块的BSD版本是4.1a,跟3BSD之间隔了两个版本,4.0和4.1。这两个版本的进步不算大,4.0版主要是加进去一个Lisp系统(Lisp是一种资格极老的语言,由MIT的John McCarthy教授于1958年发明,仅比史上最早的高级语言——1957年由IBM开发的Fortran——晚了1年而已,这种设计理念奇异的语言非常与众不同,它对程序与数据不加区别,对其缺乏了解的人看到它浑然一体、遍布密密麻麻括号的源程序肯定会一头雾水,但它有着强大的表达能力,尤其适合符号和文字处理,是AI(Artificial Intelligence,人工智能)领域的首选语言——目前可能是它的一个变种Scheme用得更多些,著名的AutoCAD自带的脚本语言AutoLisp就是基于它,还有著名的Emacs也是Lisp写的,还附带一个完整Lisp版本——Emacs Lisp),以及一个增强的邮件处理系统,这个版本的生存期只有几个月,因为它存在一些严重隐患,大家抱怨颇多,于是CSRG很快就推出了4.1版,这个版本主要是对4.0版做了些修修补补,此外大一点的改动就是增加了自动配置代码功能。
        本来按Berkeley的命名规则,4.0版过后就应该是5.0版,但这时AT&T有意见了,因为他们自己推出的UNIX就叫System V,两个5容易混淆。BSD本来就是从AT&T那儿发展来的,人家一直都很宽容,况且到当时为止,AT&T的代码都还没替换干净,吃人家的嘴短,当然不好争什么,于是Berkeley决定,4字头就不往上升了,以后的版本只升小数点以后的数字(有点致敬的意思,好比芝加哥公牛队在乔丹退役后就不再使用23号球衣:)。
        而4.1a这个版本相当于现在软件的α版(内部测试版),Joy不仅为它集成了TCP/IP,还增加了多网络协议的支持能力,多个网络协议可以同时使用,这在以后成为操作系统的设计标准。因为4.0版的失败,所以CSRG决定发布新版本要慎重一点,所以先自己试用,但与现在的情形一样,这个版本还是流传了出去,并勾起了大家的兴致,不少FANS开始对4.2版充满期待。

      但4.2版的诞生颇为艰难,自1982年4月4.1a版发布开始,又过了1年零4个月,中间经历了4.1b和4.1c两个非正式版本,经历了Bob Fabry(还记得他吗?CSRG的BOSS,UNIX由他引入Berkeley,他的离去很大程度上是因为不堪重负——这种高强度的开发工作是很折磨人的)和Bill Joy(他于1982年以唯一一名技术人员的身份与Scott McNealy等4名Stanford的学生一起创办了SUN公司,如你所知,这是当今最著名的生产UNIX机器的公司,但他关于BSD的工作仍持续了好几年)的离去,才于1983年8月正式发布。
        这一版本非常成功(尽管问题也不少,主要是因为一堆新增的功能还没有很好的优化),发行量超过以往版本的总和,并且打败了AT&T的System V,成为广大UNIX厂商制作移植版本的首选,著名的如SunOS 4就是基于它,AT&T在SV的后续开发中也集成了4.2版的许多精华(抄袭是最好的赞美,谁说的来着:)。事实上,这一版本影响如此深远,尤其是其网络模块,此后几乎所有重要的操作系统都从中借鉴,更有一些是直接拿过来用。
        除了骄人的网络功能,4.2版还有许多其它方面的重大进步,如:新的、更强大的文件系统以及磁盘配额机制,新的信号机制,以及独立出来的输入/输出系统,还有全新的文档——这些都是大动作,而且就这还是迫于发布压力进行了妥协,不然还准备对交互通讯机制和虚拟内存管理模块开刀:)。
        所有人都表示赞赏——除了BBN(就是那个写了最初的TCP/IP协议栈并被Joy给否了的公司)。他们对Joy的那一箭之仇一直耿耿于怀,于是不停地向DARPA抱怨,说自己的理念是如何先进,设计又是如何优秀,BSD如果采用了我们的模块一定会跑得更欢云云~~~~,DARPA也不禁动了心,就责成CSRG重新评估BBN的代码,CSRG的高手一看,也确实有可取之处啊,但要说把自己的代码给换掉,也未见得可行,毕竟自己的代码此时已是经过考验的,于是就提出一个折衷方案,把两套代码都包含进去,由用户选择。但这下DARPA又不同意了,这可是网络模块,搞两个政府,自立山头,不是明摆着添乱吗?坚决不行!公说公有理,婆说婆有理,这也不是办法,于是干脆,DARPA请了个第三方的专家——Ballistics实验室Mike Muus来做评估。Muus忙乎了一个月之后,结果出来了,Joy的代码通过了所有测试,而BBN的呢,在高负荷的时候时不时会死给你看:)。于是DARPA拍板,新版本继续使用Joy的代码,BBN这下郁闷死了~~~:)。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 这么长,可以出书啦。 写得好,顶一个。
      • 一目十行的看完了。。。赞扬!
    • 了不起! 史诗!! 望善始善终.
    • 继续,继续!比古龙写的好看多了。呵呵。。。。。。
    • Lunch兄文风洒脱,诙谐自如,颇有‘阿西莫夫’的风范,顶了,继续
    • 诗史,天才论堆啊。什么时候能添俩中国人的名字就更好了。
    • original article can be found in tianya....
      http://www.tianya.cn/new/publicforum/content.asp?idarticle=52231&stritem=itinfo&idwriter=0&key=0&flag=1
      • very entertaining article indeed.
    • 看的似懂非懂。怎么不说些我熟悉的 DOS,WIN31之类?那不也是操作系统吗?
      • 那些名字,就象讲授中国史的说起秦始皇,李世民;而鬼老说为啥不提老毛、老江一样。一般来说科班出身的都对那些挨踢老的名字如雷灌耳。
      • 我记得小时候玩过一种东西叫什么Logo? 一个箭头画来画去,不知是不是操作系统。还有CP/M
        • yes...LOGO is OS. So does CP/M
    • 狗尾续貂,补充一点,DEC衰落后,它的前雇员流失去了别的公司,其中受益最大的是Microsoft 和AMD。
      DEC VMS 的主设计师 David Cutler 去了Microsoft 主持 Windows NT 设计,使 Microsoft 的操作系统有了质的飞跃(大家还记得NT 之前的 Windows 3.1 吗?)

      AMD 更是挖到了几乎整个DEC芯片设计组,在CPU设计上迎头赶上其竞争对手Intel,AMD推出的杀手锏Athlon64,不难看出DEC夭折的64位Alpha CPU的影响。

      Intel也不是毫无收获,它著名的hyperthreading技术,追根溯源,也来自DEC。
      • 顶,问一下那个moto的cpu现在还有吗?
        • 不知道,连 Apple 都转向 Intel 了...
          • 那个MAC的操作系统是不是也是类Unix的?
            • the kernel of Mac OS X is Darwin, based on FreeBSD (BSD 4.4)
              • 原来是这样?我这门外观景儿的一直以为OS X是linux呢?长得颇像嘛。那老mac OS呢?不属于什么宗派吧?
                • OS X is a micro-kernal os, way better than linux
        • 91年IBM/moto/Apple合作开发了PowerPC(RISC架构),我们用过它的40M~700MHz嵌入式版本,从硬件上提供了丰富的异常保护,继承了IBM很多大型机的经验,在2000年左右就提供64位CPU了
          本文发表在 rolia.net 枫下论坛它可以抗辐射、硬件异常,主要流行于军用、航天等恶劣环境、需要高可靠性的产品上,火星登陆车等都是用POWERPC,操作系统是Windriver。说道Windriver,大部分人可能不熟悉,因为它属于工业用的嵌入式操作系统。

          嵌入式操作系统大部分都是实时的,也就是说对任何事件触发、任务切换都必须在几个微秒之内完成。后来微软照猫画虎,搞个windows ce,一直到现在也被业界嘲笑,因为响应时间太慢了,大概是毫秒级的,人们特别给它创造了“软实时”这个概念。其实,微软还有实时版的Windows NT,Windows XP,主要用一些工业环境中。话说很多年以前美国军方一艘数字化战列舰(?),装的就是实时版Windows NT,结果在海里崩溃了,整艘船失去控制,不得不找拖船拉回港口重装操作系统——也许是卸载。不过这只是大家口头相传的rumor,这种机密是不会公开的,我也是听一个sales engineer讲起来才知道,微软那次可真是丢脸。

          说到微软的bugs,偶尔蓝蓝屏大不了重起一下,也无伤大雅,但是一些航空航天产品确实因为软件故障出过人命。60年代美国发射一艘无人火星(?)探测船,一个土生土长的程序员用英制数据编写了控制系统,但实际上数据是公制的,结果一上天就丢了。曾经有一架飞机制造公司,因为试飞时软件故障,发生坠机事故;著名的F22也因为控制系统故障损失过一架飞机。

          扯远了,再回到操作系统上,搂主讨论的都是通用操作系统,除此之外,知名且公开发售的实时操作系统、嵌入式操作系统有数百种之多,不过主要用在工业界,大家都不感兴趣。即使在通用操作系统领域,各种变种也非常之多,还是386时代我们学校曾经装过DR-DOS,DR就是DIGITAL RESEARCH公司的缩写,功能牛得一塌糊涂,支持4G内存、多任务、命令记忆等功能。其它衍生版本还有个freedos的操作系统,还有几个其它变形,忘了名字了,但是Canon照相机里面装的就是一个简化DOS操作系统。当时做projects,最头疼中断重入,100%系统崩溃,但是当时老师说“dos是程序员最好的操作系统”,虽然后来编成不多,但是想想也对,在DOS里可以控制任何软硬件资源。

          我还记得在286上如何装WINDOWS 3.10,如果没记错的话是11张软盘,后来WINDOWS 3.11简直是质的飞跃,14张软盘。不过后来发现WINDOWS只不过是个图形界面,底下还是DOS操作系统,它还不能成为操作系统,一直到WINDOWS 95还需要DOS引导。只有到了WINDOWS 2000才引入NT内核,DOS才最终完成历史使命。

          好像大家还没人提起OS/2,这个是微软和IBM合作开发的操作系统,纯32位的,要知道那时是91年左右,等到我上大学还装过,不知道是我的杂牌机不兼容,还是软件问题,反正很难安装,光启动就需要5分钟——显得很牛的样子。后来微软暗渡陈仓,搞出了windows 3.1,把IBM给涮了,否则微软早就被吃掉了。

          如今mac机的操作系统是移植自freeBSD,它是所有操作系统里最稳定的一个(不知有没有人反对),在全球网站服务器中占主导地位,接下来楼上各位应该知道得比我多,就不展开了。说到freeBSD,CISCO机器里面也是移植(或者说COPY)自它的,所以当年CISCO起诉华为,说后者抄袭了前者的源代码,还列给法官看——脸皮厚到如此地步,如果不发财真是天理难容啊——两家都COPY别人的东西,然后两个人打架争知识产权,晕。

          还有值得一提的,就是再说说Windriver,我怀疑它也是copy了BSD,兼容posix标准,调试器也是GDB。当年火星探测车在火星上(废话)抛锚,nasa专家不得不通过TCL语言进行外太空调试,发现发生了“优先级翻转”(太深奥了),用了几周时间重新编译软件,再上传到火星,烧进去重新启动了无人探测车——这可能是人类第一次进行外太空软件调试。为什么不怀疑WINDRIVER抄袭了LINUX呢,因为当初我们曾经评估过LINUX用在通信产品的可行性,最终只有一个字——“太烂了”。

          再说说Sun,它的操作系统一开始叫Sun OS,直到90年代还在开发和销售,但是后来因为AT&T、SCO等公司搞得一龌龊事,怕避免版权纠纷,干脆就改名叫Solaris了,连版本号也直接从5.0跳回到2.0。不过两个词都是“太阳”,不知道中文版是不是一个翻译成“太阳”,另外一个翻译成“日头”,哈。更多精彩文章及讨论,请光临枫下论坛 rolia.net
          • 那谁给分析分析为什么powerpc这么好的东西,当年说是一定会打败intel cisc体系,可是为什么为什么apple扔掉了好东西去将就“垃圾“Intel。人都说成功的不一定是最优秀,这话太笼统,我听不懂
            • 我认为苹果下一步就是把OS X装到PC上。
          • 说得不错。其实PowerPC到今天仍然很强。其中很多技术以后可以能普及到Intel的芯片上,比如目前流行的IBM pSeries/iSeries上的p5/p5+芯片,那所谓的Micro-partition与硬件关系极大。以后PC有望向这方面发展
          • it's amazing!!! I like Mac OS X Tiger. Mac OS X 10.4.6 Only $129.00 These are from Apple Website.(see detail)
            本文发表在 rolia.net 枫下论坛Don’t let its elegant and easy-to-use interface fool you. Beneath the surface of Mac OS X lies an industrial-strength UNIX foundation hard at work to ensure that your computing experience remains free of system crashes and compromised performance. Time-tested security protocols in Mac OS X keep your Mac out of harm’s way.

            The most widely-sold UNIX-based operating system, Mac OS X offers a unique combination of technical elements to the discerning geek, such as fine-grained multithreading, Mach 3.0 microkernel, FreeBSD services, tight hardware integration and SMP-safe drivers, as well as zero configuration networking. Tiger’s state-of-the-art kernel features improved SMP scalability and 64-bit virtual memory, while standards-based access control lists take UNIX permissions to the next level.

            Command-line Environment
            UNIX users will feel at home in Darwin, the robust BSD environment that underlies Mac OS X. That environment is accessible at any time from the Terminal application. You can also run commands that don’t require arguments (such as top) by double-clicking them in the Finder. With the thousands of man pages included in Mac OS X, you can quickly find all your favorite UNIX tools.

            UNIX Utilities and Scripting Languages

            All of the standard UNIX utilities and scripting languages are included in Mac OS X: editors such as emacs, vim and even ed; file management tools such as cp, mv, ls and tar; shell scripts including bash (the default shell), tcsh (csh) and zsh. Tiger adds the korn shell so you can run scripts written for other operating systems more easily. And of course you can use scripting languages such as Perl, PHP, tcl, Ruby and Python, with native support for the popular Tcl/TK, TKInter and WxWidgets toolkits. Python users can also script the powerful Quartz compositing engine. Visit the Open Source page for more Open Source utilities in Mac OS X.

            Universal Libraries
            Mac OS X provides a robust set of optimized libraries, making it easy to port your existing UNIX code. For example, a standard, multithreaded C library (libc) includes support for such capabilities as reentrant variants of standard functions, facilitating the porting of thread-aware applications to Mac OS X. For applications that require non-Roman character sets, Mac OS X supports wide character datatypes (wchar_t and others). Tiger also supports UNIX/Linux portability APIs, including System V semaphores, so porting applications from versions of UNIX such as Linux and Solaris presents no problem. Tiger enhances the stellar cross-platform API support in Panther by adding powerful new Open Source libraries for XML transformations (libxslt) and data persistence (SQLite), as well as support for common UNIX services such as System V message queues.

            Liftoff With launchd
            Since Mac OS X rarely requires you to reboot, you’ll hardly ever notice it, but Tiger takes less time to start up, thanks to launchd. Launchd provides faster startup through a unified framework for starting, stopping and managing daemons, and incorporates inetd, init, mach_init, System Starter and related services. Administrators have a single mechanism for auditing, configuring and setting resources limits on services.

            Kernel
            The Mach kernel augments standard virtual memory semantics with the abstraction of memory objects. This enables Mac OS X to manage separate application environments simultaneously and supply the following features:

            Preemptive and cooperative multitasking.
            Symmetric multiprocessing (SMP) augmented by support for multithreading.
            Real-time support guaranteeing low-latency access to processor resources for time-sensitive media applications.更多精彩文章及讨论,请光临枫下论坛 rolia.net
          • “优先级翻转”(太深奥了),也深奥也不深奥,具体设计、实现、调试当然很深奥,但理论并不深奥,就是低优先级线程占住了系统资源,憋死了高优先级线程。举个例子:
            我要上卫生间,很急,用术语讲,我这高优先级线程需要使用系统资源-马桶。
            可是这系统资源已经被低优先级线程-我家小子,占用了。他已经完事了,可他出不来,因为手纸-他需要的另一项系统资源,没了。我有手纸,需要用马桶;他有马桶,需要用手纸。系统死锁,这就叫“优先级翻转”
            • 家里还有另一个(多个)厕所嘛,这叫分布式系统?
            • 你也真是的,没上完厕所拿手纸zuo嘛?和那什么。。。站着OO不OO。。。有一拼
          • 最稳定的不是bsd,应该是mainframe上的那些 s/390之类
    • 文中提到微软Windows 2000源代码泄露,当时很多Linux程序员仔细研究,希望发现Windows 2000 抄袭 Linux 的蛛丝马迹,后来不了了之,可能微软是真没抄,也可能是抄得太巧妙了...
      • 看出来也不敢说。
      • 开放代码,我的理解揍是随便抄吧?微软假如真抄Linux,抄也白抄,都合法的,哪里找说法去?
        • 要真抄,微软的麻烦就大了。Linux 是GPL授权,其中最重要的一点是:如果你用了GPL的Open source code,你也必须公开你的源代码。
          • 是这样啊?我怎么觉得很多商用软件都来自/抄自开放代码,也没必须开放原码呀。MAC OS X 楼上说来自开饭地,它源代码是公开的?那怎么卖钱?
      • 抄,肯定是抄了,只是方法不同. 当年IBM花了3年一百多人次调查PC机的ROMBIOS抄袭CASE,最后知道真相后,放弃了调查
        当年IBM出了一款IBM PC, 不出半年兼容机就面世, IBM雇了一个百多人调查公司, 专门调查PC兼容机的ROM BIOS的抄袭情况, 3年后知道真相:
        话说IBM RELEASE 了一新款机PC XT, 一些生产兼容机的厂家连夜排队购买, 人工反汇编ROM BIOS, 画出框架图,流程图, 再请程序员(重来没有接触任何IBM汇编程序的), 按照程序流程图实现同样功能的程序-- 兼容机的ROM BIOS,

        这一方法被微软用于学习APPLE OS, 从而得到 WINDOWS 1.0.
    • Eric.Raymond 的《Unix编程艺术》,免费在线版。俺三天打鱼、两天晒网地读了多半年了,还只开个头,人家长篇总结都出来了,惭愧呀...
    • 记得接触的第一个unix就是在dec的alpha上,当时只觉得那alpha机器带的键盘敲起来真爽。呵呵
      • 我现在还在做Tru64 Unix,许多概念和功能到今天看来还是相当先进的。
    • ZT: 心目中的编程高手 (转载自负喧琐话 作者:g9) MIT BBS上说微软电话面试的一道题就是"Who do you think is the best coder, and why?"。我觉得挺有意思的,也来凑个热闹。排名不分先后。
      本文发表在 rolia.net 枫下论坛MIT BBS上说微软电话面试的一道题就是"Who do you think is the best coder, and why?"。我觉得挺有意思的,也来凑个热闹。排名不分先后。
      Bill Joy, 前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD。他还是vi和csh的作者。当然,Csh Programming Considered Harmful 是另一个话题乐。据说他想看看自己能不能写个操作系统,就在三天里写了个自己的Unix, 也就是BSD的前身。当然是传说了,但足见他的功力。另一个传说是,1980年初的时候,DARPA让BBN在Berkley Unix里加上BBN开发的TCP/IP代码。但当时还是研究生的B伯伯怒了,拒绝把BBN TCP/IP加入BSD,因为他觉得BBN的TCP/IP写得不好。于是B伯伯出手了,端的是一箭封喉,很快就写出了高性能的伯克利版TCP/IP。当时BBN和DARPA签了巨额合同开发TCP/IP Stack,谁知他们的代码还不如一个研究生的好。于是他们开会。只见当时B伯伯穿个T-shirt出现在会议室(当时穿T-shirt不象现在,还是相当散漫的哈)。只见BBN问:你怎么写出来的?而B伯伯答:简单,你读协议,然后编程就行了。最令偶晕倒的是,B伯伯硕士毕业 后决定到工业界发展,于是就到了当时只有一间办公室的Sun, 然后他就把Sparc设计出 来乐。。。象这种软硬通吃的牛人,想不佩服都不行的说。据Bill Joy的同事说,一般开会的时候B伯伯总是拿一堆杂志漫不经心地读。但往往在关键之处,B伯伯发言,直切要害,提出 漂亮的构想,让同事们彻底崩溃。对了,他还是Java Spec和JINI的主要作者之一。
      John Carmack,id Software的founder和Lead Programmer。上个月和一个搞图形的师兄聊天,他竟然不知道John Carmack, 也让偶大大地晕了一把。不过也许搞研究的和搞实战的多少有些隔吧。想必喜欢第一人称射击游戏的都知道J哥哥。90年代初只要能在PC上搞个小动画都能让人惊叹一番的时候,J哥哥就推出了石破天惊的Castle Wolfstein, 然后再接再励,doom, doomII, Quake...每次都把3-D技术推到极致。J哥哥的简历上说自己的专长是"Exhaust 3-D technology",真是牛人之言不我欺的说。做J哥哥这样的人是很幸福的,因为各大图形卡厂家一有了新产品就要向他"进贡" ,不然如果他的游戏不支持哪种卡,哪种卡基本就会夭折乐。当初MS的Direct3D也得听取 他的意见,修改了不少API。当然,J哥哥在结婚前十数年如一日地每天编程14小时以上, 也是偶们凡人望尘莫及的。对了,J哥哥高中肆业(?),可以说是自学成才。不过呢,谁要用这个例子来为自己学习不好辩护,就大错特错了。那Leonardo Da Vinci还是自学成才呢(人是私生子,不能上学)。普通人和天才还是有区别的。对了,其实偶们叫"达分奇"是相当不对的,因为Vinci是地名,而Da Vinci就是从Vinci来的人的意思。换句话说,Leonardo Da Vinci就是"从Vinci来的Leonardo"的意思。叫别人"Da Vinci"就不知所谓乐。嗯,扯远了,打住。
      David Cutler,VMS和Windows NT的首席设计师,去微软前号称硅谷最牛的kernel开发员。当初他和他的手下在微软一周内把一个具备基本功能的bootable kernel写出来,然后说:"who can't write an OS in a week?",也是牛气冲天的说。顺便说一句,D爷爷到NT3.5时,管理1500名开发员,自己还兼做设计和编程,不改coder本色啊。
      D爷爷天生脾气火爆,和人争论时喜欢双手猛击桌子以壮声势。:-) 日常交谈F-word不离口。他面试秘书时必问:"what do you think of the word 'fuck'?" ,让无数美女刹羽而归。终于有一天,一个同样火爆的女面对这个问题脱口而出:"That's my favorite word"。于是她被录取乐,为D爷爷工作到NT3.5发布。
      Don Knuth, 高爷爷其实用不着偶多说。学编程的不知道他就好像学物理的不知道牛顿,学数学的不知道欧拉,学音乐的不知道莫扎特,学Delphi的不知到Anders Hejlsberg,或者学Linux不知道Linus Torvalds一样,不可原谅啊。:-)为了让文章完整,就再罗唆几句吧。高爷爷本科时就开始给行行色色的公司写各种稀奇古怪的编译器挣外快了。他卖给别人时收一两千美元,那些公司拿了code,加工一下卖出去就是上万上十万。不过也没见高爷爷不爽过,学者本色的说。想想那可是60年代初啊,高爷爷写编译器写多了,顺带就搞出了个Attribute Grammar和LR(k),大大地造福后人啊。至于高爷爷在CalTech的编程比赛(有Alan Kay得众多高高手参加)总是第一,写的Tex到86年就code freeze,还附带2^n美分奖励等等都是耳熟能详的,偶就不饶舌乐。
      顺便说一下,高老大爷是无可争议的写作高手。他给Concrete Mathematics 写的前言可谓字字铿锵,堪为前言的典范。他的技术文章也是一绝,文风细致,解释精当,而且没有学究气,不失轻快跳脱。记得几年前读Concrete Mathematics,时不时开怀大笑,让老妈极其郁闷,觉得我nerdy到家,不可救药。其实呢,子非鱼,安知鱼之乐,更不知那完全是高爷爷的功劳。说到写作高手,不能不提Stephen A. Cook。他的文章当年就被我们的写作老师极力推荐,号称典雅文风的样本。库爷爷一头银发,身材颀长,总是面带谦和的微笑,颇有仙风道骨,正好和他的仙文相配的说。
      高爷爷其实还是开源运动的先驱。虽然他没有象Richard Stallman那样八方奔走,但他捐献了好多作品,都可以在网上看到,比如著名的Mathematical Writing,MMIXWare,The Tex Book等,更不用说足以让他流芳百世的Tex乐。
      Ken Thompson,C语言前身B语言的作者,Unix的发明人之一(另一个是Dennis M. Riche老大,被尊为DMR),Belle(一个厉害的国际象棋程序)的作者之一, 操作系统Plan 9的主要作者(另一个是大牛人Rob Pike, 前不久被google挖走了)。Ken爷爷也算是计算机历史上开天辟地的人物了。1969年还是计算机史前时代,普通人都认为只有大型机才能运行通用的操作系统,小型机只有高山仰止的份儿。至于用高级语言来写操作系统,更是笑谈。Ken爷爷自然不是池中物,于是他和DMR怒了,在1969年到1970间用汇编在PDP-7上写出了UNIX的第一个版本。他们并不知道,一场轰轰烈烈的UNIX传奇由此拉开了序幕。Ken爷爷在1971年又把Unix用C重写,于是C在随后20年成就了不知多少豪杰的梦想和光荣。
      Ken爷爷还有段佳话: 装了UNIX的PDP-11最早被安装在Bell Lab里供大家日常使用。很快大家就发现Ken爷爷总能进入他们的帐户,获得最高权限。Bell Lab里的科学家都心比天高,当然被搞得郁闷无比。于是有高手怒了,跳出来分析了UNIX代码,找到后门,修改代码,然后重新编译了整个UNIX。就在大家都以为"这个世界清净了"的时候,他们发现Ken爷爷还是轻而易举地拿到他们的帐户权限,百思不解后,只好继续郁闷。谁知道这一郁闷,就郁闷了14年,直到Ken爷爷道出个中缘由。原来,代码里的确有后门,但后门不在Unix代码里,而在编译Unix代码的C编译器里。每次C编译器编译UNIX的代码,就自动生成后门代码。而整个Bell Lab的人,都是用Ken爷爷的C编译器。:D
      Rob Pike, AT&T Bell Lab前Member of Technical Staff ,现在google研究操作系统。罗伯伯是Unix的先驱,是贝尔实验室最早和Ken Thompson以及Dennis M. Ritche开发Unix的猛人,UTF-8的设计人。他还在美国名嘴David Letterman的晚间节目上露了一小脸,一脸憨厚地帮一胖子吹牛搞怪。让偶佩服不已的是,罗伯伯还是1980年奥运会射箭的银牌得主。他也是个颇为厉害的业余天文学家,设计的珈玛射线望远镜差点被NASA用在航天飞机上。他还是两本经典,The Unix Programming Environment 和 The Practice of Programming 的作者之一。如果初学者想在编程方面精益求精,实在该好好读读这两本书。它们都有中文版的说。罗伯伯还写出了Unix下第一个基于位图的窗口系统,并且是著名的blit 终端的作者。当然了,罗伯伯还是号称锐意革新的操作系统,Plan9,的主要作者。可惜的是,Plan9并没有引起多少人的注意。罗伯伯一怒之下,写出了振聋发聩的雄文 Systems Software Research is Irrelevant,痛斥当下系统开发不思进取,固步自封的弊病。虽然这篇文章是罗伯伯含忿出手,颇有偏激之词,但确实道出了系统开发的无奈:开发周期越来越长,代价越来越大,用户被统一到少数几个系统上,结果越来越多的活动是测量和修补,而真正的革新越来越少。
      就在罗伯伯郁闷之极的时候,google登门求贤来乐。如果说现在还有一家大众公司在不遗余力地把系统开发推向极致的话,也就是google乐。随便看看google的成果就知道了。具有超强容错和负载平衡能力的分布式文件系统GFS (现在能够用100,000台廉价PC搭起一个巨型分布系统,并且高效便宜地进行管理的系统也不多哈),大规模机器学习系统(拼写检查,广告匹配,拼音搜寻。。。哪个都很牛的说),更不用说处理海量并行计算的各式google服务了。Rob在System Software Research is Irrelevant里萧瑟地说现在没有人再关心系统研究的前沿成果了。想不到他错了,因为google关心。google网络了大批功成名就的牛人,还有大量初生牛犊般博士做开发,显然不是没事耍酷,而是因为它们的开发总是试图吸取系统研究的最新成果。想必Rob Pike在google很幸福。愿他做出更棒的系统。
      Dennis M. Ritchie, 既然Ken Thompson是我的偶像,新闻组上人称DMR的Dennis M. Ritchie自然也是,毕竟两人共同缔造了UNIX,而Dennis几乎独力把C搞大(当然,C的前身是B,而B是Ken Thompson一手做出来的)。J 两人1983年分享图灵奖,是有史以来少数几个因工程项目得奖的工程师(本来是唯一的一对儿,但Alan Kay才因为SmallTalk得奖,所以就成了唯二的乐) 。一个人一生能做出一个卓越的系统已经不易,DMR的C和UNIX长盛不衰近30年,至今生机勃勃,DMR此生可以无憾的说。
      D爷爷也算有家学渊源:他老爸在AT&T贝尔实验室工作了一辈子,并在电路设计方面卓有成就,还出了本颇有影响的书The Design of Switching Circuits,据说在交换理论和逻辑设计方面有独到的论述。当然,D爷爷和他老爸是不同时代的人:他老爸的研究成形于晶体管发明之前,而D爷爷的工作离了晶体管就玩儿不转乐。:-D
      不要看D爷爷搞出了C,其实他最爱的编程语言是Alef,在Plan9上运行,支持并行编程。Alef的语法和C相似,但数据类型和执行方式都和C大大不同。说到语言,D爷爷对后来人有非常中肯的建议:抱着学习的目的来开发你自己的语言,不要冀望于它被众人接受。这个建议不光对语言开发有用,也适用于其它大型系统的开发。别的不说,DMR后来领导自己的团队在1995年和1996分别推出了Plan9和Inferno操作系统,又用多少人知道呢?其实,D爷爷当初也没想过C会风行世界。他开发C的初衷和Eric S. Raymond在Cathedral and Bazaar里阐述的一样,就是要消除自己对现有工具的不爽之处。谁知D爷爷无心插柳,C竟然受到众多程序员的狂热拥戴,连D爷爷自己都大惑不解。在一次采访中D爷爷说大概那是因为C的抽象程度碰巧既满足了程序员的要求, 又容易实现。当然C一度是Unix上的通用语言也是原因。但不管怎么说,D爷爷对编程语言出色的审美意识奠定了C广为流传的基础。
      最后八卦一下。D爷爷的业余爱好和NBA大牛Karl Malone一样:开卡车。不过D爷爷更喜欢开NASCAR,而KM独爱巨无霸。J D爷爷自称心中不供偶像,如果一定要说一个,那就是Ken Thompson了。现在Ken爷爷退休当飞机教练去了,而D爷爷当了贝尔实验室系统开发部的头,整日忙于开支票。他俩合作20年,屡屡创造历史。这段令人神往的佳话,也就长留你我心中乐。
      P.S., 很多人都以为Brian W. Kernighan是C的作者。其实BWK只是写了那本经典K&R C。据D爷爷说,他,Ken, 和Kernighan三人中,Kernighan最能写文章,他次之,而Ken写得最少;但说到编程,Ken爷爷才是当之无愧的老大。
      Edsger Wybe Dijkstra, 对,就是E.W. Dijkstra. 一提到EWD,很多人就会想起找最短路径的Dijkstra Algorithm,就好像一提到Sir. Tony Hoare,就想起Quick Sort一样。其实这些个算法不过是两个牛人在他们职业生涯中最琐碎的贡献。比如Dijkstra算法,无非是戴爷爷在1956年为了展示新计算机ARMAC的计算能力,初试身手的成果,属于他的算法处女作。据戴爷爷自述,他搞出最短路径算法的时候连纸笔都没用。当时他和他老婆在阿姆斯特丹一家咖啡厅的阳台上晒太阳喝咖啡,突然就把这个算法想出来乐。而且当时的算法研究还比较原始,牛人们忙着用计算机搞数值计算,对离散算法不屑一顾。那时连一个象样的专注于离散算法的专业期刊都没有。戴爷爷于是推迟发表这个算法。直到1959年,他才把这个算法发表在Numerische Mathematik的创刊号上,权为捧场。:-) EWD在多个领域牛气冲天,端的是理论和编程两手硬的高手。只不过他的很多工作比较深刻,学校的老先生们觉得本科生接受不了,不给本科生讲而已。
      戴爷爷大概因为最短路径算法一战成名,于是有人请他参加另一台计算机X1的设计工作,并且把设计实时中断系统的任务派给了他。现在看来实时中断也许不算什么,但要知到,X1前根本就没有实时中断的概念。实现它简直就是一场豪赌。戴爷爷起初还不情愿,但经不住项目负责人Bram和Carel的轮番"吹捧":我们知道实时中断让您工作变得非常困难,但象您这样的牛人肯定能做出来的说。结果戴爷爷被糖衣炮弹彻底击穿,接下了这个烫手山芋。两三年后,他不仅搞出了实时中断,还围绕这个写出了自己的博士论文,顺利戴上博士帽。
      让戴爷爷真正成名立万的还是在X1上开发的Algol60,最早的高级语言之一。戴爷爷没日没夜地工作了8个月,就搞出了Algol60,也因此获得了1972年的图灵奖。因为Algol60,戴爷爷发表了一篇石破天惊的文章:Recursive Programming,于是人们才知道,原来高级语言也可以高效地实现递归,原来从此以后,所有程序员都不可避免地和戴爷爷发明的一个词(应该说是概念)打交道:堆栈。而且Algol60还让戴爷爷深入地思考多道程序设计的问题,最终发明了每个系统程序员都绕不开的概念:semaphore。当然,戴爷爷总是把他发明的概念严格形式化,极具科学家本色的说。和这些成就想比,他提出的吃饭的哲学家问题,也就没什么好说的了。
      说来好笑,当时的大学(忘了哪所了)还是觉得戴爷爷没有受过正统的数学训练,也不是专门搞数值分析的,所以最后不太情愿地给了他一个教职。这种小挫折并不能妨碍象戴爷爷这样的牛人创造历史。他一边教数值分析(:-D) ,一边开始开发一个新的操作系统,并培养计算机科学家。几年后,THE Multiprogramming System横空出世。THE是第一个支持松散耦合,显式同步的进程并由此使得严格证明系统没有死锁变得容易的操作系统。可惜戴爷爷任职的系不识货,还强行解散了他的研究小组(1972年戴爷爷给他的系主任说他得了图灵奖,系主任的第一反应是你们搞计算机就喜欢乱发奖)。这让戴爷爷相当郁闷,得了抑郁症。在极度郁闷之中,戴爷爷决定用写作来治疗自己的抑郁症。于是经典就诞生乐:Notes on Structured Programming。戴爷爷从此被尊为结构化编程的奠基人,而且他的抑郁症也被治好乐。
      EWD太牛,结果他的故事也太多。先到这里吧。1973起,他的故事就在美国发生了。
      Anders Hejlsberg,微软.NET的首席架构师,编程语言设计和实现的顶尖高手。他一手做出了Turbo Pascal, 也是Delphi, J++(尤其是WFC),C#, 和.NET的主要作者。这些作品的名字足以为他立传。作为一个程序员,我在这样的大师面前实在无语。生子当如Anders的说。李维的<>里已详细讲述了Anders的传奇故事,我就不用费舌了:http://java.mblogger.cn/iexploiter/posts/1505.aspx 。 Artima上有Anders谈C#的系列访谈 。MSDN上有一段Anders导游的录像 。有兴趣可以去看看牛人的丰采。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • ‘当然,J哥哥在结婚前十数年如一日地每天编程14小时以上’ --- 哎,偶也差不多阿
    • 一看就觉得很好,收藏,有空慢慢看。 饭兄现在做什么工作?
      • 这篇文章,偶已经注明了是'zt' --- 转贴的。 偶对计算机的历史没有研究得那么细,惭愧呀!
    • How come James Gosling is not on your list :)
    • 不错, 看完了又去tianya找了半天, 原来后面就没有了啊? 这些也太古老了吧. 照这速度, 哪年月才能看到他写windows啊?
    • Thompson 和 Ritchie 74年7月发表在Communication of the ACM上的文章. ACM的网站上需要会员注册。Google了一下,别地都是,挑到了一份免费的,share给大家。
    • 写的好,史海陈钩,希望未来有一天能够在这上面看到中国人的名字.谢谢
    • 路过,顺便骂一句,你们这些学计算机的,就会抬别人的臭脚.那些人只是早生几年而已.