Unix的历史教训下面的文字出自《The Art of Unix Programming》(Unix编程艺术)。令今天我们所有人所反思。 在Unix历史中,最大的规律就是: (看看《谁写了Linux》你就会知道这一规律) 距开源越近就越繁荣。任何将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) 点此查看《Linux 分发包族谱》 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多年过去了,这些东西早已变成经典)
Unix的影响和哲学Unix是第三次工业革命中计算机软件领域最具代表性的产物。在这近40年中,由Unix造成的影响是最有深远意义的。就我看来,Unix为软件领域带来了至少以下有积极的东西,由这些东西所引发的直接或间接的事物更是举不胜数。
不能不说,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”真是相当精彩!
只要是Unix的程序员,他们会比别的程序员在任何时候都会不停地强调着这三条哲学。 而《The Art of Unix Programming》总结了下面这些哲学,都是至理名言啊。
X Windows 的设计者 Mike Gancarz 给出了下面九条哲学思想
在今天,这种思想依然被传承着,在影响着世界上各个角落的每一个程序员。 |