《清华梦的粉碎</span>--</span>写给清华大学的退学申请》</span></font></strong>< xmlnamespace prefix ="o" > </span></font></font></p>

           我已经半年没有使用</span> Windows</span> 的方式工作了。</span>Linux</span> 高效的完成了我所有的工作。</span>GNU/Linux</span> 不是每个人都想用的。如果你只需要处理一般的事务,打游戏,那么你不需要了解下面这些了。</span></font></font></p>

           我不是一个狂热的自由软件份子,虽然我很喜欢自由软件。这篇文章也不是用来推行自由软件运动的,虽然我觉得自由软件运动是非常好的。</span></font></font></p>

           这篇文章也不是用来比较</span> Linux</span> 和</span> Windows</span> 内核效率,文件系统,网络服务的。我现在是作为一个用户而不是一个开发者来说话的,我们的讨论是基于操作,应用层面的。是为了告诉大学里还不了解,或者不理解</span> UNIX</span> 的科学工作者和大学生,</span>UNIX</span> 比</span> Windows</span> 更适合用于科学研究工作,请大家理解</span> UNIX</span> 的工作方式,不要用</span> Windows</span> 的标准来要求</span> Linux</span>,而要用一个科学工作者的标准来要求自己,用</span>UNIX</span> 的思想来武装自己。</span></font></font></p>

           我显然是反对在大学,特别是理工科专业推广</span> Windows</span> 的。我也反对在对</span>"</span>娃娃</span>"</span>们的计算机启蒙教育中使用</span> Windows</span>。因为</span> Windows</span> 不论从技术上,经济上,思想风格上都是与我们培养高科技人才的目标格格不入的。</span>Windows</span> 的流行属于历史遗留问题,爷爷一级的人当然已经不可救药,但是我们不应该让下一代继续走上歧途。</span></font></font></p>

UNIX</span> 不是计算机专家的专利</span></font></font></p>

当我建议一些非计算机专业的人用</span> Linux</span> 的时候,很多人说:</span>"UNIX</span> 是计算机系的人用的,我们不能理解。</span>" "UNIX</span> 是男孩用的,我们女孩不用。</span>"</span></font></font></p>

         但是其实世界上的大多数科学家和工程师几乎用的都是</span> UNIX</span> 作为他们的电脑工具。就因为它简单,可靠,稳定,强大,有趣。甚至很多时候</span> UNIX</span> 就是唯一的选择。</span></font></font></p>

         你说:</span>"</span>我们都会用</span> UNIX</span> 的话,你们计算机专业的人还用来干什么?</span>"</span> 很容幸的告诉你,计算机专业的有一部分人就是专门为你们提供这样强大而方便的计算机工具的。如果他们制造的工具只有自己会用的话,那这个工具还有什么用?</span></font></font></p>

       理解</span> GNU/Linux</span> 不要用</span> Windows</span> 的标准来要求</span> Linux</span>。</span></font></font></p>

        由于</span>GNU/Linux</span>这个词太长,下面如果没有特别指明,</span>"Linux"</span>就是指</span>GNU/Linux"</span>。</span></font></font></p>

       在这个年代,恐怕没有人需要我来介绍</span> Linux</span> 是什么了吧?如果你觉得</span>"Linux</span> 只不过是跟</span> DOS</span> 差不多的东西</span>"</span>,那请问问你旁边的</span> Linux</span> 用户,</span>Linux</span> 到底是什么?</span></font></font></p>

         那为什么我还要写一篇这样的文章?因为,我发现还有很多人不不理解</span> Linux</span> 和</span> UNIX</span>,虽然他们也在用它,但是他们有时会问:</span>"</span>为什么</span> Linux</span> 不能像</span> Windows</span> 那样</span> ……?</span>"</span>,</span>"</span>怎么</span>Redhat Linux</span>不能</span> mount NTFS</span> 分区!</span>"</span>,</span>"Linux</span> 下用什么整理硬盘?</span>"</span>,</span>"</span>什么时候</span>OpenOffice</span>才能完全兼容</span>Word</span>文件啊?</span>"</span>,</span>"</span>现在还有什么</span>Windows</span>能干的事情</span>Linux</span>干不了的?</span> "</span>……</span></font></font></p>

        他们有</span>40G</span>的硬盘,却只为</span> Linux</span> 分配了</span>2G</span>空间,有时还抱怨</span>"</span>这个东西怎么占这么多硬盘!</span>"</span> 似乎</span> Windows</span> 该占用大部分硬盘。他们把重要的数据装在</span>Windows</span>的分区,似乎信不过</span>Linux</span>。他们总是到处寻找新奇的,好看的</span>GUI</span>程序,对命令行的东西一概不屑一顾。他们对</span>Drag&Drop</span>,菜单配置,自动升级非常感兴趣。他们如果找到一个很像</span> Windows</span> 程序的</span> Linux</span> 程序,一定会很高兴的说:</span>"</span>哈哈!</span>Linux</span> 也能……了!</span>"</span>如果</span>Linux</span>在某种测试中胜过</span>Windows</span>,他们会高兴得跳起来。他们没有办法用</span>Linux</span> 解决问题的时候,甚至用</span>Wine</span>来运行</span>Windows</span>程序。有时实在没办法,只好重起到</span>Windows</span>,或者干脆省得麻烦,在</span> Windows</span> 下装一个</span> VMWare</span> 虚拟一个</span> Linux</span> 玩。</span></font></font></p>

         你如果出现了上面的情况,说明你的思想受到了</span> Windows</span> 的某种潜移默化的影响和误导。你没有能够从本质上理解存在于</span> Linux</span> 身上的</span> UNIX</span> 思想。你支持</span> Linux</span>,你喜欢</span> Linux</span>,你能从中感觉到快乐,这非常好。你现在只需要明白的是:</span>Linux</span> 从来就不是一个玩具,它是天才</span>UNIX</span>的后代。</span>UNIX</span> 是自晶体管发明以来最伟大的发明,它从诞生那一天开始就比</span> Windows</span> 的设计出色。</span></font></font></p>

          你要体会什么叫做</span>"</span>设计</span>"</span>,一个糟糕的设计并不是到后来缝缝补补就可以变好的,而一个出色的设计,不但可以以不变应万变,而且可以影响到后来者。一个出色的设计配上一个出色的实现,那就是非常出色的发明。</span>Linux</span> 就是这样的一个出色的发明。</span>Linux</span> 并不需要追赶</span> Windows</span>,也不需要打垮微软。它的最终目标是改变整个计算机世界,还人们自由,给人们乐趣和方便。</span></font></font></p>

Unix</span> 是简单的,你不需要成为一个天才也能理解这种简单。</span></font></font></p>

         UNIX</span> 的设计者</span> Dennis Ritchie</span> 说:</span>"Unix is simple. It just takes a genius to understand its simplicity."</span> 但是我不这么认为,因为我不是一个天才,但是我却勇敢的把</span> Windows</span> 完全删除掉,遇到不明白的事情的时候努力用</span> UNIX</span> 的方式去解决,而不是寻求</span> Windows</span> 的帮助。现在我体会到了</span> UNIX</span> 的思想和好处,我可以用比</span> Windows</span> 高效几倍的效率工作。因为我相信这样的信念:</span>"Windows</span> 能办到的事</span> Linux</span> 一定能办到,而且办的更好。</span>"</span></font></font></p>

          这小节开头的话应该改成:</span>"Unix</span> 是简单的,你不需要成为一个天才或是计算机专家。但是在这个冲斥着</span> Windows</span> 错误观念的世界,你需要信念和勇气才能理解它的简单。</span>"</span> 我下面就告诉你一些我理解到的东西。首先,你要知道的是微软在国际科学领域是根本没有地位的。</span></font></font></p>

微软的地位</span></font></font></p>

        微软的名声在欧洲和美国的大学里,特别是在计算机系里之坏,大家可能有所耳闻。我认识的</span> MIT</span>,</span>Stanford</span> 的教授,贝尔实验室的专家,甚至一个欧洲小国的高中计算机老师都绝口不提微软的名字。在他们眼里,微软只是一个没有真技术,专靠在落后国家商业宣传和垄断经营的小公司。这个</span>"</span>小</span>"</span>并不是说它人少,钱少,而是说它先进技术少。</span></font></font></p>

         我上次和</span>xxx</span>合作写了一个算法演示程序,那个算法是贝尔实验室一位科学家</span>Steven Fortune</span>很天才的发明,为了程序能够被身边大多数人使用,我们选择了</span> VC+MFC</span> 作为平台。我在分析算法时还得到</span> Fortune</span> 很热情的鼓励,寄给我一份资料,还多次回信耐心的给我讲解了很多细节。但是程序完成之后,我把样品发给</span> Fortune</span>,他回信说:</span>"</span>对不起。我机器上没有</span> MFC</span>。</span>"</span> 话说的很客气,但是我已经感觉到了他对</span> Windows</span>的不屑。然后我把</span> MFC</span> 静态编译进程序再发给他,他就没有再回信了。他显然不是瞧不起我,而是确实有难处。</span></font></font></p>

        你能感觉到这位科学家对微软和</span> Windows</span> 是什么态度了吧?不是反感,而是他心里根本没有</span> Windows</span> 这个东西!微软在高科技领域没有发展,那么它怎么生存呢?到发展中国家去发展一下,他们的人民还对电脑一无所知,我说不定甚至可以打入大学的计算机系呢。我送他们软件,我捐钱盖大楼,我出钱找图灵奖获得者来演讲,让他们觉得我们都是科学家!</span></font></font></p>

         好了,现在全国的大学包括清华,几乎所有人机器必装盗版</span> Win2000</span>,</span>Office XP</span>,学校的选课系统是非</span>IE</span>不能正确浏览,论文用</span> Word</span> 编辑,演示用</span>ppt</span>做,</span>email</span> 的通知附件是</span> doc</span> 文件,你不用</span> Word</span> 打不开,连</span> 863</span> 项目都用</span> VC</span> 写程序了。我很久以前就看到一份报纸说,</span>"</span>微软为什么不严厉打击盗版?</span>"</span> 这篇文章说,微软非但不打击中国的盗版行为,而且有放任之趋势。放长线吊大鱼,</span>"</span>以后我要你们加倍的来还我!</span>"</span> 确实如此,它的目的快实现了。</span></font></font></p>

Windows</span> 笼罩下的中国计算机教育</span></font></font></p>

        说句丢脸的话,比尔盖茨很久以前是我的偶像……</span></font></font></p>

        在中国,比尔盖茨被很多人奉为神圣,</span>"</span>少年电脑天才</span>"</span>,甚至有的人提到他的名字就做出</span>"</span>抱拳对天</span>"</span>的姿势。很多人谈到微软的</span>"</span>新技术</span>"</span>,</span>"</span>高科技</span>"</span> 都是眉飞色舞。各种</span>"VC</span>编程圣经</span>"</span>,</span>"</span>深入了解</span> Visual C++"</span>之类的书,在开头几页都会出现非常肉麻的字眼,</span>"</span>在那团团的混沌中,一个开天辟地的精灵,</span>Windows 1.0</span>,诞生了……</span>"</span></font></font></p>

         微软的软件被这么多人盗用,那么人们是怎样使用这些盗版程序的呢?先看看电脑培训班,教的都是一些</span> DOS</span> 命令,打字,</span>Windows</span> 基本操作,</span>Word</span> 文档处理,</span>PowerPoint</span>,高级班可能有</span> Excel</span>,</span>Access</span>……</span> 参加各种微软认证考试,</span>MCSE</span>,</span>MSDE</span> 的人络绎不绝。考试辅导班都贴出了</span>"280</span>元,考过为止</span>"</span>之类的字样。考试参考资料更是昂贵,有些电脑书店整整两书架都是</span>"Microsoft Press"</span>的东西。我有个同学参加认证考试,每门考试都要</span>200</span>多元。而且你一次考不过可以再考,又要交钱。他后来还津津乐道跟我说,看我,花了</span> XXXX(</span>一个四位数</span>)</span>元考过了微软认证,得到一张比尔盖茨亲笔签名的证书和价值</span>6000</span>元的</span> Windows XP</span> 内部发行版。</span></font></font></p>

          "</span>电脑要从娃娃抓起</span>"</span>,我们再来看看娃娃们学的是什么。大部分家长给孩子买了电脑之后,他们首先就会装一个盗版的</span> Windows</span>,然后买来盗版的游戏开始玩。如果哪个孩子会用</span> Delphi</span> 编程序,那可不得了。报社记者,电视台争相报导,说,某某学校的初中生某某,在别人都还在玩电脑游戏这种</span>"</span>初级阶段</span>"</span>的时候就已经用</span> Delphi</span> 写程序了。镜头还瞄准了他显示器上面的像框中的比尔盖茨头像!</span></font></font></p>

         我刚进入大学计算机系时还不懂得什么是操作系统,因为我以前只用过</span>"</span>中华学习机</span>"</span>。看到新入学的同学们各个谈论的都是</span> "Windows 95"</span>,</span>"VC"</span>……</span> 我简直觉得我落后了好几十年一样,整个一土人,根本跟他们答不上话。好不容易找到一个比较熟的同学问了一下:</span>"</span>你们天天谈论的瘟</span>95</span>是什么啊?</span>"</span>答:</span> "win95</span>就是一个操作系统,跟</span>DOS</span>是一类。</span>""</span>朵死是什么?</span>" "</span>你连</span>DOS</span>都不知道是什么?别在计算机系混了。</span>"</span> 学校上课当然不讲</span>VC</span>编程之类的东西,但是上</span> Pascal</span> 的老师有一次就说:</span>"</span>嗨,我们学校真是落后。现在别人都用</span> C, C++</span>,甚至</span> VC</span> 了,我们还在讲</span> Pascal</span>。不知道什么时候才能有</span>VC</span>课啊。你们出去也是要用</span>VC</span>的,只好自学了。</span>"</span> 于是,有些同学很多时候上课都捧着一本很重的</span>"Windows</span> 编程大全</span>"</span>之类的书,根本没有听课。吃饭时就念念有词的跟我说,</span>"</span>代码的优化是无止境的</span>"</span>,</span>"</span>匈牙利命名法真是伟大的发明</span>"</span> ……</span> 这就是中国很多大学计算机系的情况。</span></font></font></p>

        感觉到无知了?这不是偶然的,而是微软长久以来埋下的伏笔。它要让无知的大家都把它奉为神圣,它要让支持</span>UNIX</span>,</span>Xwindow</span>的人一旦说</span> UNIX</span> 好,</span>Xwindow</span> 好的时候,都被一群人围着说教:</span>"</span>这个</span> Windows</span> 也能做到</span>"</span>,</span>"</span>你对</span> Windows</span> 有偏见</span>"</span>,</span>"</span>微软才是主流啊</span>"</span>,</span>"</span>你敢瞧不起</span> win2k</span>?</span>"</span>,</span>".NET</span> 就是世界潮流</span>"</span>,</span>"</span>微软的毕竟是新技术</span>"</span>,</span>"</span>有钱就是有技术</span>"</span>……</span> 甚至在一番论战比较后败下来还是要说:</span>"Windows</span> 性能差点,但是易用性强</span>"</span>,</span>"Windows</span> 是老百姓用的,要求别那么</span>"</span>,</span>"</span>微软那么有钱,以后想超过</span> UNIX</span> 还不容易吗?</span>"</span>……</span></font></font></p>

发达国家的计算机教育</font></span></font></p>

        我前段时间在</span> USENET</span> 发文问有关</span> Scheme</span> 语言的问题时,认识了一位丹麦人。他解决了我所有的问题,并且建议我阅读一些很</span>"</span>深奥</span>"</span>的有关程序语言语法,文法的书,他告诉我很多网站可以学习</span> LISP</span>,</span>Scheme</span>,人工智能,算法。他叫我看</span> Jonathan Rees</span> 的论文</span> "Syntactic Closures"</span>。他还打包给我寄过来一份</span> MIT</span> 的</span> "How to Design Programs"</span>。他说他在自己的</span> PC</span> 机上装的是</span> Linux</span>,他用</span> Emacs</span> 编辑,运行</span>Scheme</span> 程序。他对</span> Emacs</span> 的了解和爱好真是使人惊讶。他大学本科毕业时做的毕业设计是一个</span> Scheme</span> 解释器。这对于我来说是望尘末及了。</span></font></font></p>

           他是那么的不厌其烦,我的每一个问题他都详细的回答。我有时都觉得过于详细了,怎么这么耐心啊?我觉得他似乎是我的高中老师。他是什么样的人呢?我好奇的打听了他的情况。原来,他是丹麦一所普通高中的计算机老师。</span></font></font></p>

           他说他在高中里讲授程序设计和算法,计算机语言文法。他说用</span> Scheme</span>,他的学生不用再为内存泄漏等程序语言本身的问题而烦恼,而专注于问题和算法本身。有利于培养学生解决问题的能力,特别是用计算机解决数学问题的能力。</span></font></font></p>

          天哪!为什么欧洲出现那么多数学家,几何学家?你看看别人重视的是什么!我们的计算机教育如果继续这样下去,只会沿着弯路越走越远!</span></font></font></p>

微软和它的朋友们的如意算盘</font></span></font></p>

           下面来看看微软的收入是怎么来的。首先,</span>Windows 98</span>系列操作系统,一个就是</span> 100</span>多美元,每次升级又是几乎同样的价钱。</span>Windows NT</span> 还要贵几倍,而且有用户数目限制,</span>5</span>个用户的,</span>10</span>个用户的……</span> 以后如果要增加用户数目还要按比例付钱。</span></font></font></p>

         花了如此多钱买来的操作系统就能用了吗?它竟然连压缩程序都没有提供!你装上</span>Windows</span> 之后一般第一件事就是去下载一个</span> WinZip</span> 吧,</span>"</span>只要</span> 29</span> 美元</span>"</span>。</span>Windows</span>会中病毒啊,马上花</span> 70</span> 美元买一个</span> Norton AntiVirus</span> 吧。还有黑客呢?再买一个</span>Norton Internet Security</span> 好了,</span>100</span> 美元。系统需要优化,磁盘需要整理,买一个</span>Norton System Works</span> 是你最佳的解决方案,</span>100</span>美元。</span></font></font></p>

       可是你现在还是不能干正事啊!你想要一个</span> Word, PowerPoint</span>?那就买一套</span> Office XP</span> 吧,一起买便宜些,</span>$459.90</span>。</span></font></font></p>

        那些程序不会用啊!那些菜单怎么设置,到底有什么功能啊?看</span>"</span>帮助</span>"</span>也学不会。买本书看看吧,我推荐</span>"Special Edition Using Microsoft Office XP"</span>,不贵,</span>$27.99</span>。这本书里面大部分是屏幕抓图,还是买一本旧的比较划算,</span>$17.85</span>。</span></font></font></p>

          你如果只是当个秘书,上面的差不多还凑合了。可是你有更高的追求,你想成为</span> Windows</span>程序员。首先买一个</span> Visual Studio.NET</span> 吧,要不然怎么编译程序。</span>$494.95</span>。</span></font></font></p>

为了紧跟微软动向,世界潮流,不能不注册个</span> MSDN</span> 什么的吧?这个贵一点,不过物有所值啊,</span>$2,799</span>。</span></font></font></p>

         嗯,你现在已经是上层阶级,白领人士了。你现在可以像这样</span>"</span>自由</span>"</span>的,</span>"</span>安全</span>"</span>的生活了。</span></font></font></p>

为什么要反对使用</span> Windows</span></font></font></p>

        很多人都说不应该完全否定</span> Window</span>,</span>Windows</span> 也有它的长处。不应该骂微软。</span></font></font></p>

         对。</span> Windows</span> 容易操作,适合普通用户。如果微软把它自己定位在</span> P&G</span>,</span>Philips</span> 那样的地位,能够给我们的百姓提供周到的,完善的,价廉物美的服务。那我肯定是很喜欢它的。但是从上面的种种情况说明,微软是一个野心极大的国际垄断组织!它的产品没有一个是不出问题的:</span>Windows</span> 不稳定,容易中病毒,而微软不为大家免费提供杀毒软件。我就是要让你们花钱买我的朋友</span> Symantec</span> 的杀毒软件,谁叫你们已经上了我的贼船?这叫什么售后服务啊!</span></font></font></p>

       你买来微软的程序,安装的时候一般都有一个协议,说:</span>"</span> 由于微软的程序造成你的数据损坏或丢失,微软概不负责。</span>"</span> 我想很多人 肯定觉得这个不合理,不想按那个</span> "I accept"</span>。但是你的软件买都买来了,钱都花了,现在一按</span> "I decline"</span>,安装程序马上就会退出。你只好被迫点击了</span> "I accept"</span>!这不是不平等条约吗?</span></font></font></p>

        我已经目睹了好几个朋友的文档被</span> Microsoft Word</span> 损坏,有的是编辑了十多天的</span>30</span>多页的论文,有的是费了很大工夫做出来的个人简历,那个朋友为此失去了到自己向往的</span>P&G</span> 工作的机会。就在他要投简历的前一个晚上,就在那一瞬间……</span> 不知道他痛哭的时候有没有想起要投诉微软,可是谁叫我们用的都是盗版呢,况且你还点击了</span> "I accept"</span>。</span></font></font></p>

           微软仗势已经占有大部分</span>PC</span>市场,制定不符合国际标准的</span>"</span>微软的标准</span>"</span>,以不合理的方式压制其它公司的软件,这个问题已经在美国司法部闹了很久了。他甚至在</span> Windows</span>系列操作系统中放置能够通过网络泄漏用户信息的代码,以至于</span> Windows</span> 刚进入澳大利亚时被澳大利亚政府禁止使用。</span></font></font></p>

        有些人说:</span>"</span>微软毕竟开创了一个历史,造就了今天的</span> IT</span> 行业。</span>"</span> 但是,如果没有微软,我们今天早就用上非常稳定,非常可靠,非常方便,非常</span>"</span>傻瓜</span>"</span>的软件了!微软是阻挡信息技术发展的罪魁祸首。</span></font></font></p>


</span></span></font></span></div>  什么是 Windows</span> 能干而</span> Linux</span> 干不了的事情?</span>---</span>

</font>

          微软的程序的工作方式</span>(</span>注意,我只是说操作方式,病毒的事情另外算</span>)</span>确实适合于一般家庭,上上网,发发邮件,打打游戏都不错。可是微软却要把自己包装成什么</span> "</span>高科技</span>"</span>企业,要在世界各地设置</span>"</span>研究院</span>"</span>,在大学计算机系赠送不适合用于科研的</span> Windows</span>产品,甚至出钱请图灵奖得主来中国畅谈</span>"</span>二十一世纪的计算</span>"</span>,还在大会上宣传自己的</span> .NET</span> 技术。非要把别人认为自己是科学的,自己是领导世界高科技的。但是呢?它什么高科技也没有。欧洲,美国,哪一个关键部门在用微软的东西?</span>NASA? DOE? CERN?</span>你仔细想一想,微软的程序对人类到底有什么重大作用?</span></font></font></p>

       "Windows</span> 能干而</span> Linux</span> 干不了的事情,那就是不需要干的事情。</span>"</span></font></font></p>

         有个朋友看我半年没有用</span> Windows</span>,有时就会问我:</span>"</span>你只用</span> Linux</span>,有没有发现有些</span>Windows</span> 能处理的事情</span> Linux</span> 干不了?</span>"---</span></font></font></p>

           我回答说:</span>"Windows</span> 能干而</span> Linux</span> 干不了的事情,那就是不需要干的事情。</span>"</span></font></font></p>

Windows</span> 能做的有益的事情</span> Linux</span> 都能做</span>---</span></font></font></p>

           Windows</span> 下的某些功能确实是我们需要的,那么</span> Linux</span> 的开发者们和用户也需要这种功能,他们就会去实现这种功能,而且比</span> Windows</span> 的方式好得多。由于大多数科学家,工程师用的都是</span> Linux</span> 或者某种商业</span> UNIX,</span> 所以几乎所有商业的科学工程程序,比如</span>Matlab, Mathematica, AutoCAD, Candence</span>的,</span>Synopsys</span>的,</span>Avant!</span> 的……全都是先有</span>UNIX</span> 的版本</span>(</span>包括</span>Linux)</span>,然后再考虑移植给</span> Windows</span>,甚至根本不移植给</span>Windows</span>,因为</span> Windows</span> 的机器一般没有足够的能力运行这样的程序。你不要以为只有</span> Windows</span> 才有</span> PSpice, UNIX</span> 的</span> HSpice</span> 要好得多,而且可以运行在大型主机上。当然它们不是免费的,但是它们值那个价钱。</span></font></font></p>

          但是</span> Windows</span> 下有些东西在</span> Linux</span> 下没有很相似的,或者你找到很多类似的,但是它们每一个比起</span> Windows</span> 的那个程序都要差很多,那么原因有两种可能性:</span></font></font></p>

         有一个完全类似的程序,但是由于它乍一看不漂亮,被你忽略了。而其它程序虽然看起来很漂亮,但是它们是一些初学编程的人写的。现在由于</span> Gtk, Qt</span> 的诞生,</span>Linux</span> 下开发图形界面程序极其简单,很多初中生甚至小学生都可以随手编出一些漂亮不中用的程序。如果你整天寻找这样的程序挑来挑去,永远也找不到你满意的。当然也有一流的程序用</span> Gtk</span> 和</span> Qt</span>,比如</span> GVIM</span> 就可以用</span> Gtk</span> 作为图形界面,我还知道</span> Synopsys</span> 一些程序用了</span> Qt</span>。</span></font></font></p>

      我曾经也犯过这样的错误,从外表区分一切。结果优秀的</span> FVWM, lftp, Mutt, wget</span> 都被我忽略过。当我找回它们的时候,我是那么的羞愧不已,它们现在都是我的朋友</span> 我第一次看到</span> FVWM</span> 觉得它只不过是一个有很厚很难看边框的东西。可是现在,我 的同学看到</span> FVWM</span> 都说:</span>"</span>哇!真漂亮。</span>"</span></font></font></p>

有另一种完全不同的方式可以达到相同的目的,甚至更好。</span></font></font></p>

        很多人很关心</span> Open Office, Star Office, AbiWord, ...</span> 他们多么盼望有一天某一个</span>Linux</span> 程序能够完全兼容的打开一个复杂的</span> doc</span> 文档。但是你永远也不可能有那一天。为什么呢?因为微软为了占有市场,必定不会让其它系统的程序能够完全兼容它的文档格式。它一定会不断变化</span> doc</span> 文档的内部结构,隐藏一些秘密,让其它公司的程序打开</span> doc</span> 文档时总是有某种问题,从而你必需购买</span> Microsoft Office</span> 和</span> Windows</span>。</span></font></font></p>

        你应该想一下,那么多的高智商的大学教授,科学家,学生,他们用的都是</span> Linux</span> 或者其它类型的</span> UNIX</span>,他们没有</span> Word</span> 可用,怎么处理文档呢?这么多年没有一个像</span>Open Office</span> 的程序出现,难道大家没有办法写文档吗?</span></font></font></p>

             显然不是这样。你看看那些高水平的学术杂志,论文,那些大学教授的网页,那些漂亮的幻灯片,它们是什么做的?原来</span> UNIX</span> 用户早就有非常方便的</span> troff, LaTeX, SGML</span>等东西可以处理文档,而且它们比起</span> Word</span> 都要高明的多。</span>Word</span> 显然被这些大拿忽略了,以至于很久以来没有人想在</span> Linux</span> 下开发一个类似</span> Word</span> 的程序,除非某些公司想抢微软的饭碗。</span></font></font></p>

           很多人留着</span> Windows</span> 在硬盘上的原因无非是为了用</span> Word</span> 和</span> PowerPoint</span>。我见过一个教授,他的</span> Windows</span> 笔记本电脑上除了</span> PowerPoint</span> 什么都没有。有一天演示的时候,他指着堆乱字符说:</span>"</span>对不起,这是一个公式……怎么每次都是这样……</span>"</span> 其实有比</span>PowerPoint</span> 好几百倍的东西可以制造幻灯片,你可以用最简单的方法制造世界一流效果的论文和幻灯片。你待会儿可以看看我的</span>TeX</span>网页,你就会知道为什么我可以完全离开</span> Windows</span>。</span></font></font></p>

Windows</span> 能做的那些没用的事情</span> Linux</span> 永远做不好</span></font></font></p>

电脑游戏</font></span></font></p>

       有些人说</span> Linux</span> 下不能玩</span> Windows</span> 下所能得到的所有游戏。的确,</span>Linux</span> 下虽然也有少量的游戏,比如</span> Quake</span>。但是它没有</span> Counter Strike,</span> 没有</span> Star Craft,</span> ……</span></font></font></p>

         并不是说电脑游戏不该玩,但是应该适可而止。电脑是用来处理事务,帮助你学习,解决问题的工具,而不是一个玩具!整天沉迷于电脑游戏中,而不出去感觉外面的世界,你会变得越来越冷酷,越来越缺乏人情味。你与真实的世界越来越远。</span></font></font></p>

       你可以在</span> CS</span> 里杀人,你可以在</span> Tomb Raider</span> 里探险,你甚至可以在</span> Tony Hawk's Pro Skaters</span> 里滑板……</span> 但是</span> It's not real</span>!你虽然有很高的</span>"</span>反恐技巧</span>"</span>,但是遇到歹徒的时候,你是那么的怯懦;你虽然控制</span> Laura</span> 伸手敏捷,但是你打篮球的时候怎么总是被人断球?你虽然可以轻易的在</span> THPS</span> 里作出一个</span> "360 kickflip to hangten grind to fakie"</span>,但是你踩在自己的滑板上的时候还不会</span> ollie</span>!</span></font></font></p>

       说回来,如果你偶尔玩一下电脑游戏未尝不可。但是世界上有远比</span> Windows + PC</span> 更好的游戏方式。</span>Sony</span> 的</span> PlayStation2, SEGA</span> 的</span> DreamCast, Nintendo</span> 的</span> N64</span>,</span>Namco</span>的街机……每一个都比</span> Windows</span> 游戏精彩,每一个都有如此高的</span>3D</span>性能,以至于</span>Pentium4, Itanium + GForce4</span> 都无法与它们比美!</span></font></font></p>

       Linux</span> 的用户们都是关心解决世界的关键问题的份子,他们哪里有时间用自己的机器来玩游戏啊?他们每天用</span>Linux</span>高效的做完自己的工作就到阳光下享受自然去了。要玩游戏也是玩一些类似推箱子,贪吃蛇之类的智力小游戏。所以,你知道为什么</span> Linux</span> 几乎没有游戏了吧?</span></font></font></p>

"</span>整理硬盘,优化系统</span></font>"</font></span></font></p>

         这是一个非常有意思的话题,仅次于有关</span>"</span>病毒</span>"</span>的话题。相信很多</span> Windows</span> 用户都有整理硬盘的经历。在很多</span> Windows</span> 用户眼里,</span>"</span>硬盘用久了,会出现碎片,速度会减慢,需要一个程序来整理,整理硬盘的时候不要做其它工作</span>"</span>,这好像是天经地义的 事情。</span></font></font></p>

        我也曾经津津有味的看着</span> Norton Defrag</span> 一点一点的把我的硬盘排序,调整,用图形的方式显示出来,然后报告</span>100%</span> 没有碎片。你的硬盘现在已经达到最佳状态。</span>"</span> 我现在才发觉我那时是多么的幼稚。</span></font></font></p>

        Linux</span> 和</span> UNIX</span> 用户似乎从来没有</span>"</span>整理硬盘</span>"</span>这种说法呢?你觉得很奇怪吗?如果你觉得很奇怪,那说明你的思想在某种程度上被微软的垃圾程序禁锢了。你需要明白,</span>UNIX</span> 的大型主机很多必须是一天</span>24</span>小时,一年</span>365</span>又</span>1/4</span>天不停运转的,要是每个星期都要整理一次硬盘,在整理的时候几乎不能干任何事情,那是绝对行不通的!</span></font></font></p>

       Linux</span> 机器根本不用整理硬盘,这就是为什么没有看到过</span> Linux</span> 用户整理硬盘。</span>Linux</span> 的文件系统是比</span> Windows</span> 的</span> FAT, FAT32, NTFS</span> 高明得多的文件系统,它们不但可以对文件设置权限,实施完全的保护,而且可以</span>"</span>越用越整齐</span>"</span>,</span>"</span>越用碎片越少</span>"</span>!你应该把文件大部分放在</span> Linux</span> 的分区,而不是</span> Windows</span> 分区,因为它比</span> Windows</span>分区可靠得多。</span></font></font></p>

         还有更滑稽的事情就是有很多</span>"Norton System Doctor"</span>,</span>"Windows</span> 优化大师</span>"</span>,</span>"</span>超级兔仔注册表魔法</span>"</span> 之类的程序存在,而且价格昂贵。似乎一个操作系统本来应该有很多问题,需要别的厂商做程序来</span>"</span>优化</span>"</span>它,而且为了得到优化,你需要付钱!这些问题</span> Linux</span> 根本就没有,所以不需要什么优化。</span>Linux</span> 内核本身就是高度优化的。</span></font></font></p>

IDE</font></span></font></p>

      有些人在抱怨为什么</span> Linux</span> 没有一个良好的</span> IDE</span> 开发环境。</span>Linux</span> 现在已经有一些</span>IDE</span> 了,但是总是有很多问题。你是不是正在寻找,正在期望</span> Linux</span> 某一天可以有一个</span>VC</span>那样的开发环境?你有没有发现你正在进入微软给你设下的怪圈?你为什么一定要用</span> IDE</span>?你说:</span>"IDE</span> 开发迅速,调试方便,适合大型程序……</span>"</span> 那说明微软的程序在你脑子里已经比较根深蒂固,你需要好好清醒一下了,看看我来告诉你。</span></font></font></p>

高明的</span> UNIX</span> 程序员不用</span> IDE</span>,</span>IDE</span> 从来就是给初级</span> Windows</span> 程序员用的。</span></font></font></p>

        你看看大型的</span> UNIX</span> 程序,包括</span> Linux</span> 内核,各种网络服务程序,</span>Xwindow</span> 程序在内,哪一个是</span> IDE</span> 搞出来的?我们实验室的</span> EDA</span> 程序也没有一个是</span> IDE</span> 弄的,我还知道</span>Candence, Synopsys</span>,</span>Mentor</span> 的高性能的图形界面</span> EDA</span> 程序也都不是</span> IDE</span> 写的。你信不信,微软的人在写</span> Windows</span> 本身的时候也根本不用</span> IDE</span>。微软内部程序员最喜欢的编辑器其实是</span> VIM</span>,用</span> VIM</span> 的微软程序员上次向乌干达的可怜儿童捐助了</span>1000</span>多美元,这是值得称赞的。</span></font></font></p>

          有一次某杂志采访一些出名的</span> Linux</span> 内核程序员,包括</span> Linus</span> 在内,没有一个人用</span>IDE</span>,有的人用</span> VIM</span>,有的用</span> Emacs</span>,只有</span> Linus</span> 说</span>"GNU Emacs is evil"</span>,但是其实他用的是一种跟</span> Emacs</span> 有同样键绑定功能的</span> MicroEmacs</span>。大家都是用编辑器编辑了程序文件,然后用</span> make</span> 这样的自动工具调用</span> gcc</span> 编译器完成编译工作的。甚至高级的</span> Windows</span> 程序员也不用</span> IDE</span>,他们可以从命令行调用</span> cl</span>,</span>nmake</span> 来编译自己的程序。虽然这样的</span> Windows</span> 程序员很少,但是他们却是最了解</span> Windows</span>,最高明的</span>Windows</span> 程序员。</span></font></font></p>

         为什么</span> UNIX</span> 程序员不用</span> IDE</span>?明白了这个道理你就能体会到</span> UNIX</span> 的设计思想了。首先,一个</span> IDE</span> 集成了编辑器,编译器,汇编器,调试器,跟踪器……</span> 这个编辑器功能肯定比不上</span> VIM</span> 或</span> Emacs</span>,编译器比不上</span> GCC</span>,汇编器比不上</span> as</span>,调试器比不上</span> gdb</span>,</span>ddd,</span> 跟踪器比不上</span> strace, ltrace, truss</span>。你得到的是一套整合的低能的程序。如果你对调试器的功能不满意,你只好换用另外一套</span> IDE</span>,但是这套</span> IDE</span> 的热键,菜单,编辑器功能,按钮……</span> 跟原来那个有很大不同。你不得不花很多时间来熟悉新的环境,而不能保持原来的某些东西。</span></font></font></p>

          而在</span> UNIX</span> 下就不一样了。你可以用你最喜欢的</span> VIM</span> 编辑程序,你在</span> VIM</span> 里可以调用</span>GNU make</span>,</span>make</span> 可以调用</span> gcc, ld, ... make</span> 的出错信息可以被</span> VIM</span> 捕获,</span>VIM</span> 能帮你在源程序里定位。你如果喜欢</span> icc,</span> 你可以让</span> make</span> 用</span> icc</span> 而不是</span> gcc</span>。你如果觉得</span> gdb</span> 跟踪变量时比较麻烦,你可以用</span> ddd</span> 来显示各种数据结构之间的关系。你还可以在</span> Emacs</span> 里调用</span> gdb</span>,那样就可以同步显示源代码了。而且</span> VIM</span> 和</span> Emacs</span> 还可以编辑很多其它东西,比如信件,</span>LaTeX</span> 文档,</span>HTML</span>,配置文件……</span> 你不用另外找一个什么编辑器来干这些杂活了。很多程序比如</span> Mutt, tin</span> 都可以在内部使用</span> VIM</span>,这样就更方便了。实际上</span> make</span> 在其它方面还能帮你很多忙,我的每一个比较大型的</span> LaTeX</span>文档都是用</span> make</span> 维护的。</span></font></font></p>

Linux</span> 能干的高精尖的事情</span> Windows</span> 都干不了</span></font></font></p>

         当然有很多事情是</span>Linux/UNIX</span>的专利了。因为</span> Windows</span> 只能装在</span> PC</span> 机上,好像以前也有</span> Alpha</span> 可以使用</span> Windows NT</span>,但是就是没见到有人用。</span>PC</span> 机的能力是很低的,像我们编程序处理</span> NP-Hard</span> 问题的人,用</span> Windows</span> 的机器显然速度不够,而且有时一个问题算上几天甚至几个星期,</span>Windows</span> 机器是以</span>"</span>死机</span>"</span>著称的,我们怎么能放心?所以几乎所有科学计算程序,</span>EDA</span> 程序,高性能图像处理程序都不是</span> Windows</span> 的。他们有时也会移植一些给</span> Windows</span>,但是常常降低那些程序的能力。你比较过</span> Windows</span> 版本的</span> Mathematica</span> 和</span> Linux</span> 的有什么区别吗?</span></font></font></p>

          IBM</span> 制造的最大的并行计算机有</span> 8000</span> 多个处理器,</span>Windows</span> 不可能有能力管理这么多处理器,它用的是什么操作系统?答案是</span> Linux</span>。</span></font></font></p>

        《泰坦尼克号》电影里的三维动画,那么细腻逼真,</span>Windows</span>机器能做出来吗?不行。那也是</span> Linux</span> 机器做的。</span></font></font></p>

民航总局用来训练地情人员的虚拟现实训练设备,</span>Windows</span> 当然无能为力。那都是商业的</span> IRIX</span> 机器。</span></font></font></p>

        UNIX</span> 是最早支持</span> TCP/IP</span> 网络协议的系统。它上面有很多可以互相协作的网络服务程序,它们经过多年的使用和修订,已经达到比较完善的程度。而就在</span>1997</span>年,微软的比尔盖茨还在扬言:</span>"Internet</span> 是没有前途的。</span>"</span> 微软的这个</span>"</span>远见卓识</span>"</span>大家应该都已见识,它后来加上的网络服务程序</span>IIS</span>漏洞之多,让公安部都频频发出警报,大家也是见识了的。</span></font></font></p>

         其实你知道了,</span>Windows</span> 没有一样有用的事情能比</span> UNIX</span> 干的更好。</span></font></font></p>

 Linux</span> 干不了的有用的事情</span> Windows</span> 照样干不了</span></font></font></p>

         当然</span> Linux</span> 不是万能的。它也有不能干的事情,电脑也有干不了的事情。但是</span> Linux</span>干不了的事情,</span>Windows</span> 肯定也干不了。这些事情就是我们需要探索,需要努力的事情了。在你探索的过程中,</span>Linux</span> 必定是你的好伙伴。</span></font></font></p>

      不要把</span>Linux</span>和</span>Xwindow</span>掩盖起来!不要把我们的用户当成傻瓜。</span></font></font></p>

        什么?你早就知道</span> Windows</span> 是垃圾?噢!你怎么不早说呢!害我废话这么多。嘿嘿。</span></font></font></p>

        "</span>好了。你知道</span> Windows</span> 是垃圾,你现在用什么</span>"</span></font></font></p>

       "Linux + Xwindow"</font></span></font></p>

       "</span>那我问你,</span>Xwindow</span> 是什么样的?</span>"</span></font></font></p>

         "</span>不就是跟</span> Windows</span> 差不多吗?只不过</span> 'Start'</span> 按钮比较方,而且上面不是一个</span>Windows</span> 标志,而是一个脚丫子。点击一下居然还有很漂亮的中文菜单。我喜欢!</span>"</span></font></font></p>

       "</span>你知道什么是</span>'</span>根窗口</span>'</span>吗?</span>"</span></font></font></p>

       "</span>不知道。从来没听说过呢?</span>"</span></font></font></p>

        "</span>根窗口就是遮盖整个屏幕的那个最大的窗口。</span>"</span></font></font></p>

        "</span>哪儿有什么窗口啊!我没有看到呢?</span>"</span></font></font></p>

        你发现了问题吗?这些</span> Linux</span> 用户说是在用</span> Linux</span> 和</span> Xwindow</span>,但是他们对</span> Linux</span>和</span> Xwindow</span> 几乎完全不了解。很多人用了那么久</span> Xwindow</span> 都不知道根窗口是什么东西,不知道其实按钮也是窗口,不知道窗口管理器和其它程序有什么关系,大家都以为窗口上面的按钮是程序自己放上去的,不知道窗口</span>? quot;class name"</span>,</span>"resource name"</span>是什么东西。他们也不知道</span> .Xdefaults</span> 是用来干什么的。特别是他们很多人都不知道</span> Xwindow</span> 的字体是如何命名的,什么是</span> fontset</span>,有了一个新的字体也不知道怎么安装。</span></font></font></p>

         他们被遮在</span> Linux</span> 之上的一层一层的包装迷惑了,他们等待有图形界面的工具来帮助完成一切事情,他们认为</span> Linux</span> 跟</span> Windows</span> 一样,只是麻烦一点。他们知道</span> Linux</span>内核很好,但是他们感觉不到</span> Linux</span> 和</span> Xwindow</span> 在操作层面的天生的先进性,随后不久就把</span> Linux</span> 完全删除掉了。你发现没有,要用户理解</span> UNIX</span> 和</span> Xwindow</span> 的操作层面的先进性,才是留住用户的最好办法。如果用户体会不到操作时的方便和高效,内核再好他们也不会理会。</span></font></font></p>

        但是用摹仿</span> Windows</span> 的作法来吸引用户,永远会失败的。因为</span> Linux</span> 如果摹仿</span>Windows</span>那一套低效率的方式,那么</span> Linux</span> 的这套</span>"</span>低效率方式</span>"</span>永远比不上</span>Windows</span> 的那一套</span>"</span>低效率方式</span>"</span>。那么用户就会说:</span>"</span>这个</span> Linux</span>,没有一样比的上</span> Windows</span>。</span>"</span></font></font></p>

       Linux</span> 天生就是继承了</span> UNIX</span> 的高效的工作方式,为什么我们要把它掩盖起来?我们为什么只告诉用户</span> KDE</span> 的菜单怎么用?我们为什么不能像早期的</span> Xwindow</span> 书籍那样第一节就告诉用户什么是</span> X server,</span> 什么是</span> X client</span>,什么是</span> Window Manager,</span> 什么是根窗口。第二章就告诉用户窗口有哪些属性,什么是</span> classname, resource name, hint</span>,怎样使用</span> .Xdefaults, xrdb</span> ……</span></font></font></p>

       在这里我又不得不说一下那些</span> Linux</span> 的发行公司和写书的人,他们把</span> Linux</span> 和</span>Xwindow</span> 包装起来,却没有从基本上告诉用户</span> Xwindow</span> 的工作原理。很多书籍讲授的层次就是在</span>Gnome, KDE</span> 的菜单操作的层次,靠大量抓图来占篇幅,</span>"</span>繁荣</span>"Linux</span> 书籍市场。</span></font></font></p>

        现在很多人已经把能够利用别人的库写出一个好看的程序作为自己编程水平的象征。在这</span>"</span>图形化</span>"</span>,</span>"</span>可视化</span>"</span> 的年代,你如果还在用</span> troff, LaTeX</span> 写文档,你还在用</span>VIM</span> 自己编辑</span> HTML</span>,用</span> Mutt</span> 处理邮件,你还在用文本模式的</span> gdb</span> 调试程序,你还在用</span>Xlib</span> 写程序</span>,</span> 你还在用</span> tin</span> 上</span> USENET</span>,你还在自己写</span> Makefile</span>,写机器代码,你还在玩</span> Clossal Cave</span> 这样的字符模式冒险游戏,那你就是老古董。</span></font></font></p>

       其实这种思想是错误的。虽然你是一个坚决的</span> Linux</span> 支持者,但是你的思想是</span> Windows</span>的思想。你认为图形界面,菜单,按钮就可以解决一切问题,就可以给你高效方便。你还是没能摆脱微软给你的潜移默化的东西。你其实离不开</span> Windows</span> 那样的环境,你迟早会删掉自己的</span> Linux</span>。</span></font></font></p>

GUI vs. CLI</font></span></font></p>

做一个坚定不移的</span>"</span>两面派</span>"</span></font></font></p>

      大家看到这个标题是不是热血沸腾?两派大虾都可以围攻我了:</span></font></font></p>

      GUI</span>派用户:</span>"</span>哇!我一看你这小子就是</span> CLI</span> 的。要不然自己写什么</span> Makefile</span>?用什么</span>Mutt</span>?</span>"</span></font></font></p>

      CLI</span>派用户:</span>"</span>切~</span> 你还用</span> X</span>!高手都不用</span> X</span>。你是</span> GUI</span> 那边的。</span>"</span></font></font></p>

      可怜的我:</span>"555</span>~~</span> 你们都不要我~~</span> GUI</span> 和</span> CLI</span> 就那么水火不容吗?</span>"</span></font></font></p>

       计算机界这样的门派之分还很多。很有特点的就是</span> CLI</span> 和</span> GUI</span> 了。</span>CLI (Command LIne)</span>的狂热份子声称永远不用</span> X</span>。我上次在实验室看到一个同学用一个</span> SecureCRT</span> 登录到</span>Sun</span> 机器,然后用一个</span> vanilla vi</span> 编辑程序,我建议他启动一个</span> GVIM</span> 过来显示在</span>Exceed</span> 上可以有语法加亮。但是他坚决反对,说:</span>"</span>高手不用</span>X</span>。你想想,要是我在一个很慢的网络连接怎么用</span> X</span>?而且好多服务器没有装</span> X</span> 程序。</span>"</span></font></font></p>

        但是我们实验室的网速可够快,</span>Windows</span> 机器都有</span> Exceed</span> 啊,而且</span> Sun</span> 机器有全套</span>X</span> 客户程序包括</span> GVIM</span>。他说他是</span> CLI</span> 的坚决拥护者,但是他却在用</span> Windows</span>,他后来打开了好几个</span> SecureCRT</span>,每次从文本框输入地址,用户名和密码,从下拉菜单选择</span>"SSH2"</span>,然后点击</span>"Connnect"</span>。他还不断的夸</span>SecureCRT</span> 是</span>"</span>网络管理员投票选出的最受欢迎的登录方式</span>"</span>。老天,</span>SecureCRT</span> 本身就是个</span> GUI</span> 啊,他其实没有明白</span>Xwindow</span> 的好处。</span></font></font></p>

       你说我是</span> GUI</span> 的?我虽然很少在</span> console</span> 下工作。但是我对</span> bash, VIM</span> 很熟悉,我可以让</span> bash</span> 按照我的键绑定方式来工作。我可以在</span> rxvt</span> 里使用</span> Mutt</span> 来收发</span> email</span>。我的每个桌面上都常常堆放着一打不同大小的</span> rxvt</span>。我用</span> VIM</span> 编辑</span> LaTeX</span>。我自己写</span>Makefile</span> 来维护</span> LaTeX</span> 文档。我有时用</span> mpg321</span> 来放</span> mp3</span>。我上</span>BBS</span>用的我自己写的</span>expect</span> 脚本。</span> 好了,</span>CLI</span> 派的朋友可以收我做盟友了</span></font></font></p>

 </font></span></font></p>

        你说我是</span> CLI</span> 的老古董?我的</span> FVWM</span> 被我配置为可以</span>"</span>手写操作</span>"</span>,我只要画一个</span>"r"</span>就可以启动</span> rxvt</span>,我只要画一个</span> "U"</span> 就可以启动</span> GVIM</span>,……</span> 我用</span> GVIM</span> 语法加亮模式编辑程序,我用</span> Mozilla</span> 浏览网页,……</span> GUI</span> 派的现在好像认我做朋友了</span></font></font></p>

        好了。</span>CLI</span> 派的朋友,虽然我很喜欢命令行,但是我有时在屏幕上左右画一下就可以执行</span>:</span></font></font></p>

         Module FvwmConsole -terminal rxvt -geometry 45x5-0+0 -bg gold -fg midnightblue -fn "-adobe-courier-medium-r-*-*-14-*-*-*-*-*-*-*"</font></span></font></p>

       你是不是现在又想把我逐出师门?</span></font></font></p>

       GUI</span> 派的朋友,虽然我很喜欢窗口。但是我可以在</span> FvwmConsole</span> 里输入:</span></font></font></p>

All (rxvt) MoveToDesk</font></span></font></p>

       把我所有的</span> rxvt</span> 移动到我现在工作的桌面。</span>"</span>这家伙,怎么这么快就叛变了!</span>"</span></font></font></p>

       其实何必分什么</span> GUI</span> 和</span> CLI</span>,</span>UNIX</span> 和</span> Xwindow</span> 都是工业标准,它们从设计那天开始就有非常灵活的用法,各个程序,不管是</span> GUI</span> 还是命令行的都可以互相协作。</span>UNIX</span> 和</span>X</span> 是一家,何必搞的那么偏激,非此即彼?你从我上面的行为可以看出</span> GUI</span> 和</span> CLI</span>的模糊界线吗?我就是坚定不移的</span>"</span>两面派</span>"</span>。</span></font></font></p>

UNIX</span> 是简单的</span></font>—</font></span></font></p>

       "</span>我相信简单就是最好,如果太复杂,我是不能理解的。</span>" -Seymour Cray</span></font></font></p>

        很多第一次用</span> Linux</span> 的人会惊奇的发现,</span>Linux</span> 的程序居然不</span>"</span>安装</span>"</span>就可以运行,程序拷贝到随便那个目录都可以用,而不是一定要占用你第一个分区的空间。程序的设置只是一些简简单单的文本文件。你根本不需要什么</span>"</span>注册表修改器</span>"</span> 就可以改变系统的设置。这就叫做简单,但是简单就是美。虽然这只是</span> UNIX</span> 简单性的一个肤浅的认识,你已经体会到了某些东西。</span></font></font></p>

        但是简单并不意味着功能弱,并不意味着落后。相反,简单意味着强大,意味着生命力。</span></font></font></p>

        我不会再继续阐述我理解到的</span>"UNIX</span> 的简单</span>"</span>,因为这个需要自己去体会。</span></font></font></p>

UNIX</span> 是永恒的</span></font></font></p>

        有人说:</span>"Plan9</span> 会取代</span> UNIX</span>,</span>Mach</span> 会取代</span> Linux</span> 内核。</span>"</span></font></font></p>

        但是你如果是一个深入体会了</span> UNIX</span> 的人,你就会知道:</span>UNIX</span> 的思想是永恒的,不管时过境迁,</span>Plan9</span> 是否代替</span> UNIX</span>,</span>UNIX</span> 的灵魂都会在</span> Plan9</span> 身上现形!</span></font></font></p>

        我为同一个设备写过</span> Linux</span> 内核和</span> Windows VxD</span> 驱动程序。写</span> Linux</span> 驱动程序时,我对</span> UNIX</span> 设计的完美的一致性,远见性所折服。</span>UNIX</span> 用同样界面的</span> read(), write()</span>系统调用就可以对不同的对象:普通文件,设备文件,管道,管道文件,</span>socket</span>,……进行统一的读写操作。我跟本不需要写一个测试用的应用程序就可以对我的设备驱动进行测试,因为</span> cat, cp, dd,</span> 它们也使用了同样的</span> read(), write()</span>,设备和普通文件在应用程序眼里没有区别。在那个还没有</span> Smalltalk,</span> 没有</span> C++</span> 的年代,</span>UNIX</span> 的设计者已经使用了所谓的</span> "</span>面向对象方法</span>"</span>。对,</span>C</span> 语言也可以实现面向对象。</span></font></font></p>

        UNIX</span>的系统调用几十年都没有很大变化,这非但不是顽固,不进步的象征,反而是</span>UNIX</span> 的远见卓识的体现!这就跟</span> TeX</span>程序几十年都不变的情况差不多。这些才是真正的永恒的</span> master piece!</span>你应该改变所有软件都必需从</span> 0.1, 1.0, 1.1, 1.2, 2.0, ..., 3.0, 3.1,95, 98, 2000, XP, ...</span> 不断升级的想法。</span></font></font></p>

          Windows</span> 就不同了,它在最开头只是一个</span> DOS</span>之上的图形包装而已。后来为了兼容以前的糟糕设计,不得不加上很多累赘。我写</span>VxD</span> 驱动程序的时候就深有体会,</span>Windows 95</span> 程序对设备的操作只有用</span>DeviceIoControl</span>,我不得不写了两个应用程序来对设备驱动进行测试。</span>Windows</span>内核的不一致性和隐密性使我非常恼火。不过</span> Windows WDM</span>驱动程序现在也有了</span> ReadFile, WriteFile</span>,……</span> 那说明什么?那说明</span>Windows</span> 在向</span> UNIX</span> 学习,或者有可能是某个</span> UNIX</span>设计人员在微软打了几天临工,顺手加了几个</span>UNIX</span>的东西进去。这样做是没有用的,</span>Windows</span>从一开始就是非常糟糕的设计,它的历史的包袱太沉重了,缝缝补补有什么用?它只能永远的被</span>UNIX</span> 甩在身后!</span></font></font></p>

UNIX</span> 是强大的</span></font></font></p>

       让聪明人干任何他们想干的事情。</span></font></font></p>

       UNIX</span> 的一个特点就是非常高的灵活性,</span>Xwindow</span>也具有这种灵活性。这种灵活性体现在哪里呢?</span></font></font></p>

        UNIX</span> 的程序一般都有很多参数,不管你现在用的着用不着,总有人需要某些参数。它们的行为很多都可以用配置文件来改变。比如</span>GNU bash,</span> 通常缺省的命令行输入方式是</span> Emacs</span> 方式,但是只要我编辑一个</span>.inputrc</span> 文件,就可以把它变成</span> vi</span>的输入方式,而且我还可以自己绑定键序列到某些操作。我可以用</span> shopt</span>来设置它的很多特点,比如是否进行通配符扩展,是否可以把一个变量当作一个目录来</span>cd</span>,是否可以自动纠正某些明显的目录名打字错误……</span></font></font></p>

       UNIX</span>程序设计的思想是提供给用户“机制”,而不限制用户制定“政策”。这是一个重要的尊重用户的作法。</span></font></font></p>

 </font></span></font></p>

        我们再来看看</span> Xwindow</span>。</span>Xwindow</span>是一个出色的设计,它把显示服务器和客户程序分开。一个显示上既可以显示本机上的程序,也可以显示别的机器上的</span>X</span>程序,而它们都遵守你的窗口管理器的统一指挥,它们之间可以方便的传送剪贴版数据,各种事件……</span> 比如有时我的</span> XFree86</span> 上会出现四个不同机器上的</span>XTerm</span>,两个不同机器上的</span> GVIM</span>,……</span> 它们统一受本机上的</span> FVWM</span>指挥。</span></font></font></p>

       Xwindow</span> 程序都具有很多很多命令行参数和</span> resource</span>参数。你可以随意的在命令行或者</span> .Xdefaults</span>文件设置所有的颜色,字体,尺寸……</span> 而且如果你用</span> xrdb</span> 把</span> .Xdefaults</span>导入到根窗口,那么其它机器上没有经过配置的同样的程序,显示到你的机器上的时候也会遵守同样的外观规定。</span></font></font></p>

          Xwindow</span> 的窗口具有</span> Property,</span>也就是一些可以自己定义的共享数据</span>(</span>原子</span>)</span>。正是因为这些</span> Property</span>的存在,使得</span> Xwindow</span> 具有无比强大的生命力。</span>X</span>的窗口管理器和其它客户程序之间并没有统一的协议,但是后来出现了</span>ICCCM(</span>客户程序间通信规范</span>)</span>,这个规范就是通过</span> property</span>定义的。现在又有人定义了一套“扩展的窗口协议</span>(EWM Hints)</span>”,使得</span>Xwindow</span> 可以具有某些</span> Windows</span> 的特征,比如一个工具条程序可以告</span>诉窗口管理器:“这个屏幕下面被我占据了</span>24</span>个像素的空间,你最大化程序的时候不要越过这个界线。”</span></font></font></p>

         一个强大的窗口管理程序比如</span>FVWM</span>,它收到这样的提示时,可以答应工具条程序的这个要求,也可以不答应。一切选择的权力在于谁?当然是用户了!</span></font></font></p>

      你想想,是不是有些</span> Windows</span> 程序常常弹出一个窗口要你选择</span> "Yes orNo"</span>?你不点击它它就不下去。你觉不觉得你的程序在侵犯你的尊严?你是一个人,一个智慧的生物,怎能受到一个程序如此的待遇?</span></font></font></p>

        还有就是很多</span> Windows</span>程序把人当成傻瓜,而它是“智能程序”。比如,有一个程序就是喜欢把你的每句话第一个字母都变成大写,我不说它是谁了,你遇到的时候就知道了。</span></font></font></p>

       如果连“一句话开头一个字母要大写”这么明显的问题都需要程序帮你纠正的话,人脑还用来干什么?况且如果你故意想要不大写的话,那就更麻烦了,我楞是没有从它那一大堆菜单里找到怎么关闭这个愚蠢的选项。</span></font></font></p>

只有符号才能完全操纵计算机</span></font></font></p>

        我们来说说很多初学</span> Linux</span> 的用户。虽然他们在用</span> Linux</span>,但是他们打心眼儿里是觉得</span> Windows</span> 的工作方式好,他们希望</span> Linux</span> 有一天能</span>"</span>像</span>Windows</span>那样</span>"</span>。你说:</span>"</span>我鼠标一点,我菜单一拉,</span>......</span> 就可以完成我的操作。</span>"</span> 但是我要告诉你:</span>"Linux</span> 从来没有摹仿</span> Windows</span>,将来也不会。</span>Linux</span> 从诞生之日起,它的工作方式就比</span> Windows</span> 的先进。</span>Linux</span> 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。</span>"</span></font></font></p>

       看看优秀的</span> UNIX</span> 程序,</span>XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget,tin, ...</span> 没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置</span>?</span>难道它们的设计者就那么低能,连个图形配置界面也写不出来</span>?</span></font></font></p>

       当然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达能力却是无限的。用图形界面配置这些程序的话,如果你想达到配</span> 置文件的效果,你需要成百上千的菜单,</span>checkbox, radio button, ...</span> 到时候你根本没办法找到你需要修改的地方了</span>!</span>而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设置一些变量,参数,</span>......</span> 一旦用会了一个,其它的也就容易理解了。如果你用惯了</span> awk, sed, Perl</span>,你会觉得那才是真正的自动化啊。</span></font></font></p>

        鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全明白你的意思,它毕竟只有</span>3</span>个按钮。看看我的</span>MetaPost</span>页你就能体会到鼠标的这一弱点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。</span></font></font></p>

各个小程序的完美配合</font></span></font></p>

     这就是</span>UNIX</span>最重要的特点了,它就是</span>UNIX</span>设计的思想。让每个程序只具有一项专门的能力,然后让它们合作。</span>Xwindow</span>也继承了这种好传统。</span></font></font></p>

        这恐怕就是</span>Windows</span>和其它操作系统望尘莫及的地方了。</span>UNIX</span> 程序设计之统一,配合之完美,真使我难以置信</span>!shell, grep, find, awk, sed, make, Perl,Emacs, vi, tin, Mutt, ...</span> 它们是那么的具有一致性</span>!</span>你一旦学会了</span> sed</span> 的正则表达式,其它程序基本上都能用了。你一旦学会了</span> vi</span> 和</span> VIM,</span> 你会发现它的操作是那么的有规律性,似乎</span>vi</span>的设计者在几十年前就已经设计好了</span> VIM</span> 在今天的完美而统一的操作方式</span>!</span>而且</span>vi</span>的操作还体现在</span> Mutt, tin</span> 等很多程序中。你甚至可以把</span> bash</span> 设置为</span> vi</span> 的输入方式来输入命令行,我就是这么做的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可以在自己的窗口里</span>"</span>嵌入</span>"</span>另外一个程序。</span></font></font></p>

       在</span> Windows</span> 和其它非</span> UNIX</span> 操作系统中,这种合作是非常困难的。我曾经在</span>Windows</span> 下使用</span> Perl</span>来进行一些自动工作。但是</span> Windows</span> 的文件操作,管道是如此的不稳定,程序之间基本不能合作。你别想在</span> Visual Studio</span> 窗口里面嵌入</span>UltraEdit</span> 编辑器,你别想用一个</span> expect</span> 脚本来控制</span> telnet</span> 到水木清华</span>BBS</span>,这就是为什么</span> helloooo</span> 诞生在</span> Linux</span> 而不是</span> Windows</span>。我曾经试图从</span>Windows + Exceed + SecureCRT ssh</span> 登录到</span> Sun</span> 机器,然后通过</span> ssh</span> 的隧道</span>(X11 tunnel)</span>把</span> X</span> 程序传到</span> Exceed</span> 上运行,但是搞了两天都没有成功</span>!</span>而在</span>Linux</span> 下这个事情根本就是不用怎么配置的,</span>OpenSSH</span> 和</span> XFree86</span> 本来就是完美结合,只要打开</span> ssh</span> 的</span> "forward X11"</span> 选项就什么都搞定了。</span></font></font></p>

       Windows</span> 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自己发送和收取邮件,自己显示邮件的附件。每一个</span>BBS</span>程序都提供自己的</span> Virtual Terminal,</span> 自己的通讯代码。每一个</span> IDE</span> 都自己提供编辑器,编译器,汇编器,调试器。人们为了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器的键绑定,菜单组织</span>......</span> 不能</span> DIY!</span></font></font></p>

       你要知道,最高级的电脑是定做的,自己想要什么什么</span>CPU</span>,什么主板,多少内存,什么硬盘,键盘,鼠标,显示器都是自己选择的。最高级的滑板,自己想要什么牌子的版面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的乒乓球拍,木板,胶皮,海绵,胶水都是可以自己选择</span>......</span> 而用</span>Windows</span> 程序,你得到的是大杂烩,就像你去买</span>"</span>品牌机</span>"</span>,只有那么几种配置,而且附带很多你不需要的软件和服务</span>;</span>就像你去买组装好的滑板,你想要大一点的轮子和窄一点的板子,但是你没有这种选择余地</span>!Windo ws</span> 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新买全套配件</span>!</span></font></font></p>

       而</span> UNIX</span> 和</span> Xwindow</span> 就是高档的</span>"</span>组装货</span>"</span>。比如我用</span> Mutt</span> 的时候,我可以用</span>VIM</span> 也可以用</span> pico</span> 来编辑邮件,我可以用</span> ImageMagick</span> 也可以用</span> xv</span> 来显示附件里的图片,我可以用</span> lynx</span> 把</span> HTML</span> 附件转成文本嵌入窗口中,我也可以把</span>HTML</span> 附件交给</span> Mozilla</span> 图形显示。我可以让</span> GnuPG</span> 帮我把邮件进行数字签名和加密,我也可以用其它</span> PGP</span> 程序。我想让</span> Postfix</span> 而不是</span> sendmail</span> 帮我发出邮件,我想让</span> fetchmail</span> 帮我收邮件,转发给</span> postfix</span>,然后被我自己写的</span>Perl</span>过滤器处理</span>......</span> 这一切我都可以办到</span>!</span>我可以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以分别得到它们的好处。</span></font></font></p>

结论</strong></font></span></font></p>

       我写这么多的目的是什么</span>?</span>我希望喜欢</span> Linux</span> 的朋友,完全清除微软和</span>Windows</span> 灌输在你脑子里的谬论,别再相信它们所谓的</span>"</span>新技术</span>"</span>,别再追赶</span>Windows</span>,因为追赶</span> Windows =</span>倒退。马克思有一个思想很重要,</span>"</span>新生事物并不一定是在最近出现的。</span>" UNIX</span>,</span>Xwindow, TeX</span> 虽然都比</span> Windows</span> 先出现,但是它们才是先进生产力的代表。我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。</span></font></font></p>

       勇敢的拿起像</span> bash, FVWM, VIM, Emacs, Mutt, lftp ......</span> 这样强大的程序,不要再埋怨</span>"Linux</span> 为什么不能像</span> Windows</span> 那样</span>"</span>,不要再浪费时间试用这样那样的程序,不要再忙着升级。是你需要改变而不是</span> Linux</span> 和</span> UNIX</span>,</span>Linux</span> 现在就可以成为你的好朋友。你需要认识它,了解它,信任它,才能完全的靠它来高效的工作,省出时间来处理世界上更加值得处理的事情。</span></font></font></p> </div> </div> </div>