科技: 人物 企业 技术 IT业 TMT
科普: 自然 科学 科幻 宇宙 科学家
通信: 历史 技术 手机 词典 3G馆
索引: 分类 推荐 专题 热点 排行榜
互联网: 广告 营销 政务 游戏 google
新媒体: 社交 博客 学者 人物 传播学
新思想: 网站 新书 新知 新词 思想家
图书馆: 文化 商业 管理 经济 期刊
网络文化: 社会 红人 黑客 治理 亚文化
创业百科: VC 词典 指南 案例 创业史
前沿科技: 清洁 绿色 纳米 生物 环保
知识产权: 盗版 共享 学人 法规 著作
用户名: 密码: 注册 忘记密码?
    创建新词条

历史版本3:Unix 40年 返回词条

目录

Unix 40年回目录

经历了四个十年,操作系统的未来充满了变数,但传奇将会是永久的

原文:链接Computerworld
译文:链接酷壳

正文

40年前的一个夏天,一个程序员只用了一个月的时间就创造出了这个世界上迄今为止最重要一个软件的原型。

在1969年8月,Ken Thompson,AT&T公司Bell实验室的一个程序员,因为妻儿不在身边,所以有机会把他的一些关于新的操作系统的想法付诸实现。他用汇编语言在DEC(Digital Equipment Corp.)的PDP-7微机上写了第一个版本Unix,他只用了一周的时间就完成了一个简单的操作系统,包括一个shell,一个编译器还有一个汇编编译器。

Thompson和他的一个同事Dennis Ritchie当时在开发一个叫”Multics(Multiplexed Information and Computing Service复杂指令和计算服务)”的分时(Time-Sharing)操作系统),因为这个项目当时遇上了很多麻烦,所以Thompson和Dennis当时感到很没劲,他们即不想去做当时主流的”批处理(Batch)操作系统”,也不想去做那个看上去怪异和笨拙的Multics。

所以,在他们来来回回讨论经了一些关于新系统的想法后,Thompson写下了第一个版本的Unix,然后,这位老搭档在以后的几年里继续开发着这个操作系统,当然,后面有更多的同事(Doug McIlroy, Joe Ossanna 和 Rudd Canaday)加入了进来。一些当时Multics的理念也被带入到这个新的操作系统中来,但是更为漂亮的Unix则带来了–”更少则为更多(less-is-more)”的哲学。

(译者注:在我们所认识的历史中,这两位程序员当时是在Multics下开发一个叫”太空旅行”的游戏,后来Multics项目解体了,这两位哥们觉得自己的游戏白弄了,所以就为了这个游戏开发了一个新的操作系统Unix,Unix的取名和Multics是相反的,Multics有”复杂的”的意思,而Unix则是”小巧的”意思。后来他们觉得这个操作系统非常不错,所以在后来发表了一篇论文向全世界宣布了这一操作系统,从此开启了计算机世界崭新的文化。

“一个强大的用于交互式的操作系统不应该在价格成本和人力成本上都是昂贵的” Ritchie 和 Thompson在开发这个操作系统5年后,他们在”计算机协会(ACM- Association for Computing Machinery)杂志”上发表了一篇文章《Communications of the ACM (CACM)》,文中说,”我们希望Unix的用户会找到那些非常重要的系统特性就是它是’简单的’,’一流的’和’易用的’”。

显然,他们做到了,Unix的确成为了IT领域中的一块基石,被广泛地部署到了大学,政府和政治的服务器和工作站上。并且,Unix的影响力开发迅速地传播开来,这恐怕超出了所有人的估计,正如ACM在1983年给Thompson 和 Ritchie颁发最具价值的图灵奖(计算机领域的诺贝尔奖)所记录的那样–”Unix系统的模式已经在以一种全新的编程思想领导着新一代的软件开发”。

Unix早期

Thompson 和 Ritchie

Thompson 和 Ritchie.

当然,Unix的成功不是一蹴而就的。 在1971年,它首先被移植到了PDP-11微机(一个比PDP-7更强的微机)。文本格式和文本编译程序在这时被加入进了Unix。并且,当时的实验室专利部门已经开始用这些文本编译器,这也是Unix系统除开发团队之外的第一个用户。

在1972年,Ritchie引入了一个更高级的语言–C语言(基于Thompson的B语言),此后,Thompson用C语言重写了Unix,这极大地增加了Unix的可移植跨平台性。然后,他们为这个操作系统命名Unics(Uniplexed Information and Computing Service),这是和Multics玩的一个文字游戏。但最后,Unix成了最终的名字。(译者注:Unix下的经常出现缩写,如usr 是 user, ed是edit,gp是group,这也是Unix的文化。Unix的更名可能也是因为这个吧)

是时候向全世界宣布这个系统系统了。Ritchie 和 Thompson于1974年7月在 CACM 上发表了一篇论文– “The UNIX Time-Sharing System“《Unix分时操作系统》,这篇论文就像一个风暴一样席卷了都个IT界。直到有一天,Unix被限制在了只能由Bell实验室中的少数人使用。但是,因为有计算机协会的支持,当时的Unix处于一个引爆点。

” CACM 的那篇论文产生了一个戏剧化的影响”, IT 历史学家 Peter Salus 在他的书《The Daemon, the Gnu and the Penguin》中写到, “很快,Ken 被铺天盖地的Unix的请求所淹没”

黑客的天堂

Thompson 和 Ritchie 算得上是史上最名副其实的”黑客”,当时”黑客hacker”一词指的是那些把非常寻常的创意组合起来, 以一种超常智力,并以废寝忘食的态度解决了某个鲜为人知的软件问题的人。

Thompson 和 Ritchie他们的所使用的开发方法,他们所写下的代码,极大地吸引了大学里的程序员,并在以后,这些大学中其中的一些程序员因为Unix开创了自己的公司,他们都是在Unix发展过程中的黑客,就像,加利福尼亚州大学的Bill Joy,卡内基梅隆大学的Rick Rashid ,以及Bell实验室David Korn。当然,他们开创的这些公司都没有IBM,HP和Microsoft的资助。

“几乎从一开始,Unix就能够,也确实是开始了自我进化”,Thompson和Ritchie在CACM 论文中说到,”因为所有的源代码总可以容易被人在线地更改,所以,当有一个新的想法被发明,发现或是被建议出来的时候,大家都非常自愿地修订或重写Unix系统和上面的软件”。

Korn,一个今天还在AT&T工作的员工,上世纪70年代曾是Bell 实验室的一个程序员。”Unix的一个特点是,一个小工具刚被完成,就被另一个更好的工具所代替”,他回忆起来说,”如果你觉得不好的话,你完全可以开完一个更好的版本”。Korn当时为Unix开发了一个很具影响力的Korn shell,本质上来说,当年的Unix就像今天的开源软件。

Salus,作为一个作家和技术历史家,回忆起,他上世纪70年代在多伦多大学时当教授时,在IBM System/360大机上使用APL编程语言工作时的情景–那并不很好用,但是自从1978年圣诞节以后,一个哥伦比亚大学的朋友给我演示了一下在微机上运行的Unix,”我说,’我的上帝啊’,我彻底被你征服了”。

他说,Unix最关键的优势是他有一个”管道”特性(1973年引入),这么我们可以把上一个程序的输出轻松地传给下一个程序。”管道”的概念,由Bell实验室的McIlroy发明,随后”管道”这个东西被其它几乎所有的操作系统复制,包括所有的Unix, Linux,DOS和Windows。

位于新泽西Murray Hill 的Bell 实验室总部

位于新泽西Murray Hill 的Bell 实验室总部

Credit: Alcatel-Lucent/Bell Labs

Unix还有一个不错的地方。 “哇”,正如Salus所惊叹的,这个操作系统并不需要一个需要一百万美金的大型机才能运行的操作系统。它在极其原始的小型的DEC PDP-7微机上开发出来,因为这是当是Thompson 和 Ritchie可以找到用来写这个操作系统最好的机器(译者注:当时这个机器像垃圾一样被扔在实验室角落里)

很多很多的大学研究者们使用Unix就是因为这是一个简单和容易修改的操作系统,而且对硬件资源要求的很少,代码也是开源和免费的。就像Sun Microsystems公司,或是一些用于特定的科学计算的主机公司,例如Multiflow Computer,他们在选择Unix作为操作系统时都和那些大学研究者们有相同的原因。

Unix家谱

Unix成长为一个非私有的操作系统,是因为1956年的AT&T公司受命于联邦去经营电报电话服务。当然也可以开发软件,甚至那个软件可以有”合理”收费的许可证,但是这个公司却被禁止从事任何和计算机有并的商业活动。

Unix,在开发的过程中,没有任何的奖励制度和管理,从一开始在AT&T公司出现时,其是一种近似于好奇或兴趣的东西。

然而,20世纪70年代,AT&T公司开始意到Unix所带来的商业价值。公司的律师开始寻找一些手段来保护Unix,并让其成为一种商业机秘。从1979年Unix的版本V7开始,Unix的许可证开始禁止大学使用Unix的源码,包括在授课中学习。

没问题!一个荷兰阿姆斯特朗Vrije大学使用版本V6的计算机科学系的教授Andrew Tanenbaum说。在1987年,他为教学目的克隆了一个Unix,创建一个叫Minix的开源的操作系统,并可以在80286的Intel芯片上运行。

“Minix使用了所有和Unix一样的想法,并且这是一个非常灿烂的事物”,Salus说,”只有一个专门是程序员的并且非常了解操作系统内部的人才成干出这件事来”。Minix从此变成了另一个起点–Linus Torvalids 在1991年使用Minix创造了Linux –这并不是一个简单的Unix克隆版本,只不过它长得像Unix。

让我们再回到Linux出现的十年以前,Bill Joy,毕业于加利福尼亚州大学伯克利分校,当年,他在学校的时候拷贝了Bell 实验室的Unix版本,并且所到了这是一个很不错的可以使用Pascal编译器和文本编译器的操作系统平台。

于是,他更改变扩展了Unix,形成了Unix的第二个最主要的分枝–BSD(Berkeley Software Distribution)Unix。在1978年3月,Joy卖出了第一个BSD的拷贝:50美金。

到了1980年,有两个最主要的Unix的版本线,一个是Berkeley的BSD,另一个是AT&T的Unix,在这个时候,很显然,竞争最终引发了Unix的战争。在这场战争中,好的是,软件开发人员还是能够得到Unix的源码并对其按照自己的需要和兴致进行裁剪。而不好的是,Unix开始一发不可收拾地开发不停地出现各种各样的变种。

1982年,Joy创建了Sun Microsystems公司并提供了工作站–Sun-1,运行在当一个BSD的版本,叫SunOS(Solaris以之后的十年出现)。而AT&T则在随后的几年中发布了Unix System V的第一版,一个具有强大影响力的操作系统,最终造就了IBM的AIX和HP的HP-UX。

Unix 家谱

Unix 家谱. Credit: Eraserhead1 (cc-by-sa-3.0, GFDL)
点击这里下载大图

Unix战争

在上世纪80年代中期,大量的用户包括联邦政府,开始抱怨”Unix是一个理论上单一的可移植的操作系统”,但事实上应该如此却并不是这样。Unix软件供应商们,一方面为这些抱怨而为 其买单(”空头人情”),而另一方面,他们却在没日没夜地给用户们定制Unix的各种功能和APIs,旨在为了留下用户。

而其它的Unix产商害怕At&T和Sun的联盟,所以,有各种各样的派别组织开始在”标准”上竞争,这些组织大多在X或Open命名,开放软件基金会(Open Software Foundation),Unix开放系统国际和公司(Unix International and Corporation for Open Systems)等等,在这些组织中形成的各种各样的争论,辩论,抗辩和观点可以写一本厚厚的书,但他们无一例外地以肆意相互评击来主张一个统一的Unix局面。

刚形成的开放软件基金会,其包括了IBM,HP,DEC和其它公司共同来反抗AT&T和Sun的联盟。在一个1988年未出版的文件中,DAPRA(Defense Advanced Research Projects Agency)一个著名的小型机先驱Gordon Bell说, “开放软件基金会OSF是一条’Unix穷人’进入正在发展的市场的一条路,他们以此来供养那个的高利润代码博物馆”。

Unix战争在解决差异和设定一个操作系统标准中以失败告终。但在1993年,Unix社区听到了一个”警钟”–Microsoft发布了Windows NT,一个企业级的,32位的,支持多处理的操作系统。而Windows NT的所有者瞄准了Unix领域,并企图扩展Microsoft的桌面系统霸权到各种数据中心以及被Sun服务器所占领的地方。

Microsoft的用户欢呼雀跃,Unix的产商开始惊慌。所有的主流的Unix竞争者们开始主动地联合起来形成了一个通用开放式软件环境(Common Open Software Environment),并在随后的几年中放下了他们的武器并开始着手把AT&T和Sun联盟为背景的”Unix International Group”并入开放软件基金会OSF。这个合并在今天叫做–The Open Group,而证明Unix系统和所有者的是Single Unix Specification,现在官方叫法是–”Unix”。

但在实践过程中,所有关于Unix的开发的确需要一个尽可能”标准化的”Unix,但是由于这些产商热衷于竞争的习惯,在Unix下并没有做到,但这一”标准化”被随后如潮水一样涌来的一个叫Linux的操作系统给完成了,这是一个开源的系统系统,则我们的Tanenbaum教授开发的Minix发展而来。

什么是”Unix”?

Unix,许多人会说,是一个几十年前在Bell实验室写的操作系统,Unix包括其所有的派生版本。今天,最主要的Unix版本是从两个主干上分出来的:一个当然是从AT&T出来的,另一个则是通过加利福尼亚伯克利分校产生的。今天,最顽强的分枝是IBM的AIX和HP的HP-UX以及Sun的Solaris。

然而,只有”The Open Group”拥有Unix的注册商标,定义一个Unix需要遵从Single Unix Specification (SUS)。这包含了那些从来没有Unix思想的操作系统,比如Mac OS X Leopard(这是从BSD和Mach那边发展来)以及IBM的z/OS(这是从大型机操作系统MVS发展来的),因为它们遵从了SUS的API规范。基本上来说,只要那看起来像是一个Unix,那他就是一个Unix,而不管它是由什么代码写的。

当然,一个比较宽松的Unix定包含了Unix-Like的操作系统,有些时候,也叫做Unix-Clones或Look-Alikes,这些都是复制了Unix的东西但他们却并不直接使用Unix的代码。在这堆操作系统中,领头羊是Linux。

最后,我们可以把Unix叫做一种”操作系统”因为这是已成了实际习惯。另外,对于一个操作系统的内核,Unix实现了很多典型的工具比如命令行编辑器,应用程序接口,开发环境,开发库和文档–Gary Anthes

Unix的未来

由于这些长期竞争的各种版本的Unix缺乏可移值性,以及在价格方面没有优势,在x86芯片上占据主导地位的Linux和Windows将会快速地让所有的IT机构把Unix替换掉。调查机构Gartner Group最近公布了这项调查结果。

“在主机服务器方面,调查结果继续显示公众对Linux的热情,而Windows也有相应的增长,而Unix系统还会长期存在,但是其逐渐地下滑”,这个调查报告由2009年2月发布。

“Unix还会像以前那样长期存在,但它已不如从前,而这种局面只会愈演愈烈” Gartner分析师George Weiss说,”Linux将会是Unix的另一选择”,虽然Linux并没有像Unix那样经过了这么长的开发、性能调整和压力测试的过程,但很明显他很快就要达到像Unix那样的性能,可靠和扩展性”。

但是,最近一个由Computerworld发起一个民意调查,暗示了所有一切把Unix踢开的举动不会很快地发生。在一个由130个Unix用户和211个IT经理的问卷调查中显示,其90%的人说他们的公司”非常极端地信任Unix”。不到半数的被访者说,”Unix是一个非常基本的平台,但我们并不确定其未来是否会被保留”,而只有12%的受访者说,”我们期望在未来把Unix迁走”。节省成本,是诸多原因中最主要是一个原因。

Weiss说,移值到x86处理器上会越来越快,因为这些硬件的价值实在是太便宜了。”水平扩展架构,集群技术,云计算,虚拟化技术,你只需要把这些技术合并一下,通过这些技术应用的趋势,我们可以看到操作系统的选择基本上就是Linux和Windows”,他说。

“例如”,Weiss说,”在最近Cisco宣布的Unified Computing 架构,你可以拥有网络,存储,计算,内存,光纤连接,但你不需要Unix。你可以安装Linux或Windows并使用x86平台。所以Intel赢得了Linux取代Unix的那半壁江山”。

The Open Group,目前Single Unix Specification和Unix系统认证的所有者,开始有点退步并有点承认Linux也是一个Unix系统的选择,因为Unix是”高端性能,可扩展性和性能可以用于很多相当重要的应用”,而Linux则是一个更为小的,注重于并不太注重的应用。

AT&T的Korn是其中一个对Unix仍然看到的人。Korn说,Unix的长处是它的历史,自从1973年来引入”管道”技术,它就可以被分成几个部分来部署。这会把Unix带向前方,他说,”这个哲学体系可以运用在云计算中,在那里,你只需要创建一些小的可重用的碎片而不是一个巨大的应用”。

Unix传奇

无论最后的Unix命运会怎么样,这个从Bell实验室出生的40岁的家伙,已经书写了一段传奇,而且这个传奇可能还会继续几十年。它影响并产生了一个相当相当长的流行软件列表,包括给IBM,HP和Sun提供的Unix,以及Apple的Mac OS X和Linux。它同样影响了Microsoft的Windows NT以及IBM和Microsoft弄出来的DOS。

因为Unix,产生了许多公司,并走向了成功,因为当时Unix给了一个低成本的平台。在Internet上的服务器,Unix是核心的建筑区,今天它也是所有通讯系统的心脏。由它孕育了许多架构上的创意,比如管道,并且,Unix引出的Mach为科学作出了巨大的贡献,同时也为多处理器计算作出了贡献。

ACM在1983年因为Unix授予Thompson和Ritchie图灵奖时说过:”Unix系统最天才的部分是它的framework,它激发了程序员们沿着这一方向工作”。

作者:Gary Anthes
时间:2009年6月4日美国东部时间凌晨12:01

译者:陈皓(haoel(at)hotmail.com)
时间:2009年6月11日北京时间晚上10:22

Unix传奇回目录

了解过去,我们才能知其然,更知所以然。总结过去,我们才会知道我们明天该如何去规划,该如何去走。在时间的滚轮中,许许多的东西就像流星一样一闪而逝,而有些东西却能经受着时间的考验散发着经久的魅力,让人津津乐道,流传至今。要知道明天怎么去选择,怎么去做,不是盲目地跟从今天各种各样琳琅满目前沿技术,而应该是去 —— 认认真真地了解和回顾历史。

Unix是目前还在存活的操作系统的元老了,走过了近乎40年的历程。在技术更新如此迅速的计算机世界的今天,Unix始终保持它那神圣的光环,它那曲折和令人叹息的历史,以及由它引发的思想变革,对当今计算机文化造成的深远影响,近40年所产生的人和事,让它成为了一个传奇,不能不让人为之惊叹。

这是一段所有从事计算机行业人员尤其是软件开发人员需要了解的历史。Unix的传奇历史是整个计算机世界文化最具代表性的,它对整个计算机世界文化的影响也是最巨大,最深远的。他给人带来的不单单的对过去的回味,更为我们带来了计算机世界的新思潮。

了解这段的历史的人,才能体会计算机世界变迁过程中的是是非非,才能了解计算机世界中的文化,从而才能参与到整个计算机革命的大潮中。希望这段历史,这篇文章能让你感受到计算机世界那强力的脉搏,从而让你踏上这条令人充满激情的道路。

下面是本文的大纲:

Unix起源

Unix分裂

Unix的法律纠纷

GNU开源组织

inux横空出世

inux今天的领袖

Unix与黑客文化

Unix的历史教训

Unix 家族谱

Unix的特点

Unix的影响和哲学

Unix痛恨者手册

Unix 起源

回顾Unix历史,我们就要说一下一个叫MULTICS(Multiplexed Information and Computing Service)的项目。上世纪六十年代时,大部份计算机都是采用批处理(Batch Processing)的方式(也就是说,当作业积累一定数量的时候,计算机才会进行处理)。那时,我们熟知的美国电话及电报公司(American Telephone and Telegraph Inc.;AT&T)、通用电器公司(General Electrics;G.E.)及麻省理工学院(Massachusetts Institute of Technology;MIT)计划合作开发一个多用途(General-Purpose)、分时(Time-Sharing)及多用户(Multi-User)的操作系统,也就是这个MULTICS,其被设计运行在GE-645大型主机上。不过,这个项目由于太过复杂,整个目标过于庞大,糅合了太多的特性,进展太慢,几年下来都没有任何成果,而且性能都很低。于是到了1969年2月,贝尔实验室(Bell Labs)决定退出这个项目。

熟悉这段历史的人都知道,贝尔实验室中的有个叫Ken Thompson的人,他为MULTICS这个操作系统写游戏了个叫“Space Travel”的游戏,在MULTICS上经过实际运行后,他发现游戏速度很慢而且耗费昂贵 —— 每次运行会花费75美元。退出这个项目以后。他为了让这个游戏能玩,所以他找来Dennis Ritchie为这个游戏开发一个极其简单的操作系统。这就是后来的Unix。(值得一提的是,当时他们本想在DEC-10上写,后来没有申请到,只好在实验室的墙角边找了一台被人遗弃的Digital PDP-7的迷你计算机进行他们的计划,这台计算机上连个操作系统都没有,于是他们用汇编语言仅一个月的时间就开发了一个操作系统的原型)他们的同事Brian Kernighan非常不喜欢这个系统,嘲笑Ken Thompson说:“你写的系统好真差劲,干脆叫Unics算了。”Unics的名字就是相对于MULTICS的一种戏称,后业改成了Unix。于是,Unix就在这样被游戏和玩笑创造了,当时是1969年8月。也就是这一年,Linux之父Linus Torvalds在芬兰出生了。

1971年,Ken Thompson写了充分长篇的申请报告,申请到了一台PDP-11/24的机器。于是Unix第一版出来了。在一台PDP-11/24的机器上完成。这台电脑只有24KB的物理内存和500K磁盘空间。Unix占用了12KB的内存,剩下的一半内存可以支持两用户进行Space Travel的游戏。而著名的fork()系统调用也就是在这时出现的。

到了1973年的时候,Ken Thompson 与Dennis Ritchie感到用汇编语言做移植太过于头痛,他们想用高级语言来完成第三版,对于当时完全以汇编语言来开发程序的年代,他们的想法算是相当的疯狂。一开始他们想尝试用Fortran,可是失败了。后来他们用一个叫BCPL(Basic Combined Programming Language)的语言开发,他们整合了BCPL形成B语言,后来Dennis Ritchie觉得B语言还是不能满足要求,就是就改良了B语言,这就是今天的大名鼎鼎的C语言。于是,Ken Thompson 与Dennis Ritchie成功地用C语言重写了Unix的第三版内核。至此,Unix这个操作系统修改、移植相当便利,为Unix日后的普及打下了坚实的基础。而Unix和C完美地结合成为一个统一体,C与Unix很快成为世界的主导。

Unix的第一篇文章 “The UNIX Time Sharing System”由Ken Thompson和Dennis

Ritchie于1974年7月的 the Communications of the ACM发表。这是UNIX与外界的首次接触。结果引起了学术界的广泛兴趣并对其源码索取,所以,Unix第五版就以“仅用于教育目的”的协议,提供给各大学作为教学之用,成为当时操作系统课程中的范例教材。各大学公司开始通过Unix源码对Unix进行了各种各样的改进和扩展。于是,Unix开始广泛流行。


Ken Thompson & Dennis Ritchie,

 

Unix分裂

1978年,对 Unix而言是革命性的一年;因为学术界的老大柏克利大学 (UC Berkeley),推出了一份以第六版为基础,加上一些改进和新功能而成的 Unix。这就是著名的“1 BSD(1st Berkeley Software Distribution)”,开创了Unix的另一个分支:BSD 系列。 同时期,AT&T成立USG(Unix Support Group),将 Unix变成商业化的产品。从此,BSD的 Unix 便和AT&T 的Unix 分庭抗礼,Unix就分为System IV和4.x BSD这两大主流,各自蓬勃发展。

1979年发布的Unix 第七版被称为是“最后一个真正的Unix”,这个版本的Unix内核只有40K bytes。后来这个版本被移植到VAX机上(我在大学时学习C语言时用过这个VAX机,我还记得那时上VAX机最大的爱好就是使用talk命令和别人聊天,呵呵)。20世纪80年代相继发布的8、9、10版本只授权给了少数大学。

1982年,AT&T基于版本7开发了UNIX System Ⅲ的第一个版本,这是一个商业版本仅供出售。为了解决混乱的UNIX版本情况,AT&T综合了其他大学和公司开发的各种UNIX,开发了UNIX System V Release 1。这个新的UNIX商业发布版本不再包含源代码,所以加州大学Berkeley分校继续开发BSD UNIX,作为UNIX System III和V的替代选择。BSD对UNIX最重要的贡献之一是TCP/IP。BSD 有8个主要的发行版中包含了TCP/IP:4.1c、4.2、4.3、4.3-Tahoe、4.3-Reno、Net2、4.4以及 4.4-lite。这些发布版中的TCP/IP代码几乎是现在所有系统中TCP/IP实现的前辈,包括AT&T System V UNIX 和Microsoft Windows中的TCP/IP都参照了BSD的源码。

同时,其他一些公司也开始为其自己的小型机或工作站提供商业版本的UNIX系统,有些选择System V作为基础版本,有些则选择了BSD。BSD的一名主要开发者,Bill Joy,在BSD基础上开发了SunOS,并最终创办了Sun Microsystems。

 

Bill Joy

1991年,一群BSD开发者(Donn Seeley、Mike Karels、Bill Jolitz 和 Trent Hein)离开了加州大学,创办了Berkeley Software Design, Inc (BSDI)。BSDI是第一家在便宜常见的Intel平台上提供全功能商业BSD UNIX的厂商。后来Bill Jolitz 离开了BSDI,开始了386BSD的工作。386BSD被认为是FreeBSD、OpenBSD 和 NetBSD、DragonFlyBSD的先辈。

这是一个AT&T妄图私有化的Unix的时代。为了私有化Unix,1986年IEEE指定了一个委员会制定了一个一个开放作业系统的标准,称为 POSIX (Portable Operating Systems Interface)。最后加上个X,不知道是为了好听,还是因为这本质上是UNIX的标准。当然,AT&T的Unix取得了这个标准制订战争的胜利,还取得了Unix这个注册商标。此时BSD的拥护者自喻为冷酷无情的公司帝国的反抗军。就销售量来说,AT&T UNIX始终赶不上BSD/Sun。到1990年,AT&T与BSD版本已难明显区分,因为彼此都有采用对方的新发明。

       这段时期,从实验室出来的被全世界所分享的Unix,正处于被私有化的关键时期。

Unix的法律纠纷

Berkeley Software Design, Inc(BSDI)很快就与AT&T的UNIX Systems Laboratories(USL)附属公司产生了法律纠纷,USL是AT&T注册的公司。AT&T为了拥有System V版权,以及Unix商标,为了垄断Unix,1992年,USL正式对BSDI提起诉讼,说BSD剽窃他的源码。而最终了结了好评如潮的BSD系统。

由于最后判决悬而未决,这桩法律诉讼将BSD后裔的开发,特别是自由软件,延迟了两年,这导致没有法律问题的Linux内核获得了极大的支持。Linux跟386BSD的开发几乎同时起步,Linus说,当时如果有自由的基于386的Unix-like操作系统,他就可能不会创造Linux。尽管无法预料这给以后的软件业究竟造成了什么样的影响(如果没有这个法律纠纷,很有可能没有今天的革命性的Linux),但有一点可以肯定,Linux更加丰富了这块土壤。

这场官司一直打到 AT&T将自己的Unix系统实验室卖掉,新接手的Novell公司采取了一种比较开明的做法,允许BSDI自由发布自己的BSD,但是前提是必须将来自于AT&T的代码完全删除,于是诞生了4.4 BSD Lite版,由于这个版本不存在法律问题,4.4BSD Lite成为了现代BSD系统的基础版本。

这桩诉讼最终在1994年1月了结,更多地满足了BSDI的利益。伯克利套件的18,000个文件中,只有3个文件要求删除,另有70个文件要求修改,并显示USL的版权说明。这项调解另外要求,USL不得对4.4BSD提起诉讼,不管是用户还是BSDI代码的分发者。于是,BSD Unix走上了复兴的道路。BSD的开发也走向了几个不同的方向,并最终导致了FreeBSD、OpenBSD和NetBSD的出现。

从AT&T意识到了Unix的商业价值,不再将Unix源码授权给学术机构以来,到以后的几十年,Unix仍在不断变化,其版权所有者不断变更,授权者的数量也在增加。Unix的版权曾经为AT&T所有,之后Novell拥有了Unix,再之后Novell又将版权出售给了SCO(这一事实双方尚存在争议)。有很多大公司在取得了Unix的授权之后,开发了自己的Unix产品。(几年前,据传闻微软为了限制Linux,微软让SCO到法院告Linux剽窃其源码)

由于Unix是由C语言写的,所以修改和移植都很容易,因此,很多商业公司及学术机构均加入这个操作系统的研发,各个不同版本的Unix也开始蓬勃发展。这才产生了今天这么多的各式各样的Unix衍生产品。如AIX、Solaris、HP-UX、IRIX、OSF、Ultrix等等。(这些商业化的Unix基本上都是源于AT&T授权的Unix System V)

Unix开源组织

AT&T的这种商业态度,让当时许许多的Unix的爱好者和软件开发者们感到相当的痛心和忧虑,他们认为商业化的种种限制并不利于产生的发展,相反还能导制产品出现诸多的问题。随着商业化Unix的版本的种种限制和诸多问题,引起了大众的不满和反对。于是,大家开始有组织地结成“反叛联盟”以此对抗欺行罢市的AT&T等商业化行为。

另一方面,关于“大教堂”(集权、封闭、受控、保密)和“集市”(分权、公开、精细的同僚复审)两种开发模式的对比成为了新思潮的中心思想。这个新思潮对IT业产生了非常深远影响。为整个计算机世界带来了革命性的价值观。

此时,一个名叫Richard Stallman的领袖出现了,他认为Unix是一个相当好的操作系统,如果大家都能够将自己所学贡献出来,那么这个系统将会更加的优异!他倡导的Open Source的概念,就是针对Unix这一事实反对实验室里的产品商业化私有化。尽管Stallman既不是、也从来没有成为一个Unix程序员,但在后1980的大环境下,实现一个仿Unix操作系统成了他追求的明确战略目标。Richard Stallman早期的捐助者大都是新踏入Unix土地的老牌ARPANET黑客,他们对代码共享的使命感甚至比那些有更多Unix背景的人强烈。

为了这个理想,Richard Stallman于1984年创业了GNU,计划开发一套与Unix相互兼容的的软件。1985 年 Richard Stallman 又创立了自由软件基金会(Free Software Foundation)来为 GNU 计划提供技术、法律以及财政支持。尽管 GNU 计划大部分时候是由个人自愿无偿贡献,但 FSF 有时还是会聘请程序员帮助编写。当 GNU 计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被 Red Hat 兼并的 Cygnus Solutions。

GNU组织的建立,延续了当年Unix刚出现时的情形,并为这种情形建立了可靠的法律和财务保障。GNU 工程十几年以来, 已经成为一个对软件开发主要的影响力量, 创造了无数的重要的工具。例如:强健的编译器,有力的文本编辑器,甚至一个全功能的操作系统。从那时开始,许多程序员聚集起来开始开发一个自由的、高质量、易理解的软件,让这使得Unix社区生机勃勃,一派繁荣景象。

自90年代发起这个计划以来,GNU 开始大量的产生或收集各种系统所必备的组件,像是——函数库(libraries)、编译器(compilers)、调式工具(debugs)、文本编辑器(text editors)、网站服务器(web server),以及一个Unix的使用者接口(Unix shell)等等,等等。但由于种种原因,GNU一直没有开发操作系统的kernel。正当Richard Stallman在为操作系统内核伤脑筋的时候,Linux出现了。

 

 

Linux横空出世

1990年,Linus Torvalds还是芬兰赫尔辛基大学的一名学生,最初是用汇编语言写了一个在80386保护模式下处理多任务切换的程序,后来从Minix(Andy Tanenbaum教授所写的很小 的Unix操作系统,主要用于操作系统教学)得到灵感,进一步产生了自认为狂妄的想法——写一个比Minix更好的Minix,于是开始写了一些硬件的设备驱动程序,一个小的文件系统。这样0.0.1版本的Linux就出来了,但是它只具有操作系统内核的勉强的雏形,甚至不能运行,你必须在有Minix的机器上编译以后才能玩。这时候Linus已经完全着迷而不想停止,决定踢开Minix,于是在1991年10 月5号发布Linux 0.0.2版本,在这个版本中已经可以运行bash 和gcc。

从一开始,Linus就决定自由扩散Linux,包括原代码,随即Linux引起黑客们(hacker)的注意,通过计算机网络加入了Linux的内核开发。Linux倾向于成为一个黑客的系统——直到今天,在Linux社区里内核的开发被认为是真正的编程。由于一批高水平黑客的加入,使Linux 发展迅猛,几乎一两个礼拜就有新版或修正版的出现,到1993年底94年初,Linux 1.0终于诞生了!Linux 1.0已经是一个功能完备的操作系统,而且内核写得紧凑高效,可以充分发挥硬件的性能,在4M内存的80386机器上也表现得非常好,至今人们还在津津乐道。时至今日,kernel的版本已经出到2.6。Linux的发展不像传统的软件工程,它完全是透过网络,集合世界各地的高手而成的一套操作系统,在这里我们也可以见识到网络快速传播的威力。Linux初次让整个世界感觉到了开源力量和网络力量的如此强大。(Linux 的标志和吉祥物是一只名字叫做 Tux 的 企鹅,标志的由来是因为Linus在澳洲时曾被一只动物园里的企鹅咬了一口,便选择了企鹅作为Linux的标志。)

inux 的历史是和GNU紧密联系在一起的。从1983年开始的GNU计划致力于开发一个自由并且完整的类Unix操作系统,包括软件开发工具和各种应用程序。到1991年 Linux 内核发布的时候,GNU已经几乎完成了除了系统内核之外的各种必备软件的开发。在 Linus Torvalds 和其它开发人员的努力下,GNU组件可以运行于Linux内核之上。整个内核是基于 GNU 通用公共许可,也就是GPL(GNU General Public License,GNU通用公共许可证)的,但是Linux内核并不是GNU 计划的一部分。1994年3月,Linux1.0版正式发布,Marc Ewing成立了 Red Hat 软件公司,成为最著名的 Linux 分销商之一。

严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和应用程序的操作系统(也被称为GNU/Linux)。基于这些组件的Linux软件被称为Linux发行版。一般来讲,一个Linux发行套件包含大量的软件,比如软件开发工具,数据库,Web服务器(例如Apache),X Window,桌面环境(比如GNOME和KDE),办公套件(比如OpenOffice.org),等等。

1991至1995年间,Linux从概念型的0.1版本内核原型,发展成为能够在性能和特性上均堪媲美专有Unix的操作系统,并且在连续正常工作时间等重要统计数据上打败了这些Unix中的绝大部分。1995年,Linux找到了自己的杀手级应用——开源的web服务器Apache。就像Linux,Apache出众地稳定和高效。很快,运行Apache的Linux机器成了全球ISP平台的首选。约60%的网站选用Apache,轻松击败了另两个主要的专有型竞争对手。今天的LAMP(Linux , Apache, MySQL, PHP)已经成为了架构Web服务器的主要首选。

现如今的Linux不但可以装在几乎所有的主流服务器上,当然也包括桌面的X86系统中。其还常常被用于嵌入式系统,机顶盒、手机、交换机、游戏机、PDA、网络交换机、路由器、等等,都是因为Linux那精彩的内核。

inux的出现,不仅仅给世界带来了一个免费的操作系统,也不仅仅是对Unix自由、共享的文化的延续,它的出现带给了计算机世界自Unix、GNU以来更为成熟的思想和文化。

Linux今天的领袖

 

inux和GNU关系是比较微妙的。那时,自由软件基金会编写的用户软件工具包铺平了一条摆脱高成本专有软件开发工具的前进道路。意识服从经济,而不是领导:一些新手加入了RMS的革命运动,高举GPL大旗,另一些人则更认同整体意义上的Unix传统,加入了反对GPL的阵营,但其他大部分人置身事外,一心编码。

inus Torvalds巧妙地跨越了GPL和反GPL的派别之争。他利用GNU工具包搭起了自创的Linux内核,用GPL的传染性质保护它,但拒绝认同Richard Stallman的许可协议反映的思想体系计划。Linus Torvalds明确表示他认为自由软件一般情况下更好,但他偶尔也用专有软件。即使在他自己的事业中,他也拒绝成为狂热分子。这一点极大地吸引了大多数黑客,他们虽然早就反感Richard Stallman的言辞,但他们的怀疑论一直缺个有影响力或者令人信服的代言人。而Linus Torvalds正好充当了这一角色。

Linus Torvalds令人愉快的实用主义及灵活而低调的行事风格,促使黑客文化在1993至1997年间取得了一连串令人惊奇的胜利,不仅仅在技术上的成功,还让围绕Linux操作系统的发行、服务和支持产业有了坚实的开端。结果,他的名望和影响也一飞冲天。Torvalds成为了互联网时代的英雄;到1995年为止,他只用了四年时间就在整个黑客文化界声名显赫,而Richard Stallman为此花了十五年,而且他还远远超过了Stallman向外界贩卖“自由软件”的记录。与Torvalds相比,Richard Stallman的言辞渐渐显得既刺耳又无力。

今天,我们也说不清楚是GNU Linux还是Linux GNU。Linux既不排斥开源,也不排斥商业化,Linus认为好的软件是需要免费和商业化共同推进的。正是这种革命性的想法,造就了今天的Linux火红的局面。Linux就像一股清泉流入了所有人的心中,引发了很多的启迪和思考。

Unix与黑客文化

黑客的文化和Unix的商业化存在着必然的联系。自从Unix出现,黑客文化就与之而来。

1993初,一个悲观的观察家撰文指出,已经有理由认为Unix的传奇故事连同他带有黑客文明将一同破产。许多人预测,从那时起Unix将在六月内死亡。他们很清楚,十年的Unix商业化,使自由跨平台的Unix梦以失败告终。Unix允诺的跨平台可移植性,在一打大公司专有的Unix版本之间不停地斗嘴中丢失,一个完美的操作系统最终沦为多种版本的一团乱麻,这应该说是人类文明史上的一个重大悲剧。

在专有软件社会中,只有像微软一样的“集权制,大教堂”生产方式才能成功。那个时代的人悲观地相信,技术世界的个人英雄主义时代已经结束,软件工业和发展中的互联网络将逐渐地由像微软一样的巨型企业支配,再也没有“佐罗”,世界是恺撒大帝的世界,计算机文明将进入黑暗的帝国时代。黑客已经死了,自由不付存在。

自从Unix出现以来,第一代的Unix黑客似乎垂垂老矣,衣食不饱( Berkeley计算机科学研究组在1994丢失了自己基金)。这是一个抑压的时代。专有的商业Unix的结果证明那么沉重、那么盲目、那么不适当,以致微软能够用那次等技术的Windows抢走他们生存的空间,拿走他们的干粮。黑客世界的残余力量被逼到了世界上的角落里,苟延残喘。

就在黑客文化日渐衰落之时,美国新闻周刊的资深记者Steven Levy完成了著名的《黑客列传》一书,书中着力介绍了一个人物:Richard M. Stallman的故事,他是麻省理工学院(MIT)人工智能实验室领袖人物,坚决反对实验室的研究成果商业化。他是商业软件社会中坚强的一员,决不随波逐流,建立了全新的黑客文化。

Richard M. Stallman(他的登陆名RMS更为人熟知)早在1970年代晚期就已经证明他是当时最有能力的程序员之一。Emacs编辑器就是他众多发明中的一项。RMS的目标是将后1980的松散黑客社群变成一台有组织的社会化机器以达到一个单纯的革命目标。也许他未意识到,他的言行与当年卡尔·马克思号召产业无产阶级反抗工作的努力如出一辙。RMS宣言引发的争论至今仍存于黑客文化中。他的纲要远不止于维护一个代码库,已经暗含了废除软件知识产权主张的精髓。RMS通过“自由软件(free software)”让黑客文化更加有自我意识。当然,这个充满魅力又具争议的人物本身已经成为了一个黑客文化英雄。

只有痴迷的“黑客”和具有创造力的怪人结成的反叛联盟才能把我们从愚蠢中拯救出来——他们接着教导我们,真正的专业和奉献精神,正是我们在屈服于世俗观念的“合理商业做法”之前的所作所为。 ——《The Art of Unix Programming》

RMS让世界上所有的人都知道,入侵电脑系统只是低级不入流的黑客干的事,真正的黑客,是为了自由,为了软件的自由,为了挑战计算机世界中的霸权主义而斗争。他们不是街头小混混,他们更像是绿林好汉,更像是罗宾汉,更像是佐罗。就像渴望民主的人民同专制的政府斗争一样。RMS领导着许多的黑客通过互联网向专有软件发出宣战。

X Windows是首批由服务于全球各地不同组织的许多个人以团队形式开发的大规模开源项目之一。电子邮件使创意得以在这个群体中快速传播,问题由此得以快速解决,而开发者可以人尽其才。软件更新可以在数小时之内发送到位,使得每个节点在整个开发过程中步调一致。网络改变了软件的开发模式。

另一方面,RMS的理论体系有许多东西非常有争议,他的GPL被认为是一种“病毒式”的协议,BSD的fans和老牌Unix黑客们认为,他们编写Unix的年头都比GPL声明要长得多,GPL依然有太多的限制,而BSD协议则比GPL更加的自由。另一方面,RMS走向了另一个极端,他是完全反版权的,反商业化的。把软件产品从强制收费推向了强制免费、共享和开源,这也为他带来了许多许多的争议。

在RMS组织黑客闹革命的年代里,没有多少黑客认同于RMS的理论体系,更多的他们参与GNU只是为了体现那种在互联网上协同工作,令人激动的工作模式。自从GNU设立以来,争议不断,而黑客文化却从未有统一在他的理想体系之下。

自从Linux出现以后,一个新的黑客领袖出现了,Linus Torvalds的中庸态度网聚了世界上顶尖的黑客,其绕过了GPL和反GPL的派系之争,他使用GNU的工具从而以GPL的“传染性”保护了Linux,但他同时也不承认RMS的理论思想体系,他即开源,又支持商业化。虽然,他没有带给黑客们什么重要的思想体系或统一的价值观,但他整合了全世界黑客的阵营,让所有的黑客的行为都围绕着Linux这一事物进行。他以“用自由软件是因为它运行得更好”轻而易举地盖过了“用自由软件是因为所有软件都该是自由的”。

1998年初,这种新思潮促使网景公司(Netscape Communications)公布了其Mozilla浏览器的源码。媒体对此事件的关注促成了Linux在华尔街的上市,推动了1999-2001年间科技股的繁荣。事实证明,此事无论对黑客文化的历史还是对Unix的历史都是一个转折点。

Unix的历史教训

 

下面的文字出自《The Art of Unix Programming》(Unix编程艺术)。令今天我们所有人所反思。

在Unix历史中,最大的规律就是:

距开源越近就越繁荣。任何将Unix专有化的企图,只能陷入停滞和衰败。

回顾过去,我们早该认识到这一点。1984年至今,我们浪费了十年时间才学到这个教训。如果我们日后不思悔改,可能还得大吃苦头。

虽然我们在软件设计这个重要但狭窄的领域比其他人聪明,但这不能使我们摆脱对技术与经济相互作用影响的茫然,而这些就发生在我们的眼皮底下。即使Unix社区中最具洞察力、最具远见卓识的思想家,他们的眼光终究有限。对今后的教训就是:过度依赖任何一种技术或者商业模式都是错误的——相反,保持软件及其设计传统的的灵活性才是长存之道。

另一个教训是:别和低价而灵活的方案较劲。或者,换句话说,低档的硬件只要数量足够,就能爬上性能曲线而最终获胜。经济学家Clayton Christensen称之为“破坏性技术”,他在《创新者窘境》(The Innovator's Dilemma)[Christensen]一书中以磁盘驱动器、蒸汽挖土机和摩托车为例阐明了这种现象的发生。当小型机取代大型机、工作站和服务器取代小型机以及日用Intel机器又取代工作站和服务器时,我们也看到了这种现象。开源运动获得成功正是由于软件的大众化。Unix要繁荣,就必须继续采用吸纳低价而灵活的方案的诀窍,而不是去反对它们。

最后,旧学派的Unix社区因采用了传统的公司组织、财务和市场等命令机制而最终未能实现“职业化”。只有痴迷的“黑客”和具有创造力的怪人结成的反叛联盟才能把我们从愚蠢中拯救出来——他们接着教导我们,真正的专业和奉献精神,正是我们在屈服于世俗观念的“合理商业做法”之前的所作所为。

Unix族谱

Unix的故事仍旧延续着……,许多网站也为这段历史留下记录。一个详细记录Unix历史的网站(http://www.levenez.com/unix/),这个网站忠实记载着1969~2005 年Unix发展的大事,而且还有 PDF 档案可供下载,上面有一个庞大的UNIX家族版本树,让人叹为观止。网站的首页陈列每个时期Unix的历史,也代表着无数工程师的心血与努力。

下面是一个简单的Unix的族谱:

     |--AT&T (1969)-----\

     |                  |

     |              V6 (1976)

     |                  |

     |              V7 (1979)

     |                  |

     |   Novell owns AT&T's Unix (by 1994)

     |     _____________|____________________

     |     |       |      |        |         |

     |    AIX    IRIX    SCO   HP-UX   Solaris 2.X

     |   (IBM)   (SGI)          (HP)     (Sun)

     |

     |

     |--Berkley (1977)-----\

     |                     |

     |                  1BSD (1977)

UNIX-|                     |

     |                4.4BSD (1993)

     |                     |

     |                   Net/2

     |                     |

     |               4.4BSD-Lite (by 1995)

     |     ________________|____________________________________

     |     |       |          |         |          |            |

     |   SunOS   Ultrix   NetBSD    OSF/1   NeXTSTEP   Mac OS X

     |   (Sun)   (DEC)   (Various)  (DEC)    (NeXT)    (Apple)

     |                   (FreeBSD)

     |

     |

     |--Hybrids----\

                   |

                Linux (Various)

                   |

                   |____________________________________________

                   |    |      |          |              |      |

                   | RedHat  Debian  Mandrake   Slackware    S.u.S.E.

                   |                          (Walnut Creek)

                   |

                   |_____________________________________________

                       |        |           |          |        |

                    MkLinux  LinuxPPC  TurboLinux  OpenLinux  CorelLinux

                    (Apple)                        (Caldera)   (Corel)

Unix的特点

现在的文献中提到Unix基本上是说,由Ken Thompson和Dennis Ritchie共同开发的。而通过历史我们也能发现,Unix的主要是由Ken Thompson写下的。但在学术界,Dennis Ritchie的名字往往被排在了Ken Thompson前面的。这就是因为,Dennis Ritchie不但发明了C语言,而且当时他设计Unix操作系统的设计思想,影响了整个世界,直到今天。

当时,他们开发UNIX,没有正式立项,是Ken Thompson和Dennis Ritchie等少数几个人偷偷干的,如果一切都要从头从新设计,那几乎是不可能的。所以,Unix吸取与借鉴了Multics的经验,如内核,进程,层次式目录,面向流的I/O,把设备当作文件,……等等。但是Unix在继承中又有创新,比如Unix采用一种无格式的文件结构,文件由字节串加\0组成。这带来两大好处:一是在说明文件时不必加进许多无关的“填充物”,二是任何程序的输出可直接用作其他任何程序的输入,不必经过转换。后面这一点叫做“管道”(piping),这就是Unix首创的。此外,像把设备当作文件,从而简化了设备管理这一操作系统设计中的难题,虽然不是UNIX的发明,但是实现上它采用了一些新方法,比Multics更高明一些。

下面是Unix的特点:(30多年过去了,这些东西早已变成经典)

l         Everything (including hardware) is a file

所有的事物(甚至硬件本身)都是一个的文件。

l         Configuration data stored in text

以文件形式储存配置数据。

l         Small, single-purpose program

程序尽量朝向小而单一的目标设计

l         Avoid captive user interfaces

尽量避免令人困惑的用户接口

l         Ability to chain program together to perform complex tasks

将几个程序连结起来,处理大而复杂的工作。

Unix的影响和哲学

Unix是第三次工业革命中计算机软件领域最具代表性的产物。在这近40年中,由Unix造成的影响是最有深远意义的。就我看来,Unix为软件领域带来了至少以下有积极的东西,由这些东西所引发的直接或间接的事物更是举不胜数。

1)  软件开发的若干哲学和思想。

2)  全民参与推动软件,代码共享的模式。

3)  开启了黑客文化和开源项目。

4)  免费和商业的完美结合的Linux。

5)  C语言,而后发展的C++,Java等等类C的语言和脚本。

6)  TCP/IP,其的Socket编程已成为今天通用的网络编程主流。

不能不说,AT&T虽然发展了Unix,但今天Unix的混乱的局面也和AT&T 有着直接原因。但反过来说,如果没有AT&T的反面教材,今天的GNU/Linux很有可能也不会出现。AT&T究竟是限制了Unix的发展,还是以反面示例促进了Unix社区,已不好评说。今天,软件是商业化好还是开源好的争论还在继续,纵观这几十年来Unix的历史,Linux的划时代地出现。相信你会得出自己的结论。不管怎么样,Unix的经历对计算机领域贡献的不单单是技术,他给我们提供了丰富而生动的教材。特别是Unix引发的哲学,让今天的我们依然受益不浅。

说到Unix为我们所带来的软件开发的哲学,我必需要说一说。Unix遵循的原则是KISS(Keep it simple, stupid)。在http://en.wikipedia.org/wiki/Unix_philosophy 上有很多的基本上大同小异的Unix哲学,都是很经典的。

Doug McIlroy 是认为UNIX的哲学是这样的:三条哲学,简明扼要,就是这三条哲学贯穿着整个Unix世界。尤其是第一条“do one thing and do it well”真是相当精彩!

l         Write programs that do one thing and do it well.

l         Write programs to work together.

l         Write programs to handle text streams, because that is a universal interface.

只要是Unix的程序员,他们会比别的程序员在任何时候都会不停地强调着这三条哲学。

而《The Art of Unix Programming》总结了下面这些哲学,都是至理名言啊。

  • Rule of Modularity: Write simple parts connected by clean interfaces.
  • Rule of Clarity: Clarity is better than cleverness.
  • Rule of Composition: Design programs to be connected to other programs.
  • Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
  • Rule of Simplicity: Design for simplicity; add complexity only where you must.
  • Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
  • Rule of Transparency: Design for visibility to make inspection and debugging easier.
  • Rule of Robustness: Robustness is the child of transparency and simplicity.
  • Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.
  • Rule of Least Surprise: In interface design, always do the least surprising thing.
  • Rule of Silence: When a program has nothing surprising to say, it should say nothing.
  • Rule of Repair: When you must fail, fail noisily and as soon as possible.
  • Rule of Economy: Programmer time is expensive; conserve it in preference to machine time.
  • Rule of Generation: Avoid hand-hacking; write programs to write programs when you can.
  • Rule of Optimization: Prototype before polishing. Get it working before you optimize it.
  • Rule of Diversity: Distrust all claims for "one true way".
  • Rule of Extensibility: Design for the future, because it will be here sooner than you think.

X Windows 的设计者 Mike Gancarz 给出了下面九条哲学思想

  1. Small is beautiful.
  2. Make each program do one thing well.
  3. Build a prototype as soon as possible.
  4. Choose portability over efficiency.
  5. Store data in flat text files.
  6. Use software leverage to your advantage.
  7. Use shell scripts to increase leverage and portability.
  8. Avoid captive user interfaces.
  9. Make every program a filter.

在今天,这种思想依然被传承着,在影响着世界上各个角落的每一个程序员。

Unix痛恨者手册

这里还需要值得一提的是一本叫《The Unix-Haters Handbook》,中文译做《Unix痛恨者手册》。可以在这里下载:http://research.microsoft.com/~daniel/uhh-download.html。其中以调侃的语气声讨了Unix的种种不是。虽然这是十年前的一本书了,但还是值得一读。这本书指出了许多Unix的设计错误,指出了种种看起来很合理的设计走向了荒谬,还这样调侃了C语言——“如果说C语言给足了让你上吊的绳子,那么,C++在给了你足够的绳子把你的邻居全部捆起来之后,还给了你足够的绳子让你为一艘小帆船装上帆,最后你还有足够的绳子把自己吊死在帆船的桅杆上”。呵呵,相当的尖酸刻薄吧。里面有一句对操作系统的评价是这样的:“The fundamental difference between Unix and the Macintosh operating system is that Unix was designed to please programmers, whereas the Mac was designed to please users. (Windows, on the other hand, was designed to please accountants.”(Windows设计给会计人员?!连计算机用户都不是了,呵呵)

不过,我可以感觉得到这本书的作者在书中对Unix的感情是比较复杂的,爱恨交加,在书的最后有这样一句话“would anyone have spent this much time and effort writing about how much they hated Unix if they didn't secretly love it? I'll leave that to the readers to judge, but in the end, it really doesn't matter: If this book doesn't kill Unix, nothing will”。是的,如果Unix能够存活这么长的时间,那么,不会有什么东西可以把他消灭了。

从《Unix痛恨者手册》这本书,再加上Unix的历史,我们可以感到Unix的经历的风风雨雨,在Unix上面出现有种种教训,近40年的历程,Unix历经磨难,几近夭折,一路走来的确很不容易,让人由衷感叹。今天的Unix,今天的软件工业和以前相比已是不可同日而语。很大程度上,这些都要归功于这个充满苍桑的Unix。

 

后记

       在中国我们开始学习计算机的时候,我们被Microsoft所创造的文化所笼罩里。就在Unix出现革命性的转变,在Unix影响计算机世界文化的那几年里,科班出生专业开发人员学习的是MS-DOS和微软的文化,我们犹如一个井底之蛙一样,对外面的翻天覆地的变化无动于衷。微软创造的文化在我们这里尤其地根深蒂固,我们几乎忘记了另外一边的Unix。

在那充满激情的Unix的岁月里,大伙为了科研目的或个人兴趣在Unix上进行各种开发,并且不计较金钱利益,将这些源码公开,互相共享。在那里,开发和自由成为主题,正因为如此,当今的世界才如此丰富多采。在近40年Unix文化和技术积淀的里面,蕴涵着比较纯正的计算机文化和思想。

纵观整个Unix的历史过程中,许许多多的程序员、工程师前辈们在Unix中所摸爬滚打,他们的辛勤地、他们呕心沥血地跟随Unix,努力建立一个繁荣的计算机世界的文明。Unix不是一个简简单单的操作系统。有人说,Unix是程序员设计给程序员的,一点没错。Unix的近40年历史造就了它的博大精深,它给程序员们带来的绝不仅仅只是技术上的知识。它的失误,它的无奈,它的精神,它的荣耀,它从技术和思想上都启迪着我们。对于程序员来说,学习Unix就等同于向前辈程序学习。无论你是什么样的程序员,你都应该了解Unix,这是开发人员的根,前面的开发者造就了它,而它又在引领后面的开发人员,它是前辈程序员们交给我们的一份礼物,一个接力棒,它是开发人员赖以生存的土壤,是上一辈程序员留给我们这一代程序员开启未来的钥匙。Unix就像一个程序员教父一样,理当受到我们的尊敬和崇拜。

参考资料

         Peter H. Salus 的《A Quarter Century of UNIX》,这被认为是UNIX的标准历史。

         Eric S. Raymond 的《The Art of Unix Programming》

         http://www.wikipedia.org/  维基百科

         http://www.computerhope.com/history/  Computer History

         http://www.lotsir.com/Blog/article.asp?id=494  Lotsir's Blog — 《Unix&Linux历史重温》

         http://www.aka.org.cn/Docs/hacker-history.html 《黑客文化简史》

         http://www.simson.net/ref/ugh.pdf  《The UNIX-HATERS Handbook》

         http://free-electrons.com/doc/free_software/img0.html 《GNU/Linux Free Software》幻灯片

         http://cm.bell-labs.com/cm/cs/who/dmr/hist.html  Dennis M. Ritchie 《The Evolution of the Unix Time-sharing System》

本文来自:http://blog.csdn.net/haoel/archive/2007/03/27/1542353.aspx 和 http://blog.csdn.net/haoel/archive/2007/03/27/1542340.aspx


→如果您认为本词条还有待完善,请 编辑词条

标签: Unix 40年