|
|
打破Windows的迷信
UNIX 是简单的--“我相信简单就是最好,如果太复杂,我是不能理解的。” —Seymour Cray
很多第一次用 Linux 的人会惊奇的发现,Linux 的程序居然不用“安装”就可以运行,
程序拷贝到随便那个目录都可以用,而不是一定要占用你第一个分区的空间。程序的
设置只是一些简简单单的文本文件。你根本不需要什么“注册表修改器” 就可以改变
系统的设置。这就叫做简单,但是简单就是美。虽然这只是 UNIX 简单性的一个肤浅
的认识,你已经体会到了某些东西。
但是简单并不意味着功能弱,并不意味着落后。相反,简单意味着强大,意味着生命力。
我不会再继续阐述我理解到的“UNIX 的简单”,因为这个需要自己去体会。
UNIX 是永恒的
有人说:“Plan9 会取代 UNIX,Mach 会取代 Linux 内核。”
但是你如果是一个深入体会了 UNIX 的人,你就会知道:UNIX 的思想是永恒的,不管
时过境迁,Plan9 是否代替 UNIX,UNIX 的灵魂都会在 Plan9 身上现形!
我为同一个设备写过 Linux 内核和 Windows VxD 驱动程序。写 Linux 驱动程序时,
我对 UNIX 设计的完美的一致性,远见性所折服。UNIX 用同样界面的 read(), write()
系统调用就可以对不同的对象:普通文件,设备文件,管道,管道文件,socket,……
进行统一的读写操作。我跟本不需要写一个测试用的应用程序就可以对我的设备驱动进
行测试,因为 cat, cp, dd, 它们也使用了同样的 read(), write(),设备和普通文件
在应用程序眼里没有区别。在那个还没有 Smalltalk, 没有 C++ 的年代,UNIX 的设计
者已经使用了所谓的 “面向对象方法”。对,C 语言也可以实现面向对象。
UNIX 的系统调用几十年都没有很大变化,这非但不是顽固,不进步的象征,反而是
UNIX 的远见卓识的体现!这就跟 TeX 程序几十年都不变的情况差不多。这些才是真正
的永恒的 master piece! 你应该改变所有软件都必需从 0.1, 1.0, 1.1, 1.2, 2.0,
..., 3.0, 3.1, 95, 98, 2000, XP, ... 不断升级的想法。
Windows 就不同了,它在最开头只是一个 DOS 之上的图形包装而已。后来为了兼容以
前的糟糕设计,不得不加上很多累赘。我写 VxD 驱动程序的时候就深有体会,Windows
95 程序对设备的操作只有用 DeviceIoControl,我不得不写了两个应用程序来对设备
驱动进行测试。Windows 内核的不一致性和隐密性使我非常恼火。不过 Windows WDM
驱动程序现在也有了 ReadFile, WriteFile,…… 那说明什么?那说明 Windows 在向
UNIX 学习,或者有可能是某个 UNIX 设计人员在微软打了几天临工,顺手加了几个
UNIX 的东西进去。这样做是没有用的,Windows 从一开始就是非常糟糕的设计,它的
历史的包袱太沉重了,缝缝补补有什么用?它只能永远的被 UNIX 甩在身后!
|
|