我很清楚这样的标题可能会引起全面的争论,甚至是无休止的口水战。不过,既然Linux和Windows之争早已经是无休止的争论了,我
再制造点纷扰也是无关大局的了。
为了避免有朋友对于我个人的误判,我先澄清一下自己写此文基于什么。
本人应该属于国内很早接触计算机设备的人,大概在7岁的时候在少年宫第一次用计算机玩游戏,1985年开始在我父亲的办公室用
PC/XT玩太空大战。记得当时我连键盘都不会用,就用一张纸记下来所有操作的步骤(包括从父亲的抽屉中找到有游戏的300KB软盘)。
90年开始编程,主要是用basic;93年开始学习我父亲从美国给我买回来的Motorola M680x0系列汇编语言,并且开始学习C.96年有了第一台自己的486;98年开始学习perl;2000年开始学习JAVA,03年开始学习python.
操作系统方面,原来一直使用专有系统和IBM PCDOS,后来用MS DOS;MS从最开始到的操作系统我用过DOS3.x、DOS4.x、DOS6.x、Win3.x、WinNT 3.x、Win95/98/ME、WinNT4/2000/2003,由于爱好和工作的原因,每个操作系统我都用过相当一段时间(包括SCO UNIX的前身),应该说对MS的操作系统有了很深的了解。
我从96年开始接触使用Linux、RH和Turbo是我的启蒙老师。后来一直用slackware和Mandrake,直到现在的Gentoo.我使用过的Unix Like操作系统(发行版)包括:RedHat Linux、RedHat Linux AS、SuSE、SuSE Enterprise、Slackware、Debian/Knoppix/Ubuntu、
Mandrake/Mandriva(Mandrake 9.2废了我一个显示器)、LFS、FreeBSD、Arch Linux、NetBSD、HP-UX、Solaris还有Hiweed^_^.用的最多的就是RH 7.3、Slackware和Gentoo了。近两年更是Gentoo Linux坚定不移的用户。
计算机技术是我最大的爱好,但是只是爱好而已。我从来没有想过成为顶尖黑客,所以我从来没有做过程序员的工作,虽然我写过很多程序(包括病毒)。我的工作范畴是业务分析(和通常人理解的系统分析有所不同)、产品策划和技术管理。
我之前作为项目经理做过很多软件项目和系统集成项目,从指纹门禁到ERP、到外埠电子政务都做过。计算机,严格的说软件,对我来说就是工具,驾轻就熟的一种工具。工作时,我笔记本上用WinXP跑OFFICE和ROSE,PC上跑Gentoo Linux,一直都是并用。
前面废话太多了,进入正题吧。
我从三个方面对这两种操作系统来做对比:人机界面、性能、文化和发展。首先要说明的是,Linux严格说起来不是操作系统,Linux各种发行版才是。
1,人机界面
人机界面(UI)是否优秀的界定比较模糊。对于每个人的个体来说,UI是否够好完全取决于个人认识,而个人的认识基于经验。如果某个人使用过其他的UI,那么他判断一个新的UI是否友好完全是基于自己以前使用UI的经验。
我们评价一个UI是否好用,主要是从新手上手难度与熟练后对系统掌控的难度来评价。
我们知道UI主要有CUI和GUI的分别,也就是指令界面和图形界面。Linux的CUI继承自拥有40多年优秀传统的UNIX.40年长盛不衰本身就证明了问题。对于操作系统来说CUI是一切操作的最直观表现。经过多年的发展CUI已经在逻辑处理、正则表达式方面具有了强大的能力,而且Unix Like上面的shell通常都有很强大的编程能力,能够充分组合各种Linux平台上各种小工具的功能,进一步加强了CUI与操作系统交互的能力。这个方面Linux的优势是非常明显的。
Windows系统现在强调自己是一个完全的GUI,但是实际上只能说是以GUI为主,根本无法完全去除对CUI的支持。而CUI方面,MS DOS和Linux的差距太大了。
如果你是一个新手,使用Linux CUI与使用Window CUI相比没什么不同。当你经过学习,拥有了丰富经验之后,Linux CUI的能力简直太强大了,你可以很方便的用Linux CUI做任何事情,只要Linux系统提供。而Windows CUI,就算你经验再丰富,你能做的事情也很有限,而且MS并不赞成你用CUI,所以你能够获得的支持也非常有限,看看铺天盖地的《7天学会Windows》再比较一下凤毛麟角的《MS 命令行大全》就知道了。
CUI,Linux完胜。
GUI方面是Windows一直以来的强项。从乏善可陈的Win3.x到弱不禁风的Win95到光芒四射的Win2k,MS找准了一条路:让计算机看上去用起来很简单。MS在Windows领域作出了几个非常英明的决定:集成IE、集成DirectX、全面参考MacOS.这些决策直接产生了如今Windows统治普通个人用户桌面的现状。
MS Windows强调的是全面的集成,从底层到表面全部封装,这也是MS一贯的产品战略。你要的MS会给你,你不要的,一样给你。
而Linux的GUI走的是另外的一条道路。首先Linux操作系统还是以CUI为主,因为广大的用户(主要指国外的用户)已经很习惯于CUI操作了,GUI只是一个次要的选择而已。这一点从早期的X设计的思想都可以看出来。X只是运行在Linux操作系统中的一个进程而已,
甚至不比系统日志进程的优先级高。基于X的桌面环境只是CUI的Just Another Choice,而不是替代型的选择。
由于Linux开发的完全开放和基于X的桌面系统架构层次,开发者可以开发桌面系统中任意的一个部分,这也直接造成了基于X的选择非常众多。好处是不论Linux桌面中的任何部分,只要你不喜欢都可以换;坏处是只要你不是“老鸟”选择这些软件会让你非常头痛。选择的自由伴随的就是可选择的离散。
不过,正是这种给开发者提供的完全自由,现在出现了很多非常出色的X软件。e17的“惊艳”、fvwm的自如、xfce的精巧、xBOX的简单,还有与很多很多其他X软件的组合,让人目不暇接。用一个词语形容就是“百花齐放”。
国内用户通常诟病的就是Linux桌面系统远远没有Windows好看、好用。我想现在数人对比的都是WinXP和GNOME/KDE.说实话,这个是有历史原因的。如果不是96年之后D版Windows泛滥,为MS培养了大量的用户,现在还有那么多人为Windows唱高调么?很多人曾几何时为了Win95蓝屏不得不C+A+D,到被WinME折磨的神经质,结果今天为了GNOME中一个软件的崩溃就大动肝火,然后高喊Linux不适合桌面。不得不让人问一句,这样公平么?
Windows近年的发展非常有限,除了WinXP十分难看的主题外,操作方法、表现形式都一直没有突破。用户者可能会说这是“延续”,但是我要说的是,缺乏竞争让Windows越来越没进取心了。Vista给我的感觉压根就不是给普通用户用的,太多华而不实的东西了。就和现在正在放映的《无极》一样,剥去华丽的外表,剩下的只有苍白老旧的内涵了。
我现在还天天使用笔记本上的WinXP,一样发现了大量BUG,有些严重影响了我的使用。但是MS很会转移视线,现在大家抨击的都无非是安全性问题和病毒问题。安全性问题MS可以解释说这个是因为我们用户太多;病毒也一样,而且病毒又不是微软开发的。我总觉得这样的话是不负责任的推托。既然你有那么大的市场那么多的收入,那你就有那么多的责任,应该全力帮助客户解决问题,而不只是表现出自己很无辜,然后找几个枪手转移视线。
GUI方面,MS Windows借助D版Windows培养的大量用户占据了先机。但是只是比较操作上的简便可用方面,KDE甚至稍微超过WinXP.
但是总体来说,操作习惯还是成为了决定因素,对于多数用户来说,Windows GUI更适合。
评估两种系统的可用性还有一个因素就是中文和硬件支持。
Linux以前对中文的支持很差,毕竟很少国内的开发者参与开源项目。不过现在这个问题越来越容易解决了,从GTK对字体支持的进步,到更多对zh_CN支持的软件,中文问题已经不像以前那么明显了。但是,Windows毕竟是从底层就中文化的,这个方面还是完全占有优势的。
硬件支持和驱动程序架构不可分,Linux内核的驱动架构正在经历变化,以后会更多User Space Driver出现。但是不可否认,MS再一次占了垄断的便宜,硬件厂商(特别是消费级硬件)还是优先开发Windows下面的驱动,而且更新速度相当快。Windows下面对于驱动程序的管理也比较符合用户通常的习惯。Linux在这个方面虽然已经做的不错了,但是还有很多工作要继续做下去。
2,性能
Linux的性能是非常出色的,尤其是我使用的Gentoo,可以完全针对机器的配置设置优化。而且Linux对于x86_64的支持领先Windows不是一点半点。在相同平台上,优化过的Linux在性能方面确实远远超过Windows.从Windows的理念就可以知道了:不管你要不要,我都给你。不管你是不是跑某种和GUI完全无关的关键服务,Windows GUI一定是要运行的。如果一个GUI的BUG导致了系统的崩溃,那只能说你太倒霉了。
自从Kernel 2.6之后,glibc with nptl,对于线程的支持也好了很多,性能方面也更加出色。这些都是Linux长足的进步。而且经过无数技术高手的敲打、优化,Linux确实可以承担起相当重要的角色了。
公平的说一句,Windows的性能和稳定性比以前已经好了很多了,起码在某些地方完全是与Linux处于同样层次的。但是Windows的优化能力十分有限。因为MS为你做了很多事情,虽然你不想让他这么做,但是你也没的选择。对于多数比较“懒”的用户来说,这样也许很好,但是对于对于系统优化拥有固执追求的人来说,Windows并不适合。根据8/2法则,MS这样做在市场上是很聪明的,但是这种武断蛮横的方式,恐怕有不少人无法接受。
性能方面,我认为,Linux领先Windows一些,这种情况会长期延续下去。除非……Windows开源。
3,文化和发展
Linux世界的文化和Windows世界的文化有很大的不同。Linux告诉用户:一切都在你手里,只要你作出选择就好了;Windows告诉用户:一切都在我手里,只要你接受就好了。而且,Linux是有强烈的乌托邦气质,而MS是典型的商人气质。这就不是孰优孰劣的问题了,而是用户更接受哪种文化。
对于多数用户来说,只和开发者形成商业关系,MS在这种关系中扮演的是最适当的角色:你给我钱,我给你产品;而Linux的用户和多都会在使用Linux的过程中获得一种“参与”的感觉,那么能够获取的信息就是:你就是我们的一员。这一点从无数火热的Linux社区就可以体验到。
作为个人用户,我更接受Linux世界的文化,但是在为自己的客户选择产品的时候,我也会根据客户的实际需要来选择。不过,既然Linux在关键商业应用上不比Windows差,甚至更强,那么我当然首先推荐Linux咯。桌面方面,呃,国内客户还是推荐Windows吧,反正你强要介绍Linux多数也是浪费口水。
但是,从最近10年的发展来看,MS更多的是因循守旧,而Linux世界在不断努力的创新。GTK1 和GTK2、GCC2/3/4、KDE 2/3、Kernel 2.2/2.4/2.6……哪个不是翻天复地的变化?每次变化都为用户带来了巨大的价值!这,就是Linux世界为用户做的事情。
另外,当你遇到问题的时候,你会如何获得帮助呢?MS说,Linux的服务是弱点,因为没有像MS这样大型商业企业能够这样成体系的提供客户服务。我们先不谈暧昧的SUN和IBM,只是在Linux社区方面,你就能体验到完全的不同。你遇到MS的问题的时候,更多的时候是客服商业化的“关心”、社区上同病相怜的唉声叹气、以及没什么技术含量的建议(例如:重启)。而在用Linux时遇到问题的时候,我们更多的碰到的是朋友式的帮助(在国外尤其明显),就算是你和Linus讨论问题,他也一样非常热情。可以说,同样是遇到问题,我在Linux世界体会到的绝对不会有“无助”二字。
说一个我和别人讲过很多次的例子。我曾经做过一个ERP项目,项目用的是全套MS产品,从操作系统到数据到技术架构。当时系统基于MS当时重点推荐的MTS(Windows DNA的一部分)来设计的。但是客户投诉说服务器每天要重启一次,很影响工作。我们查了问题,发现是MTS对于内存管理存在BUG,当大数据量大负载之后(其实也不是很大),MTS就迅速吃掉所有系统资源,系统进入死锁状态,没有任何办法杀掉MTS,只能重启。我们咨询了MS技术人员,他们的答复是:“这个问题暂时无法解决”。之后MS操作系统升级了,图形界面换了,技术架构也换了。一下子没了MTS,出现了COM+ Service.OK,公司产品必须全部重写,而且,这是第二次了。从VBD到COM+到。NET,微软赚了,也耍了一大批追随者。Linux呢?和Unix Like一样,几十年都不会让客户过去的经验成为垃圾。
罗嗦了半天,大家突然可能会觉得我是一个Linux枪手。我否认。我用Windows多过Linux.但是作为个人用户,我更喜欢Linux.作为一个游戏爱好者的时候,我选择Windows(其实我喜欢PS2,但是是日货,XBOX也是MS的东西,没必要考虑)。Linux更像我一个非常喜欢的玩具,而且这个玩具有着不同凡响的用途,恐怕多数人也是这样看待Linux的。虽然是以“玩具”的角色诞生的,但是Linux正在不断摆脱“玩具”的定义。如今的Linux已经完全可以承担关键的商业业务了;桌面方面,我只能说:只要假以时日,前途不可限量。
我并不希望Linux可以完全取代Windows,这样既不现实也完全没必要。只是Linux的火热一定程度上反映了业界对于MS垄断桌面的不满,并承担了打破这种垄断的重任。从一个完全非商业的世界走进一个完全商业的世界,Linux需要的不仅仅是优秀的发行版,需要的是更多用户的支持、更多优秀的盈利模式。