﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-SONIC's BLOG</title><link>http://www.cnitblog.com/sonicpice/</link><description>SONIC技术布落</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 05:57:34 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 05:57:34 GMT</pubDate><ttl>60</ttl><item><title>杂议Windows和Linux(搜集)</title><link>http://www.cnitblog.com/sonicpice/archive/2006/07/04/13225.html</link><dc:creator>SONIC_PICE</dc:creator><author>SONIC_PICE</author><pubDate>Tue, 04 Jul 2006 03:33:00 GMT</pubDate><guid>http://www.cnitblog.com/sonicpice/archive/2006/07/04/13225.html</guid><wfw:comment>http://www.cnitblog.com/sonicpice/comments/13225.html</wfw:comment><comments>http://www.cnitblog.com/sonicpice/archive/2006/07/04/13225.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/sonicpice/comments/commentRss/13225.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/sonicpice/services/trackbacks/13225.html</trackback:ping><description><![CDATA[
		<tr>
				<td width="100%" valign="top">
						<table cellspacing="0" cellpadding="0" width="100%" align="center" bgcolor="#f1f8fe" border="0">
								<tbody>
										<tr>
												<td>
														<table cellspacing="0" cellpadding="0" width="100%" border="0">
																<tbody>
																		<tr>
																				<td>        最近有关操作系统的讨论无论在法庭上还是在网上都是越来越热烈了。这种热烈气氛的出现自然是与操作系统巨头Microsoft脱不了干系的。法律界为是否该裁定并惩罚Microsoft在操作系统上的非法垄断行为而头疼，软件业界为如何抵御Microsoft君临天下的庞大攻势而失眠，而被 Microsoft日益苛刻的版权限制惹恼了的个人和公司电脑用户也在思考是否还应该对Microsoft从一而终。借着这股热潮本人也来就桌面操作系统 (DesktopOperatingSystem)领域中的Windows和Linux议论几句。网上对Windows和Linux的讨论不少，从这些讨论中我发现有一些人是明确地属于Linux阵营的，所谓属于Linux阵营，我指的是他们对Linux的支持已经近乎本能，就象宗教信徒笃信上帝一样。另一方面，虽然也有人替Windows说话，但似乎没有一个群体可以归类为Windows阵营，也就是说Windows的使用者虽众，但支持烈度却不如 Linux。这也不奇怪，Linux的发展本身就是热忱的Linux支持者们共同努力的结果，所谓“自家的孩子自家爱”。更何况Linux是免费的而 Windows不仅价格昂贵，而且近来还发展到了让用户花了钱也买不到所有权的地步。连所有权都没了，主人翁态度自然也就免谈了。尽管缺乏铁杆的 Windows支持者说明Microsoft在夺得市场的同时没有能够同步地赢得人心，但是从学术的观点讲，却应该看到在这种情况下替Windows说话的人(Microsoft雇员除外)大都是从纯技术角度出发的，他们的观点往往要比带有感情因素的Linux支持者更冷静和公正。<br /><br />　　无论有多少人厌恶Microsoft，任何客观的评论者都必须承认一个基本的事实，那就是纯以技术而言Windows是目前操作系统家族中具有顶尖水平的成员。Microsoft能够在软件界翻云覆雨一手遮天凭借的就是Windows操作系统的实力。市场是无情的，能够装在自己口袋里的银子谁也不会愿意放到Microsoft的保险柜里去。Windows十余年来在市场上的成功，尤其是在四面树敌，人心思变的今天依然雄霸天下而不倒正是其实力的明证。<br /><br />　　下面本文就来对Windows和Linux的若干主要方面进行一些评述和比较。<br /><br />安全性能<br /><br />　　安全性能是Windows常常遭受Linux支持者批评嘲笑之处。除了层出不穷的计算机病毒外，号称Windows95以来最重要的版本的 WindowsXP问世不过数月就屡屡发现安全漏洞，而且导致联邦调查局向用户发布警告，这无疑加深了Windows不如Linux安全的看法。不过客观的讲，在以下两方面Windows有些冤情可诉：<br /><br />　　Windows的每一个漏洞的公开都会引起公众和媒体的广泛注意，这种树大招风的现象大大增加了Windows技术漏洞的可见性(Visibility)。而且Linux作为公开源代码的系统，它的漏洞的发现和修补往往被有意无意地视为是系统开发的一部分，好比是Microsoft在开发Windows期间由内部程序员发现并修补漏洞。由于在很多人眼里Linux永远处于开发状态中，而 Windows有明确的推出日期(不然没法赚钱)，因此在这一点上Windows处于非常不利的位置。<br /><br />　　人们在比较Windows和 Linux的技术漏洞时常常实际上是在对Windows和Linux内核(Kernel)作比较，这是不公平的。Windows除内核外还包括用户界面 (UI)以及大量的应用软件，大多数Windows技术漏洞其实并不是Windows内核的漏洞。以安全漏洞而言，大多数是属于IIS和IE的，对应于 Linux系统中的Apache和Netscape或Konqueror等。较为合理的做法应当是将Windows和LinuxDistribution 或者LinuxDistribution中与Windows功能平行的部分进行比较。<br /><br />　　尽管有以上这些辩护，尽管Microsoft抱怨说人们对攻击Windows远比对攻击Linux感兴趣(因为更容易成名)才使得Windows频频亮起安全红灯，但我认为现阶段Linux在安全性能上确实要优于Windows。起码以病毒数量和危害性而言，Windows用户所担当的风险就要大得多。只是Windows的安全性也不象有些文章渲染的那样糟糕。<br /><br />　　说到了安全性，顺便提一下对于除美国以外的其他国家来说，由于Windows的技术完全被Microsoft所垄断，因此使用Linux还具有国家安全上的优势。这也是近期中国，法国，韩国等国政府在采购操作系统时均作出了有利于Linux的决定的原因之一。<br /><br />稳定性<br /><br />　　稳定性也是Windows常常遭批评的地方，这里必须首先要把Windows的9x系列(包括95/98/Me)和NT系列(包括 NT/2000/XP)区分开来。两者在稳定性上有数量级之别。Windows稳定性差的恶名主要是由9x系列而来，自WindowsXP开始 Microsoft已经终止了这一系列的开发。其次需要分清的是应用软件的稳定性与操作系统的稳定性。如果一个软件的崩溃不影响操作系统和其它软件的运行，那么这笔帐通常就不应该记在操作系统的稳定性上。如果一个软件的崩溃造成整个操作系统的崩溃(即通常所说的“死机”)，那操作系统的稳定性就要受到质疑。<br /><br />　　至于最新的WindowsXP与Linux究竟谁更稳定，说实在目前还缺乏足够的数据和可比性，因为两者所运行的软件很不相同。网上虽有一些测试结果，不过这些测试的客观性往往是值得怀疑的，这个有时间我将另文叙述。一般说来，由于Windows上运行的软件通常比较复杂(比如游戏，大型商业软件等)，从而有较大的几率暴露操作系统的缺陷。从这点上讲，对WindowsXP和Linux的表观稳定性进行比较并不足以说明两者在运行同等复杂的软件时谁更稳定。另一方面和系统安全性的情行相似，人们说到Linux的稳定性时常常只是指内核的稳定性，而Windows的稳定性却涵盖包括用户界面在内的许多别的部分。出现这样的状况也情有可原，因为Windows和它的用户界面是无法分开的，用户界面死了，对用户来说就相当于操作系统死了，而Linux则不同，用户界面死了常常还可以用热键退出，并重新启动用户界面。这些差别的存在使得稳定性对Windows来说是一个更为困难的目标。软件支持<br /><br />　　对软件，尤其是大型商业软件及多媒体软件(包括游戏)的支持一直是Windows的强项，无论是MacOS还是Linux在近期内都很难憾动Windows在这一领域的霸主地位。Windows庞大的应用软件支持是大多数用户即使心怀不满，也不得不继续使用Windows的一个重要原因。Linux所拥有的软件虽然为数也不少，而且有些软件(比如GIMP,StarOffice等)的开发是以Windows下相应的商业软件为竞争对象的，但是在功能上这些软件要真正达到可以替代Windows软件的程度还有相当一段路要走。免费和公开源代码软件是Linux的灵魂，也是很多人喜爱Linux的原因，但是缺乏足够的高质量商业软件的支持已经成为Linux与Windows竞争桌面操作系统市场时的重大障碍。在这方面Linux面临一个两难局面：一个操作系统要吸引商业软件开发者就得要有足够多的用户(尤其是公司用户)。原因很简单，有用户才有利润。但另一方面，一个操作系统要想吸引足够多的用户(尤其是公司用户)，就得要有足够多高质量的软件(包括商业软件)。这是一个典型的先有鸡还是先有蛋的问题。从目前的形势发展来看，打破局面的最可能途径是软件公司愿意做前瞻性的开发，从而产生一个良性的推动。<br /><br />　　这里需要做一点补充说明：对于相对小型的软件的支持 Linux并不逊色，一个完整安装的LinuxDistribution不仅比Windows带有品种远为齐全的软件，而且各常用类型的软件，诸如 email，FTP，IRC，浏览器等均有四五种以上可供选择(有时反而让初用者手足无措)。<br />硬件支持<br /><br />　　五年前Linux的安装对于新手来说还是一件望而生畏的事，这其中很大一个原因就是Linux对硬件支持的欠缺，三年前我在笔记本电脑上安装Redhat6.0还被迫到网上自行搜寻config文件。但近几年来Linux在这方面取得了长足的进展，今天，各主要Distribution对硬件的支持度正在迅速接近甚至超过 Windows的水平。尽管硬件生产商对Windows驱动文件(driver)的提供仍比对Linux的要普遍，但高手如云的Linux群体已经做到了能几乎同步地提供所有最新硬件驱动文件的程度。另一方面，WindowsXP在硬件支持的普遍性上却出现了较大的倒退(Microsoft或许把这叫做更新)。此消彼长，Linux在硬件支持上的欠缺已经成为历史。<br /><br />　　虽然没有明说，但上面谈论的硬件都是针对x86机器的，脱离了这个框架，Linux在硬件的支持上的广泛程度是包括Windows在内的任何其它操作系统都无法比拟的。<br /><br />　　说到硬件支持，还有一个需要考虑的方面就是系统配置。每一代的Windows都对系统配置提出了新的要求，WindowsXP苛刻的系统配置要求更是使得几乎所有两三年以上机龄的机器都必须经过相当程度的硬件改良才能安装。而Linux虽然也同样在逐步提高对硬件配置的要求，但由于其优越的模块结构，使得用户有极大的自由度根据自己机器的配置调整自己所需安装的模块，从而突破对硬件配置的要求。<br /><br />规范性<br /><br />　　这里所说的操作系统的规范性有两层含义，一层含义是指操作系统对软件界的各项技术规范的遵循程度。在这方面Linux基本上遵循了所有适用的规范，这和Linux的开发模式不无关系。除内核外Linux没有一个中心仲裁者，因此开发人员大都以软件界已有的技术规范为准则进行系统开发。Windows在这方面的名声则毁誉参半，一方面Microsoft本身是软件界许多规范的制定和倡导者，但另一方面，Microsoft又常常按自己的喜好“修改”规范。由于 Windows在桌面操作系统领域拥有压倒多数的用户群体，软件界在相当程度上被迫适应Windows的要求，因而使得Windows的许多非规范的东西成为事实上的规范。<br /><br />　　规范性的另一层含义是指操作系统本身的规范性，一个简单的衡量标准就是该操作系统的两个用户之间有多少共同语言。由于Windows是由单一公司开发的，因此在这方面不是由松散联系的开发者为主力的Linux可以比拟的。以用户界面而论，Windows自 Windows95以来保持了相当的稳定性，用过其中任何一个版本的用户基本上可以不用额外学习就直接使用另一个版本的Windows界面。而Linux 的用户界面不下十种之多，最流行的也有KDE和Gnome两种，明显缺乏规范性。Linux在自身规范性上的欠缺还表现在各主要的 Distribution使用不同的目录结构，用不同的格式传播软件，用不同的方式安装软件，等等。凡此种种不仅给新手带来极大的困惑，就是对有经验的用户甚至系统开发人员都是极大的不便。<br /><br />　　所幸的是，Linux的不规范性已经引起了越来越多人的重视，一个如同W3C(W3C是制定互联网规范的组织)那样的组织TheFreeStandardsGroup已经成立，它的使命就是制定Linux和其它开放源代码系统的规范。随着这些规范的逐步推广，Linux将会缩小在自身规范性方面与Windows的差距。<br /><br />　　这里也需要补充一点：Linux在用户界面方面的不规范性有时候也不失为一个优点。常常听人抱怨说自己花大价钱更新机器的努力很大一部分被操作系统本身所消耗掉了，这其中一个消耗资源的大户就是用户界面。 Linux用户在这种情况下就可以使用消耗系统资源较少的用户界面。<br /><br />　　总体上讲，在对外部规范的遵循性上，Linux要优于Windows，而在自身的规范性上，Windows要显著优于Linux，而且在近期内这种优势不会丧失。<br />源代码<br /><br />　　Windows的源代码是保密的，而Linux的源代码是开放的。从字面上讲这当然是意味着原则上任何人都可以改进Linux。但是需要指出的是，原则上可以做的事情并非实际上就一定能够或者应当做。Linux源代码的高度的开放性主要是针对系统开发人员的，源代码的开放性使得Linux系统中的缺陷能够很快地被来自世界各地的高手所发现和弥补，这是十余年来Linux发展的关键。但对于普通用户来说，修改自己赖以工作的Linux机器的源代码却是非常不明智的行为。Linux内核多年来经过无数高手的锤炼，一个普通用户能够改进它的几率是微乎其微的(破坏它的可能性倒是很大的)。因此在肯定源代码开放性对操作系统本身乃至整个软件业发展的深远意义的同时也不应该夸大它对普通用户的直接帮助，源代码的开放性并不增加一个普通用户对系统的掌控程度。<br /><br />　　Linux源代码的开发性使得各大学的操作系统课程和教材几乎都是以Linux或其他类似的系统为蓝本，因此使得受过正规计算机专业教育的几乎所有学生以及几乎所有对操作系统感兴趣的人都对Linux有相当程度的了解和喜爱。这对于Linux未来的发展有着十分正面的影响。<br /><br />应用程序界面(API)<br /><br />　　一个操作系统的API(ApplicationProgramInterface)是操作系统提供的与应用软件的接口，对于软件开发人员来说十分重要。一般认为Linux的API要比Windows优美。不过由于Windows下有诸如VisualStudio这样的直接支持WindowsAPI的大型工具软件，从而大大降低了Windows编程对于拥有并熟悉这些工具的人员的困难程度。<br /><br />系统可调节性<br /><br />　　Linux具有比Windows大得多的可调节性。许多早期的Windows骨灰级用户在系统可调节性上有一种怀旧感，觉得在DOS和早期Windows时代他们曾经是机器的主人，随着Windows的演化，后来他们只拥有Windows，不再直接拥有机器了(现在他们连Windows也不拥有了)。而Linux却始终如一地保持着系统的高度可调节性。<br /><br />　　Linux的源代码的开放性也可以被视为终极意义上的可调节性，但是，前面说了，对于普通用户来说，这种可调节性实际上是几乎不存在的。<br /><br />　　另一方面，在各自可调节的范围内，Windows要比Linux易于调节(这在很大程度上得益于Windows界面的规范性)。在早期，Linux的调节往往需要用户直接修改参数文件，即使对于有一定经验的用户，这也是一件令人头疼的事。近年来Linux在这方面做了很大的改进，开发了许多工具软件，不过和Linux下的许多其它类别的软件类似，Linux的工具软件也呈现一种发散性，即有不止一种软件可以做同一件事。这使得用户在转换机器和 LinuxDistribution时往往因为不同环境下工具软件的不同而需要学习新的工具或重新安装旧的工具。<br /><br />使用方便性<br /><br />　　使用的方便性是桌面操作系统竞争中最重要的决胜因素之一。这里所说的使用的方便性是针对普通用户的，这一点常常被Linux的支持者所忽视。现阶段在桌面操作系统的用户群体中，Linux用户的平均计算机水平要大大高于Windows用户，这种差异使得Linux群体常常低估了一个缺乏计算机系统知识的普通用户适应Linux的难度。“Windows是傻瓜也能用的”非但不应该被用来嘲笑Windows，反而是Linux在竞争桌面操作系统市场中必须借鉴的经验。计算机二十年来的发展早已超越了专业的界限而成为几乎所有现代人都可能会用到的工具。使用方便性是任何工具所应该追求的品质之一，计算机及其操作系统当然也不例外。试问这世上聪明人的比例能有多少？偏偏把聪明用在计算机上的聪明人比例又能有多少？今天Linux用户群体的平均计算机水平高的一个不可忽视的原因是因为只有水平较高的人才能得心应手地使用Linux，而这一事实，很不幸的却是Linux与Windows竞争时的一大弱点。版权限制和费用<br /><br />　　这方面没什么可说的，法庭上的胜负不论，无论对个人还是公司用户来说Windows利用其垄断地位迫使用户接受日益苛刻的版权要求已是不争的事实，可以盖棺定论。使用WindowsXP的用户相信对此尤有切身体会。每张WindowsXP光盘只能安装在一台电脑上，不仅如此，重装操作系统或更换一定数量的硬件都会导致Windows反盗版机制的干预，使得用户必须向Microsoft索要新的序列号(可能还免不了要解释一下自己何以又要给Microsoft“添麻烦”)。花钱买了的软件竟然还要间或地向Microsoft请示汇报，用户心中的不平衡是不言而喻的。至于价格， WindowsXPHome和Pro的价格分别为$199和$299。相比较之下Linux不仅可以免费下载，而且可以安装在任意数目的机器上。对用户具有的亲和力是不言而喻。<br /><br />　　可惜的是，对于个人用户来说Linux在价格上的优势在很大程度上被市场上大部分品牌机厂家不提供预装 Linux的机器(服务器除外)这一事实所抵销了。由于品牌机厂家在市场上占有很大的份额，因此大部分用户不论用不用Windows，都一样付了 Windows的钱。既然钱也付了，操作系统也有了，绝大多数人就不会再去费心做调整。顺便说一下，这也是目前Linux用户群体的计算机水平普遍较高的另一个重要原因，因为对计算机或操作系统感兴趣的人有较大的可能性在并不缺乏操作系统的情况下还去安装一个新的操作系统。<br /><br />　　不过对公司用户来说，由于Linux不对用户数量设置限制，与Windows的VolumnLicence相比其费用方面的优势是十分明显的。<br /><br />　　说到费用，需要提到另外一个方面就是许多在Windows下要付费的软件在Linux下有功能相近，相同或更好的免费软件。虽然前面说到Windows 在对软件的总体支持上优于Linux，但是Windows占优势的那部分软件对大多数普通个人用户来说并不是不可缺少的(也许游戏除外)。不过Linux 在这方面的优势也在很大程度上受到一个因素的削弱：那就是许多Linux下优秀的免费软件也有Windows版本。<br />术支持<br /><br />　　这里所说的技术支持是一个比较含糊的概念，既包括由公司提供的技术服务，也包括用户可以自行找寻的信息。在公司提供的技术服务方面，尽管不时可以听到有人抱怨和Microsoft技术服务人员打交道时的不愉快经历，但这显然是和Windows的用户数量有关的。总体上讲Microsoft对用户(尤其是公司用户)提供的技术服务要优于各Linux公司(当然这种服务不是免费的)。在用户可以自行找寻的信息方面，Microsoft有一个规模庞大的 KnowledgeBase，Linux则有LinuxDocumentationProject，而且Linux在互联网上的BBS，Forum和 Newsgroup等网站中常常可以看到顶尖的Linux开发者的身影，与Windows不同的是，Linux的开放性使得许多Linux高手对 Linux的发展具有一种使命感，他们光顾这些网站就是为了了解用户的反映，发现bug并为Linux的发展积累经验。我这么说倒不是暗示 Microsoft的人就不会以同样目的光顾Windows网站，不过就我个人的体会来说这方面Linux群体对用户起到的帮助作用要好于Windows 群体的相应帮助。<br /><br />　　需要说明的是，对公司用户来说，这后一种帮助在公司决策层面上起不到太大的作用。有一句半开玩笑的话很通俗地概括了许多公司(尤其是大公司)在选用软件(包括操作系统)时的态度，那就是“只选择自己可以将之告上法庭的供应商提供的软件”。Linux群体以及许多 Linux公司无法在足够长的服务期限内提供规范的，有法律保障的服务是Linux在竞争桌面操作系统的半壁江山-公司用户-时的一大障碍。<br /><br />结语<br /><br />　　写到这里应该收笔了。通常这类文章都要预测一下Windows和Linux在桌面操作系统市场上的前景。前不久，RedhatLinux公司的总裁发表令人意外的评论说Linux无法在桌面操作系统市场上击败Windows。当然，Linux的热心支持者们并不认同这种看法。两方面的意见在网上争论得非常激烈。讲到预测，插上几句离题的话。小时候听说有外国专家预测在中国本土不会找到很多石油，也有外国专家预测唐山在多少年内将难以重建。这些预测都破产了。那时我就想何以外国专家都如此愚蠢，以至于我们做成的每件事情都可以拉上一两个外国专家做反衬？后来看的预测多了渐渐明白了道理：不是外国专家太愚蠢，而是有太多的“专家”了，什么可能性都让专家“预测”到了。我不是专家，不想也不敢贸然在这里作什么预测。Linux在桌面操作系统市场的前景取决于许多因素：比如各主要商业软件公司会在何时，以何种方式参与Linux软件的开发？比如有多少计算机厂家会提供预装Linux的机器？比如全球性的经济低迷会在多大程度上加速公司和个人为节省开支而使用Linux，比如Microsoft是否会在法庭上败诉？如果败诉受到的惩罚方案如何？等等。除此之外，还需要看到用户群体的行为习惯具有极大的惯性。无论Linux如何改进，仍然有很多人说Linux不方便。为什么？除了Linux本身的部分原因外还因为 Windows巨大的用户群体已经形成，Windows的一切已经成为了事实上的标准，任何对Windows的偏离都必然要改变用户群体的习惯，这是所有 Windows的竞争者不得不背负的沉重包袱。<br /><br />　　细致而尽可能准确地分析所有这些因素不是一篇短短(尽管现在已经不太短了)的文章所能胜任的。幸好计算机技术这二十年的发展始终没有让人们久等过，看到这场操作系统大战的阶段性结果相信也不会对我们的耐心形成太大的挑战。<br /><br />　　本文的一个假设的情况是Linux和Windows争夺桌面操作系统用户，离开了这个前提，离开了这个评论的角度，关于两个操作系统的比较当然就会有不同的结果。至于Linux是否应该和Windows来争夺污浊的桌面操作系统市场，这是一个不同的话题。有朋友提到Linux过分地向桌面发展会有损其稳定性。Linuxkernel2.4在推出后很长一段时间无法达到令人满意的稳定性使得有人一度在kernel-mailing-list上发出 “Linusdoesnotscale”这样的感慨和怀疑。不过我认为，kernel2.4的问题不是因为Linux向桌面发展造成的， kernel2.4的发展最主要的受益者是server而不是桌面用户。我个人的想法是Linux由于其模块结构，是有希望在reliable, stable,scalable的内核和一个能被普通用户接受的GUI两方面同时取得成功的(至少在技术上是可以的，在商业社会模式下是否事实上可以当然谁也没法保证，许多GPL软件已经开始偏离GPL了，这在多大程度上代表一种趋势还有待观察)。</td>
																		</tr>
																</tbody>
														</table>
												</td>
										</tr>
								</tbody>
						</table>
				</td>
		</tr>
		<tr>
				<td width="100%" height="1" bgcolor="#cccccc">
				</td>
		</tr>
<img src ="http://www.cnitblog.com/sonicpice/aggbug/13225.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/sonicpice/" target="_blank">SONIC_PICE</a> 2006-07-04 11:33 <a href="http://www.cnitblog.com/sonicpice/archive/2006/07/04/13225.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mark Nielsen----选择GPL还是BSD?</title><link>http://www.cnitblog.com/sonicpice/archive/2006/06/11/12038.html</link><dc:creator>SONIC_PICE</dc:creator><author>SONIC_PICE</author><pubDate>Sun, 11 Jun 2006 14:56:00 GMT</pubDate><guid>http://www.cnitblog.com/sonicpice/archive/2006/06/11/12038.html</guid><wfw:comment>http://www.cnitblog.com/sonicpice/comments/12038.html</wfw:comment><comments>http://www.cnitblog.com/sonicpice/archive/2006/06/11/12038.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/sonicpice/comments/commentRss/12038.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/sonicpice/services/trackbacks/12038.html</trackback:ping><description><![CDATA[简介<br /><br />什么是GPL软件授权许可证？<br />GNU通用公共许可证(GPL,The GNU General Public License)的全文非常烦琐冗长，其主要宗旨是在程序员社区内保证和促进可以连续自由和开放地保证软件源代码的共享。它的出现混淆了"free"和 "freedom"的含义，因为其实际上限制了那些不希望开放共享那些从GPL授权的软件进行二次开发的程序员的自由。Rick Holbert建议我们使用解放软件(liberated software)这个名词来替代自由软件(free software)这个名词。但这仍然使我感到迷惑，因为GNU软件并不是真正的解放软件，其实你并不能任意处理GPL软件的源代码，但是"解放"这个词仍然要比"自由"这个词来的准确一些。GPL许可证强迫用户将对开放共享的GPL软件的修改后的源代码继续公开。因此，GPL保证了那些软件使用者自由的连续性，而不是那些修改软件的程序员。如果仔细分析可以发现，GPL有一些令人混淆的地方，一方面它保证了以后软件"接受者"的自由，而剥夺了软件开发者任意处置自己编写的代码的权利。总的来说，对于那些希望将自己的软件贡献出来的人来GPL是令人满意的，因为在GPL授权许可下，软件在整个开发中都保证了源码的开放和所有的人都可以使用和添加修改软件。<br />但是从商业角度来说，当然是希望使用那些可以可以关闭源码共享的软件，因为你往往是希望根据其开发一个具有潜在价值的产品。如果你关闭了具有价值的软件的源码，并且对其进行改进和二次开发，使其具有更高的价值，这样你才能向那些没有能力自行开发的软件使用者使收费，那么你就应该考虑使用具有BSD授权许可的软件作为起点。<br /><br />考虑另外一种情况下，如果你更着重于服务而不是软件产品，那么GPL软件对你来说就没有什么缺陷了。例如，IBM在其各种服务器中使用Linux。如果你是在GPL软件平台之上开发一个商业软件，你也不必担心GPL对你的影响。另外，任何从头开发的软件或者是使用BSD软件作为基础来开发的软件，你都可以封闭自己的源代码。仍然有很多方法可以利用GPL软件而不威胁你的商务活动。一般来说客户并不真正关心事情是如何完成的，他们仅仅关心事情完成的结果。一个最好的例子是在最流行的桌面操作系统之上运行的各种软件，使用这些糟糕的软件的用户中99%都不知道，也不关心他们使用的软件是如何的垃圾和糟糕。只要看看用户是如何乐于下载和安装那些号称是最可靠和稳定的保证向后兼容的操作系统的补丁就可以理解这一点了。为什么一开始这些操作系统不能保证稳定和可靠的呢？并且如果最稳定和可靠的当前版本仍然时常崩溃并且有巨多的bug，那么以前的版本是不是垃圾呢？我一直在对人们强调那些比垃圾更加稳定和可靠的东西，实际上仍然是垃圾，只不过是稍稍更加稳定和可靠一些罢了。这并没有太多的意义。在商业上，重要的不是被卖的产品的可靠性和稳定性，如果你能满足使用者的最低要求，并且你能以便宜的价格占有主要市场，或者你能实现垄断，并且对用户进行洗脑宣传，大量进行广告金钱宣传，那么你的产品就是最"棒"的。如果你由于商业的原因害怕GPL许可证，那么你可能并没有足够地深入和仔细地考虑你的商业模型。在US最流行的Linux发布并不是最好的，其缺乏很多应该具有的特色，但是它仍然是最流行的，因为它已经占有了市场，并且每次版本升级其产品都有改进，这样使得它们的客户感的很开心，即使用户并不知道软件实际上应该有多好。<br /><br />什么是BSD授权许可证？<br /><br />BSD授权许可证(FreeBSD Copyright Information)具有多种授权许可证。总的来说你可以对软件任意处理，只要你在软件中注明其是来自于那个项目的就可以了。也就是说你具有更大的自由度来处置软件。如果你对软件进行了修改，你可以限制其他使用者得到你修改的软件的自由。<br /><br />BSD授权许可证没有实现"通透性"自由，也就是其不保证软件源代码开放的连续性。这样如果你希望采用别人开发的BSD软件，进行一些修改，然后作为产品卖，或者仅仅保密自己的做的一些除了软件开发以外的工作，那么你就可以从中得利。<br /><br />当一个非程序员仅仅理解一个程序的功能，但是不了解程序是如何做的时，即使你没有在开发软件中做任何工作那你就可以通过高超的市场技巧将软件卖给该用户。比如拿最流行的桌面操作系统作为例子，你就能很好的理解一个没有很好的程序技巧的软件公司只要具有高超的市场营销策略同样可以将垃圾卖给客户。如果你不具有很强大的编程能力，但是具有很强的市场能力和能将其他开发者的软件包括到自己的系统，而同时不将自己的修改开放出来将是非常强大的能力。从赚钱为目的的商务角度看来，如果你使用了BSD授权许可证的软件，那么你就可以任意进行。你可以更好地控制你的OS系统，并且防止其他人拷贝你的商业产品。<br /><br />就我看来，只要是开放源码的东西，就都不是垃圾，因为只要是开放的其就可能被修改，发生变化；而一旦变成封闭源码的东西，它马上就成为了垃圾，因为我不知道它是如何实现的。所有BSD授权声明的开放源码的软件都是很棒的东西。<br /><br />哪种更适合你？<br /><br />有一个信念你是必须理解的：授权许可之间并没有好坏之分，除非你从你希望达到的目的的角度去看待问题。一个授权许可证是人们行为的基础，就象法规一样。从商务角度来说，美国有一个非常棒的政府，因为这里是金钱统治一切；从人性角度看来，其他政府可能更具有理想主义一些。但是如果他们实现了他们人民希望达到的目标，它们之间是没有好坏之分的。如果授权许可证保证了你希望的目标，那么它对你来说就是好的，但是对于其他人来说可能并不是如此，但是你可能往往不会关心别人对该授权许可证的看法。因此，只有白痴才会认为一种授权许可证比另外一种授权许可更好。一旦我们知道了你创造程序的目标，那么我们就可以判断你的软件更适合使用哪种授权许可。<br /><br />无论什么时候我和BSD人们交谈，他们往往也承认GPL是一个不错的东西。怎么会这样呢？正如前面讨论的那样，授权许可是为人们来使用的。没有人强迫你对你的软件使用GPL或者是BSD授权许可。因此如果你选择使用GPL作为自己创造的软件的授权许可，那么不要在意人们对源代码具有完全处理的权限。既然你选择了GPL，那么你就不应该在意，因为你没有希望从其他封闭授权的软件获利，因此你就不希望其他人通过你的软件获利。GPL划定了游戏范围以保证每个人能平等地从同一个软件获利的权利。就象好的市场驱动竞争以促进商业发展一样，大家都有平等的权利但只有最优秀的人可以获胜一样。同样一旦你选择了将自己的软件平等地给所有人共享。如果有人不想象别人那样共享代码，他可以选择投资几百万来开发自己的软件，没有人会阻止他这么做。<br /><br />可以对软件定义若干种授权许可，例如Perl同时具有GPL授权许可和艺术性授权许可(Artistic Licenses)。如果你希望你的软件和其他自由软件一起配合使用，那么你必须对其不仅仅定义GPL授权许可。但是GPL一般往往并不能和其他免费软件授权许可很好的配合使用。<br /><br />自由软件社区对于GPL的一种批评是：它偷窃了自由(freedom)这个单词。问题是这样的：一个独裁者有自由成为一个独裁者吗？答案：是可以的。自由和社区没有任何关系。自由意味着你可以在任何时候随意做你想做的任何事情。人们有自由选择不自由(have the freedom not to be free)。困扰我的一件事情是：虽然我从政治角度理解为什么他们要这么做，但是FSF和GPL这些人则倾向于重新按照他们希望的目的来定义自由的含义，但其实他们只是看到了很狭义的自由的含义，而不是完全的自由。他们感兴趣的是在社区内部共享软件代码，而不是个人对自己的软件的任意处置的自由，例如将 GPL化的一段代码变成封闭代码等等。因此GPL本身从自由真正的含义上并没有真正地促进自由，而是限制了自由，仅仅保证了社区内共享代码的自由。我不喜欢这些家伙，他们重新定义了自由的含义，而且如果你按照他们的意思定义自由他们往往就懒得答理你。但是我认为从政策意义上来说，他们是很好的，因为他强迫人们考虑自由，大多数人没有时间去考虑自由的真正含义。<br /><br />那么对于BSD，它也是不坏的选择。它对于那些希望编写封闭代码程序的程序员是很有意义的。我理解为什么BSD授权许可这么有吸引力和它对于一些人为什么如此重要。但是也使我对从政治角度来看没有意义的BSD有了更深入的理解：<br /><br />如果有人以BSD授权许可发布软件，那么别人就可以利用该软件创建一个封闭源码版本，他不必向任何人公开自己做了哪些修改。因此一个项目组可能花费数年来开发一个很棒的软件，而一个人或一个公司则可能"偷窃"该软件，进行一些简单的二次开发并形成一个封闭源码的产品来盈利，却和原始开发者则可能没有从中得到任何利益。我就是不能理解为什么这么多人这么辛苦的工作来努力使其他人成为百万富翁。GPL则组织这种事情的发生，它保证了软件开放性的连续和所有使用者具有平等的权利。<br /><br />BSD授权许可危险性的一个明显的例子就是：它如何使一个病毒扩散到整个世界。只要看看Kerberos的情况就可以了解情况是如何糟糕的。对于我自己来说，当一个邪恶的公司糟蹋了一个软件，那么就没有任何办法强迫它们和社会一起合作来改善情况，我个人是抵制所有这些软件的。我不能承受担心相互之间不兼容的版本到处出现。Kerberos就是这样被糟蹋掉的，我永远不会再使用它。为什么说它被糟蹋了呢？被糟蹋的版本到处都是，而且影响很大之间又不相互兼容。我不会花时间去使用这样的软件：知道有一天它会变成封闭源码的，但是而且会和我在使用的版本不兼容。对于我来说不兼容性是非常糟糕的和不能接受的，如果我能避免使用这样的软件我一定不会使用它。<br /><br />既然GPL和BSD各有优缺点，那么哪个更适合你呢？其中一个，没有一个或者是都适合你。重要的是要理解授权许可的含义，如果你不重视结果，那么很好。虽然我不喜欢BSD授权声明适用于我的软件，但是如果你不介意别人利用你的软件获利那么BSD就是你的最好的选择。<br /><br />哪种更适合？<br /><br />哪种更好一些？答案是两个一样好。然而我选择了GPL，为什么呢？我对于所有的自由软件都是非常的感激，我没有真正开发任何能被用来售卖的软件(我通常使用Python来开发web脚本)。我为世界创造的任何东西我都希望在我之后有人能利用它和改进它，所以我选择了GPL。但是我从来没有对我的软件使用 BSD授权许可，因为我不希望那些不劳而获者利用我的软件来盈利，而隐藏对软件的修改。但是BSD授权许可对我来说好的一面是它是未来的一种选择，我不是用它但是我很高兴它是一种选择。<br /><br />结论<br /><br />Anonymous Coward有很好的结论：“我可以认真写一个很长的短文作为回应，但是大多数的读者可能希望有一个简单的概要：GPL授权许可有益于软件的解放，BSD 则有益于人的解放。对于GPL，确保了软件的发展拥有比软件开发者更多的自由；而对于BSD，保了软件开发者拥有比软件的发展更多的自由。“<br />我个人这样认为：<br /><br />* GPL提倡和促进最终用户的自由<br />* BSD提倡程序开发者的自由。<br /><br />总的来说，任何认为一种授权许可比另外一种好的人都是思想简单的人，他们不能理解他们仅仅从他们自己的角度考虑问题，而不是从别人的角度考虑问题。我希望强调的是这些人应该被消灭，这样他们的DNA就不会传播，不会创造那种用另外的标准对待别人和做出判断的政客、将军和法官。<br /><br />我这里严重的冒犯了那些在关于软件授权问题上为别人做决定的人，可能要稍微冒犯了那些让别人为自己做决定的人。我不介意有关授权许可是如何影响世界的理论，但是不要宣称一种授权比另外一种好的，因为这是一种基于特定价值的选择而已，而不是一种事实。我接受这样的事实：你所考虑的对你来说随最合适的授权许可，但是不一定是其他人的最佳选择。<br /><br />参考资料<br /><br />感谢Rick Holbert的建议，使得我得以提高我的文章，使我明白被解放一词比自由一词更适合于讨论GPL。<br />Slashdot有很多很好的文章给予我了很多的启迪。<br /><br />作者Mark Nielsen一个独立咨询者，给诸如GNUJobs.com等写评论文章，编写自由软件和在eastmont.net作为一个自愿者工作。<br /><br /><br /><img src ="http://www.cnitblog.com/sonicpice/aggbug/12038.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/sonicpice/" target="_blank">SONIC_PICE</a> 2006-06-11 22:56 <a href="http://www.cnitblog.com/sonicpice/archive/2006/06/11/12038.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VI的常见使用技巧</title><link>http://www.cnitblog.com/sonicpice/archive/2006/06/03/11530.html</link><dc:creator>SONIC_PICE</dc:creator><author>SONIC_PICE</author><pubDate>Sat, 03 Jun 2006 13:38:00 GMT</pubDate><guid>http://www.cnitblog.com/sonicpice/archive/2006/06/03/11530.html</guid><wfw:comment>http://www.cnitblog.com/sonicpice/comments/11530.html</wfw:comment><comments>http://www.cnitblog.com/sonicpice/archive/2006/06/03/11530.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/sonicpice/comments/commentRss/11530.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/sonicpice/services/trackbacks/11530.html</trackback:ping><description><![CDATA[:简介：  <br /><br />      Vi命令可以说是Unix/Linux世界里最常用的编辑文件的命令了，很多人不喜欢VI因为它 <br />      的众多的命令集，但是我们只需要掌握基本的命令然后灵活地加以运用，相信你会象我一 <br />      样喜欢它的。  <br />      本文旨在更有条理有归纳性地介绍VI的一些最常用命令和一些高级的应用。  <br /><br />      二:基本命令介绍：  <br /><br />      1) 光标命令  <br />      k,j,h,l---上下左右光标移动命令，虽然你可以在Linux中使用键盘右边的四个光标键， <br />      但是记住这四个命令还有非常有用的，也就是右手在键盘上放置的位置部分  <br />      nG ----n为行数，该命令立即使光标跳到指定行。  <br />      Ctrl+G-----光标所在位置的行数和列数报告  <br />      w,b------使光标向前或向后跳过一个单词  <br /><br />      2) 编辑命令  <br />      i,a,r -------在光标的前,后,上方插入字符命令(i=insert,a=append,r=replace)  <br />      cw,dw------ 改变(置换)/删除光标所在处的单词的命令 (c=change,d=delete)  <br />      x,d$,dd -----删除一个字符，光标所在处到行尾的所有字符，和整行的命令  <br /><br />      3) 查找命令  <br />      /string, ?string-----从光标所在处向后/向前查找相应的字符串的命令  <br /><br />      4)拷贝复制命令  <br />      yy,p -----拷贝一行到剪贴板/取出剪贴板中内容的命令  <br /><br />      三:常见问题及应用技巧  <br /><br />      1) 在一个新文件中读/etc/passwd中的内容，取出用户名部分  <br />      vi file  <br />      :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd  <br />      :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分  <br />      :3r /etc/passwd 这是在指定的行号后面读入文件内容  <br /><br />      另外一种方法删掉文件中所有的空行及以#开始的注释行  <br />      #cat squid.conf.default | grep -v \'^$\' | grep -v \'^#\'  <br /><br /><br />      2) 在打开一个文件编辑后才知道登录的用户对该文件没有写权，不能存盘  <br />      vi file  <br />      :w /tmp/1 既然没法存盘，不想放弃所做的所有修改，先临时存到/tmp/1  <br />      :20,59w /tmp/1 或者仅仅把第20到59行之间的内容存盘成文件/tmp/1  <br /><br />      3) 用VI编辑一个文件，但需要删除大段大段的内容  <br />      vi file  <br />      Ctrl+G 把光标移到需要删除的行的处按ctrl+G显示行号，再到结尾处再按Ctrl+G.  <br />      :23,1045d 假定两次行号为23和1045，则把这几间的内容全删除  <br /><br />      也可以在开始和结束两行中用ma,mb命令标记后用:\'a,\'bd删除.  <br /><br />      4) 在整个文件或某几行中在行首或行尾加一些字符串  <br />      vi file  <br />      :3,$s/^/some string / 在文件的第一行至最后一行的行首前插入some string  <br />      :%s/$/ some string/g 在整个文件每一行的行尾添加 some string  <br /><br />      :%s/string1/string2/g 在整个文件中替换string1成string2  <br />      :3,7s/string1/string2/ 仅替换文件中的第三到七行中的string1成string2  <br /><br /><br />      Note: s为substitute,%表示所有行,g表示global  <br /><br />      5) 同时编辑两个文件,在两个文件中拷贝剪贴文本  <br />      vi file1 file2  <br />      yy 同时打开两个文件,在文件1的光标所在处拷贝所在行  <br />      :n 切换到文件2 (n=next)  <br />      p 在文件2的光标所在处粘贴所拷贝的行  <br />      :N 切换回文件1  <br /><br /><br />      6) 替换文件中的路径  <br /><br />      :%s#/usr/bin#/bin#g 把文件中所有路径/usr/bin换成/bin  <br />      或者用  <br />      :%s/\\/usr\\/bin/\\/bin/g 在\'/\'前用\\符号指出\'/\'是真的单个字符\'/\'  <img src ="http://www.cnitblog.com/sonicpice/aggbug/11530.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/sonicpice/" target="_blank">SONIC_PICE</a> 2006-06-03 21:38 <a href="http://www.cnitblog.com/sonicpice/archive/2006/06/03/11530.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(搜集)Linux最常用的60个命令</title><link>http://www.cnitblog.com/sonicpice/archive/2006/06/02/11499.html</link><dc:creator>SONIC_PICE</dc:creator><author>SONIC_PICE</author><pubDate>Fri, 02 Jun 2006 15:40:00 GMT</pubDate><guid>http://www.cnitblog.com/sonicpice/archive/2006/06/02/11499.html</guid><wfw:comment>http://www.cnitblog.com/sonicpice/comments/11499.html</wfw:comment><comments>http://www.cnitblog.com/sonicpice/archive/2006/06/02/11499.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/sonicpice/comments/commentRss/11499.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/sonicpice/services/trackbacks/11499.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 23:16:30 2006年6月2日Linux提供了大量的命令，利用它可以有效地完成大量的工作，如磁盘操作、文件存取、目 录操作、进程管理、文件权限设定等。所以，在Linux系统上工作离不开使用系统提供的命 令。要想真正理解Linux系统，就必须从Linux命令学起，通过基础的命令学习可以进一步理 解Linux系统。 不同Linux发行版的命令数量不一样，但Linux发行版本最少的命令也有200多...&nbsp;&nbsp;<a href='http://www.cnitblog.com/sonicpice/archive/2006/06/02/11499.html'>阅读全文</a><img src ="http://www.cnitblog.com/sonicpice/aggbug/11499.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/sonicpice/" target="_blank">SONIC_PICE</a> 2006-06-02 23:40 <a href="http://www.cnitblog.com/sonicpice/archive/2006/06/02/11499.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>