读到这里,读者可能发现书中经常出现“如果你用的是Windows”或者“如果你用的是Linux”这样的字眼。有时这样的字眼甚至可能影响到你的阅读,如果真的这样请你原谅。我试图照顾尽量多的读者,但是对每一个人来讲,却必须面临一个选择──在什么平台下开发。本书第一版使用的是Windows平台,而在第二版中,我投诚了。接下来你会发现,虽然以后的行文会最大限度地兼顾Windows,但总体是以Linux为默认平台的。
其实在什么平台下开发,有时纯粹是口味问题,或者是环境问题──你开始接触计算机时使用什么,很大程度上取决于你周围的人使用什么,而这往往对你的口味产生巨大而深远的影响。然而最早接触的未必是最适合的,在我亲身体会和比较之后,我决定从Windows彻底换到Linux,我想在这里说说为什么。请注意这不是布道会,更不是你开发自己的操作系统必须阅读的章节,我仅仅是谈谈我个人的体会,希望能对你有所启发,同时解释一下为什么第二版会有这样的改动。
在第一版成书的时候,我已经在使用Linux,但是用得并不多,主要是觉得用不习惯,而现在过了两三年,我已经基本不用Windows,在Windows下我会觉得很不习惯。我的这一经历至少有两点启示:第一是Linux不好用是个误解(有一种说法是Windows的桌面更好用,这是个复杂的误解),好不好用是习惯问题;第二是如果你有兴趣使用一样你不熟悉的东西,不要因为刚开始的不习惯而放弃。
其实对于Linux和Windows的误解有很多,我把这种误解归结为操作系统文化上的差异。其实在提起两种系统时,人们往往拿一些具体的事情来做比较。比如比较它们的安装过程、使用方法,甚至是界面。但实际上隐藏在表面背后的是两种完全不同类型的文化,或者称之为不同的理念。
对于Windows而言,它的文化植根于微软公司的愿景,“让每个家庭的每个桌面上都有一台电脑”,当然他们希望此电脑内运行的是Windows操作系统。这个理想加上Windows作为商业软件的性质,决定了Windows具有相当程度的亲和力,用户界面显得相当友好。岂止友好,它简直友好到每个人──无论儿童还是老人,受过高等教育还是只念过小学──都能比较容易地开始使用电脑,这无疑是微软对这个社会的巨大贡献。但是界面友好并不一定就完美了,这一点暂且按下不表,我们先来说说Linux。
Linux的文化很大程度上来源于UNIX,UNIX所倡导和遵循的文化也被称为UNIX哲学,其中很重要的一条原则叫做“做一件事并做好”[9],这听上去跟Windows的界面友好说的不是一码事,但其实仔细分析起来大有关联。做一件事并做好意味着两件事情,第一件事就是工具之间可以协同作战,不然各人做各人的,无法完成复杂应用;第二件事就是接口要统一,不然无法做到协同。这个统一的接口就是文本流(text stream),这也就意味着,命令行是UNIX文化的核心。而Windows的做法大有不同,因为要界面友好,于是不能指望用户开始就知道怎么把工具串接在一起,所以Windows选择任何应用都自己完成所有功能──至少让用户看起来如此,这使得每个工具都各自为战,从而增加了每个程序的复杂性和开发成本。不仅如此,由于功能都是软件开发者定好的,所以你基本上不能指望大部分的程序具备可扩展性,而在UNIX下,大部分的程序都可以跟其他程序协同起来完成程序不曾“设计”的功能。这也是上文我说“界面友好并不一定完美”的原因,友好是有代价的。
[1] [2] [3] [4] 下一页