1.Unicode真的那么神奇么?
在N罪里边,unicode被说成了救世主,似乎只有unicode才能适合全球化的操作系统。但实际上呢?我们先不说linux,Unicode既然如此神奇,为什么他没有一统天下呢?因为unicode也有其巨大的缺陷。举例来证明,windows的记事本能把文本存成各种编码吧?随便选一段文字做一个试验。用记事本分别存成ANSI,UNICODE,UTF-8编码。然后用一个十六进制编辑器打开,随便改一个字节。你会发现除了被修改的地方不对了,三个文本的其他的文字根本没有影响,说明utf8不会造成乱码。但是如果你不是修改一个字节,而是删除一个字节,结果就会完全不同。ANSI的文本会有两种情况:如果删除的是英文的一个字节,则不会对其他文本产生影响。如果删除的是中文的一个字节,则会引起一段乱码(后边由于夹杂英文、半角符号等有机会能恢复正常)。Unicode编码的不用说删除字节的后边全是乱码。因为后边字节的顺序全乱了。而utf8呢?则除了被删的字节有影响外。其他完全不会出现乱码。为什么会出现这种情况呢?我们看看他们实际的编码,英文怎么编码我就不唠叨了,utf8跟ANSI一样,unicode对ANSI补00,凑成16位,大家都知道。中文呢?以“我是中国人”这句话来说
ANSI是:CED2CAC7D6D0B9FAC8CB
unicode是:11622F662D4EFD56BA4E
utf8是:E68891E698AFE4B8ADE59BBDE4BABA
utf8不但没有省字节,反倒比ANSI,UNICODE都更占空间。
细心的朋友可以看出,ANSI的组合每个字节都是CX,DX等大于80的,所以双字节跟单字节的英文是可以分开的。但随便拿出一串字节,对于中文来说,你不容易知道他是从双字节的第一个还是第二个字节开始的。
对于UNICODE,随便拿出一串字节,则除完全不知道他是哪个字节开始的,即使是英文。如果前一个字节是8200,后一个是3282,这两个字肯定是非英文但从00开始算的话,这个0032就是一个英文字符了。所以随机拿一串字节Unicode完全没办法确定是什么。随便删一个字节,后边的不用说肯定全是乱码。
而utf8呢?我认为是这三种编码中最健壮的。每个汉字都用3个字节组成,第一个字节全是EX可能是区码吧,可能中文的UTF8编码中文全以EX开头吧。这样随便拿一段字节,很容易就能判断出它的内容。所以无论你怎么改,都不会出现大段的乱码。这也是为什么internet传输超文本为什么喜欢用utf8编码了,因为丢一两个字节完全不会影响大局嘛。如果unicode能用双字节显示99%的文字,作为3字节的编码,有理由支持不了99%的文字么?
总结:由于Unicode要求从第一个字节开始就确定是双字节的第一个字节,而且中间绝对不允许丢字节,所以不是一种健壮的编码,除了用在本机操作系统上(本机一般不会出现缺损),基本不适合应用在类似串行通讯的地方。尤其是如果用在不太稳定的地方,会死得很惨。UTF8则相对健壮。(注这里的Unicode是特指windows里边用的方案,双字节的那种),Windows的轮子看来是橡胶的,虽然使用者众多,却是容易爆胎断辐的轮子。我用Debian,就是用的utf8的locale,基本没什么乱码啊。除了挂载windows的磁盘分区要指定iocharset外。其他我也没见过哪儿会出乱码。倒是windows2000在用一些ANSI程序时,如果语言选错了,就全是乱码了……。
2.对于驱动来说,Linux驱动少,是由于历史原因造成的,不用我多嘴,假设一下:假设以后的3年,所有的硬件厂商全部停止开发windows驱动,全部开发Linux驱动,估计3年后的windows对硬件的支持就像现在的Unix了。看看INTEL的硬件就可以了,连WINTEL联盟的盟友的显卡都只支持到VGA水平(XP安装后是800*600吧),想要达到好的效果还要装intel的驱动,别的就更不用说了。windows之所以能支持大部分的硬件,完全是windows的普及率决定的。说要让完全不同核心的Linux支持windows驱动,完全是天方夜谭。因为在应用层与机器无关的部分,各个操作系统想兼容都费劲的要命,别说与内核相关的了。何况一个是微内核,一个是宏内核。
3.对于自动升级,我没见过微软能自动吧win95升级成98,win98升级成2000,2000升级成XP。就我用过的debian来说,只要运行两个命令:
apt-get update
apt-get upgrade
就能自动升级到最新,甚至老板本的woody能升级到新版本的sarge。
4.至于文件系统,我不做评论,因为无论是Fat32还是NTFS还是EXT3,我都没遇到过突然掉电导致不能启动的情况,甚至我都做了几次掉电试验都没成功让Linux崩溃,所以我无话可说。顺便说一句,如果Fat NTFS那么健壮,完美,还要修复工具做什么?
5.宗罪,好多免费/开源软件都是闭门造轮子,,从不抬头张望,导致造出来的都是些丑陋的烂轮子,玩具轮子。
这个太主观,我都想不出怎么辩驳,说说我的感受:好多商业软件本来是好轮子的,却被微软利用OS变成了烂轮子。微软的软件不一定是好轮子,却用的人多了,就成了好轮子。windows下也不乏装了系统就启动不了的软件吧?所以用轮子请选点好的行不行?烂轮子就让他们淘汰好不好?
6.至于编辑器,vi确实难于上手,但你用过NANO么?这个上手容易的多了(怎么这个名字不好记?别的不知道,反正debian默认编辑器就是这个,输入editer启动的也是nano)。还有,现在windows下还有多少用EDIT的?EDIT是相对完善,但它是移植于dos,dos下除了edit,还有什么?还有,edit,vi类的编辑器起用来做什么用?写文章到网上发表么?如果用于写程序,你就会觉得vi比edit强得多,至少自动能缩进。还有,edit的打开保存对话框绝对费劲,这几天给领导装windows3.1改config.sys跟autoexec.bat,往返于命令行与edit之间,郁闷的我几乎想把比尔掐死。我改linux配置文件用nano,就没这感觉。
7。配置文件方面,XML不XML我不多说,争论它好不好没啥意义。XML是微软推广的,微软没理由不用。至于是否先进,自己的东西自己说了不算的。且不说要使用XML就要使用MS巨大的类库,XML巨大的优势是标准与跨平台交换信息,这些用在配置文件上似乎……,至于效率上,解析XML跟文件操作比,至少现阶段不是一个数量级。(乱说一句,虽然我也看好XML得前途,但是否会被历史证明是微软的一个烂轮子也未可知)
Linux为什么一个程序会有几个配置文件?真的是开发人员不负责任么?首先,大的配置文件会降低效率。在大文件里边搜索关键字慢没人反对吧?效率比较好的还是注册表类的数据库。但就拿微软的注册表来说,一般人想改它太困难,并且不小心会搞得整个系统罢工,灵活性不如配置文件。一般Linux的一个软件包的配置文件都会在etc下的以这个软件包命名的文件夹下,如果在别的地方还有,则一般在每个人的home下,毕竟Linux是为多用户设计的,要考虑每个用户的,仔细想想Linux的配置文件分配是很有道理的。windows现在不也为每个用户建立文件夹,保存不同的注册表配置么?
8.我是个人用户,用windows就用管理员,用Linux就用root,我最喜欢的是随心所欲,权限越大越好。Linux更适合口味的说,至于权限管理,我不懂这个,所以不做评论。
9.至于Linux的大小,这就难说了,我能使用的唯一一个Linux发行版就是Debian别的当然我也用过,不过由于是符合个人口味,删了。Debian是由Linux爱好者维护的,开发者算是最多的。共享程度似乎不会高吧?并且这不是个精简的发行版,它的发行版有十几张光盘,是我所知最多的。但我构建一个基本能适合办公的环境只有600M不到,比windows2000/xp小得多。别的发行版是可能有些占空间。这是由于Linux的软件依赖关系众多不像windows那么容易装软件,所以一般会一古脑装上大部分的软件。不占空间才怪。不过radhat完全安装估计也就是2-3G吧?windows+office+visual studio加起来也不只这个数的。其实软件难装也是因为库共享程度高的。如果把所有的库都静态连接到程序里,Linux程序也可以做到完全绿色。只不过这样太浪费空间。其实说到共享程度差,莫过于windows,你可以搜索下你的硬盘里有多少mfc*.dll,在window xp的系统目录下GDIPlus.dll都可能有好几个版本。这还是微软自己的东西!
至于第三方的库,在windows下根本极少共享,用了这么多年windows,我就很少见过有软件公司会大量引用其它公司的库(除了微软的,Borland的,这是开发工具库,不算)。即使偶尔有引用,也肯定是每个软件会复制一份。因为很少windows软件安装会说,我依赖某个库(微软的除外)。windows软件装多了能10几个G,Linux呢?
我最喜欢的Linux发行版是debian,我之所以喜欢Debian,是它非常自由,灵活。因为它有最强大的软件包管理程序。完全不用考虑安装新程序的问题。所以完全可以从最精简的机本系统做起,只装最喜欢的,用得到的软件。所以系统苗条,快速。我的机本系统+X-window+KDE+koffice以及一些其他软件只有590M,并且是完全没有限制的Linux系统。绝对不是特例。
10.Linux的文档大部分是英文,这确实是一大问题。虽然有好多组织在翻译,但肯定是远远不够的。不过在windows下,我也几乎不看windows的文档(虽然是全中文),现在互联网上什么没有,没中文文档,搜索一下不就全明白了,为什么还要死抱着那些英文文档死啃呢?
其实,写这么多,我也不是在刻意贬低windows,毕竟我也是windows的正版用户(Dell笔记本预装的XP)我还是支持微软的。我觉得我说的东西都是很客观的。其实觉得一个好也不一定非要说另一个不好。要允许有不同的声音嘛。winodows优点也很多,比如3D加速上Linux完全没法比,在GUI上,windows的方式比X的server/client方式也来得高效一些。MS的OLE,.NET也很有特点。

