完全用 GNU/Linux 工作_完全用gnu/linux工作-程序员宅基地

技术标签: linux  emacs  windows  microsoft  微软  unix  GNU/Linux  

 完全用 GNU/Linux 工作
— 摈弃 Windows 低效率的工作方式,发掘 Linux 身上的 UNIX 气质
我已经半年没有使用 Windows 的方式工作了。Linux 高效的完成了我所
有的工作。

GNU/Linux 不是每个人都想用的。如果你只需要处理一般的事务,打游
戏,那么你不需要了解下面这些了。

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

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

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

UNIX 不是计算机专家的专利
当我建议一些非计算机专业的人用 Linux 的时候,很多人说:“UNIX 是
计算机系的人用的,我们不能理解。” “UNIX 是男孩用的,我们女孩不用。”

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

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

理解 GNU/Linux
不要用 Windows 的标准来要求 Linux。

由于GNU/Linux这个词太长,下面如果没有特别指明,“Linux”就是指
“GNU/Linux”。

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

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

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

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

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

Unix 是简单的,你不需要成为一个天才也能理解这种简单。

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

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

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

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

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

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

Windows 笼罩下的中国计算机教育
说句丢脸的话,比尔盖茨很久以前是我的偶像…… //blush

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

嗯,你现在已经是上层阶级,白领人士了。你现在可以像这样“自由”
的,“安全”的生活了:


为什么要反对使用 Windows
很多人都说不应该完全否定 Window,Windows 也有它的长处。不应该骂
微软。

对。Windows 容易操作,适合普通用户。如果微软把它自己定位在 P&G,
Philips 那样的地位,能够给我们的百姓提供周到的,完善的,价廉物美的服务。那我
肯定是很喜欢它的。

但是从上面的种种情况说明,微软是一个野心极大的国际垄断组织!它的
产品没有一个是不出问题的:Windows 不稳定,容易中病毒,而微软不为大家免费提供
杀毒软件。我就是要让你们花钱买我的朋友 Symantec 的杀毒软件,谁叫你们已经上了
我的贼船?这叫什么售后服务啊!

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

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

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

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

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

什么是 Windows 能干而 Linux 干不了的事情?
“Windows 能干而 Linux 干不了的事情,那就是不需要干的事情。”

有个朋友看我半年没有用 Windows,有时就会问我:“你只用 Linux,有
没有发现有些 Windows 能处理的事情 Linux 干不了?”

我回答说:“Windows 能干而 Linux 干不了的事情,那就是不需要干的
事情。”

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

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

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

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

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

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

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

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

Windows 能做的那些没用的事情 Linux 永远做不好
电脑游戏
有些人说 Linux 下不能玩 Windows 下所能得到的所有游戏。的确,
Linux 下虽然也有少量的游戏,比如 Quake。但是它没有 Counter Strike, 没有 Star
Craft, ……

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

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

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

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

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

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

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

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

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

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

高明的 UNIX 程序员不用 IDE,IDE 从来就是给初级 Windows 程序员用
的。

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

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

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

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

Linux 能干的高精尖的事情 Windows 都干不了
当然有很多事情是Linux/UNIX的专利了。因为 Windows 只能装在 PC 机
上,好像以前也有 Alpha 可以使用 Windows NT,但是就是没见到有人用。PC 机的能
力是很低的,像我们编程序处理 NP-Hard 问题的人,用 Windows 的机器显然速度不
够,而且有时一个问题算上几天甚至几个星期,Windows 机器是以“死机”著称的,我
们怎么能放心?

所以几乎所有科学计算程序,EDA 程序,高性能图像处理程序都不是
Windows 的。他们有时也会移植一些给 Windows,但是常常降低那些程序的能力。你比
较过 Windows 版本的 Mathematica 和 Linux 的有什么区别吗?

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

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

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

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

其实你知道了,Windows 没有一样有用的事情能比 UNIX 干的更好。

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

不要把Linux和Xwindow掩盖起来!
不要把我们的用户当成傻瓜。

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

“好了。你知道 Windows 是垃圾,你现在用什么?”

“Linux + Xwindow”

“那我问你,Xwindow 是什么样的?”

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

“你知道什么是‘根窗口’吗?”

“不知道。从来没听说过呢?”

“根窗口就是遮盖整个屏幕的那个最大的窗口。”

“哪儿有什么窗口啊!我没有看到呢?”

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

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

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

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

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

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

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

GUI vs. CLI
做一个坚定不移的“两面派”

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

GUI派用户:“哇!我一看你这小子就是 CLI 的。要不然自己写什么
Makefile?用什么 Mutt?”

CLI派用户:“切~ 你还用 X!高手都不用 X。你是 GUI 那边的。”

可怜的我:“555~~ 你们都不要我~~ GUI 和 CLI 就那么水火不容吗
?”

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

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

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

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

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

Module FvwmConsole -terminal rxvt -geometry 45x5-0+0 /
-bg gold -fg midnightblue /
-fn "-adobe-courier-medium-r-*-*-14-*-*-*-*-*-*-*"
你是不是现在又想把我逐出师门?

GUI 派的朋友,虽然我很喜欢窗口。但是我可以在 FvwmConsole 里输入

All (rxvt) MoveToDesk
把我所有的 rxvt 移动到我现在工作的桌面。“这家伙,怎么这么快就叛
变了!”

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

UNIX 是简单的
“我相信简单就是最好,如果太复杂,我是不能理解的。” —Seymour
Cray

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

但是简单并不意味着功能弱,并不意味着落后。相反,简单意味着强大,
意味着生命力。

我不会再继续阐述我理解到的“UNIX 的简单”,因为这个需要自己去体
会。

UNIX 是永恒的
有人说:“Plan9 会取代 UNIX,Mach 会取代 Linux 内核。”

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

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

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

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

UNIX 是强大的
让聪明人干任何他们想干的事情。

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

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

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

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

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

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

一个强大的窗口管理程序比如 FVWM,它收到这样的提示时,可以答应工
具条程序的这个要求,也可以不答应。一切选择的权力在于谁?当然是用户了!一切窗
口乖乖听话,FVWM 给予用户最大的尊重。

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

还有就是很多 Windows 程序把人当成傻瓜,而它是“智能程序”。比
如,有一个程序就是喜欢把你的每句话第一个字母都变成大写,我不说它是谁了,你遇
到的时候就知道了。如果连“一句话开头一个字母要大写”这么明显的问题都需要程序
帮你纠正的话,人脑还用来干什么?况且如果你故意想要不大写的话,那就更麻烦了,
我楞是没有从它那一大堆菜单里找到怎么关闭这个愚蠢的选项。

只有符号才能完全操纵计算机。

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

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

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

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

各个小程序的完美配合

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

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

在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾
经在 Windows 下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是
如此的不稳定,程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入
UltraEdit 编辑器,你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。

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

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

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

学 UNIX 绝对不是浪费时间
有人告诉我:“你看我用 Windows 什么都不用学。而用 Linux,光是安
装就花了我一个星期!”

首先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不
好装,而是因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最
初安装 Windows 的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什
么是目录?你认为 Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但
是你以前在用别人的机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux
和 Windows 并存于硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux
用户的帮助,否则他们会在 20 分种之内帮你搞定。一个星期也太夸张了 

如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过
windows,你肯定会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ...
是不是?如果你只用过 Linux,你第一次用 windows 时恐怕也会问:“/bin 目录哪里
去了啊?”

最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容
易变化或消失。你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,
而且可以完全模拟你现在的工具。

我们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以
前的经验绝对没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初
发行而诞生,直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用
了 10 多年,现在完全不经修改还可以用。

看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环
境:菜单不同了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参
数,调试器功能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适
应了 VC, 你又要换成 VJ, PowerBuilder, C++Builder, ...

很多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland
C, VC, C++ Builder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET ……
什么都在不断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚
又重的 Microsoft Press 的书籍,看了才一个月,又过时了。今天你才学会了写
VxD,明天你就必须用 WDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很
多人说:“计算机是贵族的专业。” 这就是微软一手造成的。

这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我
们为什么不使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。
UNIX 的工具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都
在同样的位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己都
可以修车了。这难道不好吗?

有人说:“你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结
构吗?” 你去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来
的。你难道想要傻瓜型的“微软牌汽车”吗?我们来看看:

你买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付
钱。车上的防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每
过一年要换一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新
型号的机油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理,你必
需到微软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。

最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同
的位置,你需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也
不能状告微软汽车公司,因为你买来汽车之后必须签一个合同,说“由于微软牌汽车对
你和家人造成的一切死伤,微软概不负责。”

怎样完全用 GNU/Linux 工作
说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些
必要的事情。

半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到
Win2k 来处理汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处
理汉字了。而且 VIM 和 Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑
的,包括程序,信件,网页,LaTeX 论文,MetaPost 绘图语言。

我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最
好,最方便的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,
用起来很简单,而且效果非常漂亮。你可以看看我的TeX介绍。

至于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来
说,任何可视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我
找到了MetaPost。它简单又好用,而且效果是世界一流的。我的插图,如果不是图像,
都是 MetaPost 画出来的。

我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信
件。后来我发现 mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX
用户都不用这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能
非常强大。

我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的
FVWM。KDE,Gnome 也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某
些部件程序还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌
面环境运行的。

Linux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东
西,但是很差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……

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

消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM,
Emacs, Mutt …… 这样强大的程序,勇敢的面对符号。不要再埋怨“Linux 为什么不
能像 Windows 那样”,不要再浪费时间试用这样那样的程序,不要再忙着升级。你需
要理解 UNIX 的工作方式,因为那是大多数科学家的工作方式。Linux 可以成为你的好
朋友,你需要认识它,了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏
机,手机,掌上电脑里,或者在用电脑来娱乐的时候,用一些“傻瓜软件”还是不错的
 

我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教
育中充分利用 Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用
计算机来解决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的
问题。

附录: 我用来处理日常事务的 Linux 程序
好了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了
微软的邪。但是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务
的辅助而已。你以前选错了工具,这不要紧。你还是拥有你自己原来的专业技能,那才
是最重要的。工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意
思,甚至放弃。

如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自
己的任务,那就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系
统和网络管理员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢谢你的指点和帮助
 不用把你的机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已
经足够了。这样会省去了解很多没必要了解的东西的时间。不用过度考虑“安全”,因
为 Linux 缺省已经很安全了。不过你有兴趣了解更多那也无妨。

下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用
到的科学和工程软件比如 Matlab, Mathematica, Maple, HSpice, Design
Compiler, …… 还有其它物理上的,化学上的,生物上的 …… 都必然有 Linux 和
UNIX 的版本。当然他们很多不是免费的,不要总是觉得什么都应该免费,自由不等于
免费。它们是经过很多人辛勤劳动的产物,是可靠的程序,它们物有所值。

下面列出我常用的一些 Linux 程序。一个列表里可能有很多,那是为了
方便你来选择,我列出了比较信得过的。但其实很多只有第一个是我真正在用的,我不
喜欢试用程序。我不是一个合格的网络管理员,我的服务器都只设置了我自己需要的功
能,那样可以省去我很多麻烦 

Shell: bash。它结合了 csh 和 ksh 的优点,并且有 readline 功能,
你可以随意绑定自己的键盘。
编辑器: VIM, Emacs。
程序开发: GCC, make, ld, Scheme48, j2sdk, Perl, Python, Tcl/Tk
...
论文,幻灯工具:LaTeX, ConTeXt
绘图工具:MetaPost。这个语言太强了,以至于我只用它了。你不熟悉的
话可以用 xfig, dia 来画一些流程图之类的图片。
图像处理:ImageMagick。其中的 import 程序可以屏幕抓图,convert
程序可以转换图像格式,display 可以显示图片和简单编辑(缩放,换质量,转格式,
简单绘图,简单虑镜)。通常我就这么点需要。如果你要更强大的图像工具可以用
Gimp, 它几乎和 Photoshop 差不多。
自动管理工具:make。我可以用make来自动编译程序,自动编译文档,自
动更新插图…… 全自动,而且不会重复劳动。
数值计算程序:SciLab。这个程序基本上可以代替 Matlab。
代数计算程序:MAXIMA。这个程序基于世界上最老的计算机代数系统之一
: 由美国能源部(DOE)发行的 MIT Macsyma 系统。它是用 Common Lisp 实现的。很多
现在的符号计算程序比如 Maple 都从 MAXIMA 身上学到很多东西。它现在经过 DOE 批
准以GPL发行,永远是一个自由软件。
加密程序:GnuPG。我的 PGP 密钥就是它搞出来的。
打包,压缩程序。什么都有: tar, gzip, bzip2, zip, rar, ...
虚拟光驱程序。Linux 不需要虚拟光驱程序,直接 mount 就行了。
ftp 服务器:proftpd, vsftpd。proftpd 功能很强,但是我只用了最简
单的一种设置。
WWW 服务器:apache。(我一般没有开)
ftp 客户程序:lftp,ncftp。它们都是文本方式操作的,但是比起图形
界面的方便的多。比如 lftp 几乎具有 bash 的所有方便功能,Tab 补全,bookmark,
queue, 后台下载,镜像…… Linux 也有图形界面的 ftp 客户程序,但是大多不稳
定,有很多问题。这就是很多人抱怨 Linux 不如 Windows 的一个小原因。还有很多人
用 Wine 模拟 Windows 的 leapftp,其实 lftp 比 leapftp 好很多,你需要的只是适
应一下。
自动下载工具:wget。它非常稳定,有一次我下载一个程序,用 IE 和
Mozilla 下载回来的文件都是坏的,最后还是 wget 可靠的传输了数据。用它甚至可以
镜像整个网站,比起 WebZip 这样的 Windows 程序强多了,而且不会因为你不付钱就
在下载回来的网页里强制插入广告。
虚拟终端:rxvt, xterm, gnome-terminal, mlterm, ...
X server: XFree86
窗口管理器:FVWM。编译加入了 libstroke。
中文输入:XSIM。被我修改过以适应 FVWM 的需要。另外推荐你还可以用
SCIM。
email 处理:Mutt + Postfix + fetchmail
看 PDF, PS, DJVU 文件:Acrobat Reader, xpdf, GhostScript, gv,
djvu工具包和 netscape 插件。
看CAJ文档。我从来不看CAJ之类的文档,如果找不到PDF或PS,直接去图
书馆借最好。
看网页:Mozilla, Phoenix, lynx。Mozilla-Xft 的显示效果比 IE 好很
多。
英汉字典:IBM智能词典,星际译王。
编辑网页:我用 VIM 直接写 HTML。你如果想要图形方式的可以用其它的
比如 screem, BlueFish。
登录其它 UNIX, Linux 机器:openSSH, telnet。 我喜欢用 openSSH 把
其它机器的 X 程序通过 ssh 加密的隧道传到我机器上显示。
登录 Windows2000 server 的 display service: rdesktop,...我有一
天试了一下,不错。后来就没有用过了。
同步程序:rsync。我用 rsync 通过 ssh 来跟某些机器同步数据,或者
做自己机器上不同目录间的同步。
上BBS:rxvt(或任何一种终端) + telnet + chatbot(helloooo 机器人的
程序)
QQ, ICQ: 我没有 QQ 或 ICQ。不过你可以用 Gaim, 它同时支持 QQ, ICQ
和很多其它的即时通信方式。ICQ 用户也可以用 Licq。
放录像:MPlayer, RealPlayer。MPlayer 太好了,直接就可以放 VCD,
DVD, divx, wma, wmv ... 用 Windows 的同学都很羡慕我,说 Windows 要放这个需要
大堆插件。rm 最好还是用 realplayer 放,它也是免费的。
放音乐: xmms(mp3,ogg都可以), mpg321(放mp3), ogg123(放ogg)。
mpg321 不如 xmms 管理音乐文件那么方便,但是有时我还是用 mpg321 放 mp3 作为背
景音乐,因为懒得开一个xmms窗口 
游戏:我觉得 KDE 的那个 ksokoban(推箱子),很好玩 
看 Word 文档。请 Word 用户把文档全部转为 PDF 或 PS 再给我,文档
里没有特殊的格式干脆就用文本吧,何必那么麻烦。以前很奇怪的是,通知里本来没有
什么特殊的格式居然还要发doc附件的email。现在好了,我们系发通知都用文本,
PDF,甚至图片了
其它程序:还有很多我需要用而你不一定用得着的。比如,Doctor
Scheme, Scheme48, Scsh, kawa...这些程序只有 Doctor Scheme 有Windows版本。还
有很多幕后工作但是你一般不察觉的:xinetd, telnetd, sshd, crond, atd, lpd,
... 他们都比 Windows 的对应者强的多,或者根本没有对应者。

我来批《完全用GNU/Linux工作,摈弃Windows》
作者:万老师 [杭电软件学院院长] [发布时间:2003-9-27 21:56:07]

  饶有兴趣地看完《完全用GNU/Linux工作,摈弃Windows》,这真是一篇很有趣
的文章,也是一篇很有鼓动性的文章,但读完以后,却促使我站到Windows的立场
上,对该文从技术角度做一批判。

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

  [批复]微软的名声在哪里都不好,这是众所周知的,其实用不着打出“欧洲和
美国的大学”或什么“教授、专家”的幌子。什么是“真技术”,泥水匠砌砖头都
是技术,要批别人没技术,作者首先得拿出“技术”的定义来。至于“专靠在落后
国家商业宣传和垄断经营的小公司”云云,大谬!微软作为美国本土公司,商业宣
传和挣到的利润大部分都在美国吧。

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

  [批复]计算机科学家不用Windows,再正常不过了,很多从事计算机理论研究
的学者都不用Windows,换句话说,他们根本就不开发软件,也不掌握开发软件的
技术(这并不妨碍他的学术成就),最多写两个小程序验证一下算法,这些人使用
Unix,完全是一种习惯,在PC还没诞生之前,他们就在使用计算机了,可能是大型
机,也可能是小型机,操作系统通常是Unix,他只会用Unix。你要让他们讲出
Windows的技术,他根本就不了解,更谈不上“对Windows的不屑”。

  [原文]连 863 项目都用 VC 写程序了。

  [批复]谁说863项目不能用VC来写程序?用VB的都有,这和863项目要攻关的内
容又有什么关系了?难道只要会用Unix上的cc编译程序就可以申请863项目了吗?

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

  [批复]不光骂微软,这会儿连Borland公司都骂上了。

  [原文]有些同学很多时候上课都捧着一本很重的“Windows 编程大全”之类的
书,根本没有听课。吃饭时就念念有词的跟我说,“代码的优化是无止境的”,“
匈牙利命名法真是伟大的发明” …… 这就是中国很多大学计算机系的情况。

  [批复]代码的优化本来就是无止境的,基于Unix的程序不讲代码优化吗?计算
机系同学不要讲代码优化吗?匈牙利命名法不是单为Windows发明的,MacOS、
Java包括当今Unix上的很多应用程序都用匈牙利命名法,这是商品化软件开发的一
般套路,当然很多理论学者不用去关心它,但计算机系的学生不懂匈牙利命名法就
不行!

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

  [批复]“内存泄漏”和程序设计语言是没关系的,C的程序在Unix上不泄漏,
在Windows上会发生泄漏,这确实是Windows的缺点。

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

  [批复]不管怎么说,我还是坚信对大众而言,“计算机教育”必须强调工程实
践,十三亿人民都是数学家、几何学家,谁来种田给你饭吃。

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

  [批复]相比商用Unix系统来说,Windows便宜得多!

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

  [批复]为什么看“帮助”也学不会?相比Unix中man命令,Windows的帮助内容
要丰富得多。如果有哪位不买几本书看看就会安装并使用Unix,我拜他为师。

  [原文]但是从上面的种种情况说明,微软是一个野心极大的国际垄断组织!它
的产品没有一个是不出问题的:Windows 不稳定,容易中病毒,而微软不为大家免
费提供杀毒软件。我就是要让你们花钱买我的朋友 Symantec 的杀毒软件,谁叫你
们已经上了我的贼船?这叫什么售后服务啊!

  [批复]病毒最初不在Windows系统上发明的,早几年美国最大的一次蠕虫病毒
,造成无数政府机关、军事部门中招,就是Unix上的病毒。我记得我上大学时读过
一本书,整本书讲的就是攻破Unix系统的方法,当时我所在的计算机系运行Unix的
一台Vax-11 785,就被一位二年级的同学搞瘫了。我们感觉Windows的病毒多,是
因为Windows的装机量大,微软的目标大,而不是说Unix就是金钢不坏之身。

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

  [批复]这个不平等条约哪个软件都有,不光是微软的软件。

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

  [批复]我们国家政府部门不只是限制使用Windows系统,还限制使用Sun的计算
机,以及它的Solaris(Sun版本的Unix)。

  [原文]“Windows 能干而 Linux 干不了的事情,那就是不需要干的事情。”

  [批复]强盗逻辑。

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

  [批复]这些软件多数诞生在PC之前,有了Windows后,很多在Unix上的应用系
统都往Windows上移。有些软件是不会移植到Windows的,这一点不错,但不是
Windows没能力,而是运行Windows系统的PC的没有能力,大型应用系统所用的
Unix一般在运行在昂贵的大型机、小型机和图形工作站上,而花几千元钱买的PC已
经大大的物有所值了。就Windows系统来说,它的能力已经大大的超过Unix。现在
最大的问题不是Windows不能干,而是太能干了,微软塞给我们太多不用的功能。
什么软件能不能在某个平台上运行,我认为最大的问题在硬件平台上,比如运算速
度、内存容量、磁盘存储系统或图形加速设备等,和操作系统没有太大的联系。

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

  [批复]Troff、LaTeX、SGML和Word是两个概念,前三者是用一种语言来描述一
个文档,就像用HTML来描述一个网页一样。我们可以用HTML来写一个网页,当然我
们更愿意用FrontPage或DreamWeaver来创作网页,一定要说用HTML语言写网页就比
FrontPage和DreamWeaver好,那就是强词夺理了。其实Windows的RTF文件就是用语
言来描述的,大家可以试一试,用Word写一个文档,存成RTF格式,再用记事本打
开这个RTF文件,可以看到都是格式化的ASCII码文字。用一种语言来描述文档,
Unix做得到,Windows同样也做到了。对于专业印刷级的文档,通行用Postscript
语言,Unix中有解释器,Windows中也有解释器。其实,比较操作系统,不必太关
心应用程序。这篇文章后面讲到的游戏也是如此,Windows的游戏软件比Unix多,
这完全是因为Windows的游戏更有市场,而不是说Unix不能开发游戏软件。作者所
说的“Linux 的用户们都是关心解决世界的关键问题的份子,他们哪里有时间用自
己的机器来玩游戏啊?他们每天用Linux高效的做完自己的工作就到阳光下享受自
然去了”,完全没必要做这种解释,简直是画蛇添足。

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

  [批复]作者不懂操作系统!Unix的文件系统叫i-node,和FAT和NTFS一样,也
是硬盘空间也是一块一块分配的,只要是块分配的,就肯定会造成碎片,谈不上“
越用越整齐”,“越用碎片越少”。i-node的文件管理方式大学教科书就有,不是
什么很高级很复杂的东西,大学生都读得懂,我不相信微软的工程师会读不懂,不
知道吸取其中的优点。如果Unix的机器运行时掉电,启动时同样要Check一番,否
则文件也是会损坏的,这一点和Windows没有什么区别。NTFS的文件权限保护绝对
比Unix高明,Unix只能对三类用户设限(所有者、组、其它),Windows可以对任
何用户和组设限,Unix权限控制只有rwx三种(读、写、执行),NTFS不用我说了
,地球人都知道,比Unix多多了。

  [原文]高明的 UNIX 程序员不用 IDE,IDE 从来就是给初级 Windows 程序员
用的。

  [批复]我就是喜欢IDE。我是从一个Unix程序员成长成Windows程序员,作者说
的cc、make、vi、gdb我都会,但用起来就是麻烦,效率就是低下,IDE多简单,初
级程序员都会,简单有什么过错,能把复杂的东东做简单,那是微软的本事(当然
更是Borland公司的本事)。

  [原文]为什么 UNIX 程序员不用 IDE?明白了这个道理你就能体会到 UNIX 的
设计思想了。首先,一个 IDE 集成了编辑器,编译器,汇编器,调试器,跟踪器
…… 这个编辑器功能肯定比不上 VIM 或 Emacs,编译器比不上 GCC,汇编器比不
上 as,调试器比不上 gdb, ddd, 跟踪器比不上 strace, ltrace, truss。你得到
的是一套整合的低能的程序。

  [批复]我怎么就没觉得IDE的编辑器、编译器、调试器低能了?分散的工具有
哪些在IDE中做不到?

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

  [批复]VC中也用make啊,Unix中make能做的,VC中的make也同样能做到。

  [原文]当然有很多事情是Linux/UNIX的专利了。因为 Windows 只能装在 PC
机上,好像以前也有 Alpha 可以使用 Windows NT,但是就是没见到有人用。PC
机的能力是很低的,像我们编程序处理 NP-Hard 问题的人,用 Windows 的机器显
然速度不够,而且有时一个问题算上几天甚至几个星期,Windows 机器是以“死机
”著称的,我们怎么能放心?

  [批复]这些话说对了,但漏说了一句,PC上用Unix,一些大型应用程序跑起来
一样慢。

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

  [批复]错,不是Linux,而是用Linux的代码针对多处理器重新改写的操作系统
。花几十块钱买一个红帽子来,能支持8000多个处理器才怪。

  [原文]《泰坦尼克号》电影里的三维动画,那么细腻逼真,Windows机器能做
出来吗?不行。那也是 Linux 机器做的。

  [批复]再错,和Linux没关系,和硬件系统中的图形加速设备有关系。有好的
图形加速设备,Windows也能做。

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

  [批复]谁说Unix的程序就不要安装,你去安装一个Oracle试试,一个个目录建
起来、一个个文件拷贝好,一个个配置参数设置好,这是手工安装。VC采用静态链
接也可以编译成一个执行程序,到处拷拷就能用,但这不是一种高效率的做法。
Windows最初的程序设置也是文本文件,就是大家都熟悉的INI文件(现在依然可以
用),用文本文件设置参数远不如注册表简单和功能强大,所以注册表就发明了。
在Unix中要写好配置文件根本就不是件容易的事,注册表有层次型的结构,更容易
表达具有复杂结构的配置参数。

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

  [批复]对设备像文件一样read()和write(),在DOS中就行。

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

  [批复]Unix的系统调用只包含操作系统核心的五个模块:进程管理、作业管理
、内存管理、文件管理、设备管理,还是就一些网络通信的系统调用。这些内容在
Windows中也同样简单,自Windows诞生起也没有发生变化。Unix的系统调用不含图
形用户界面,Windows的系统调用(在Windows中叫API)则包罗万象,当然比Unix
复杂多了。Unix也是在进化的,后面的X Window的API比Windows的GDI简单不到哪
里去。

  文章后面讲到X Window的程序设计是很复杂的,我是先会写X Window的程序,
然后才学会写Windows的程序,对此太有体会了。

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

  [批复]这人不会用Word,自已愚蠢还说Word愚蠢。

  [原文]Linux 从来没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它
的工作方式就比 Windows 的先进。Linux 属于能勇敢面对符号的人。只有符号才
能完全操纵计算机。”

  [批复]“只有符号才能完全操纵计算机”这句话没错,但绝大多数计算机用户
并不想完全操纵计算机,他只要能用计算机来完成他的日常工作就行了,图形用户
界面正是提高他的工作效率的一个天才发明,否则Unix中要X Window做什么?

  [原文]在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我
曾经在Windows 下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管
道是如此的不稳定,程序之间基本不能合作。你别想在 Visual Studio 窗口里面
嵌入 UltraEdit 编辑器,你别想用一个 expect 脚本来控制 telnet 到水木清华
BBS。

  [批复]Windows中程序的合作远远比Unix高明,它是基于OLE技术的,在Unix中
,用UG2做出的工程图纸,在troff、Tex中能插进去吗。Windows中只要两个程序都
是基于OLE,它们之间可以相互连接和嵌入。这一点和Windows和Unix的体系结构不
同有关,Windows完全是基于面向对象技术的,而Unix不是。Unix程序之间的联系
是标准输入/和标准输出来实现的,可以用shell程序(shell有不同的版本,bsh、
csh、ksh,以前我常用ksh,作者用的是bash)组合起来,同样的功能在Windows中
是用wscript。(作者提到的grep, find, awk, sed, make, Perl都是Unix中的文
字过滤程序,这些是Unix中很有特色的东西,它们在Windows中也可以找到相应的
版本,如果找不到,则拿它们的源程序重新编译一下就行了,Perl现在常用来写网
页。但这些工具绝对是专家级的,是计算机专家们搞出来的东东,不是给普通用户
用的,家庭用户谁懂得正则表达式)。

  这篇文章我读得也累了,还有很多文字我也懒得批判了。前面我说这篇文章的
鼓动性很强,因为它代表了一种情绪,一种不分青红皂白谩骂微软的情绪。我对这
篇文章进行批判,并不意味着我就是在吹捧微软公司,要说微软的毛病,随随便便
可以说出一大堆,我批这篇文章,是因为文章有那么多错误的小辫子,我对揪小辫
子历来有兴趣。我从大学二年级到硕士毕业,都是在Unix开发软件,生平只读过两
个商品化软件的源代码,一个是Unix,另一个就是Unix上的Spice(这篇文章中也
有提到),对Unix有深厚的感情。最初我在DOS下开发软件时,对DOS是恨之入骨,
性能太差了,其实当时的PC,只能运行DOS,后来用Windows 3.1,还是不行,问题
主要出在Windows 3.1的内存管理上(分段式管理,不是平板式内存,给写程序带
来很大的麻烦),在Windows 95以后,Windows基本上令我满意了,反而觉得在
Unix上开发基于X Window的应用是那么的原始。相比Windows来说,Unix比较简洁
、干净,比较适合专业人士玩,但并不适合大众使用,当然Unix/Linux上现在也越
来越多花里胡哨的东东,很多我听都没听说过,我常常想,如果Unix这么发展下去
,为了完成Windows应用程序所具有功能,桌面上堆满了图标,一个程序中无数个
菜单和对话框,系统庞大到不可收拾,错误百出,这时的Unix又和Windows有什么
差别呢,到那时没准大家又开始骂Unix了。
 

  一、Unix简史

  从严格意义上讲,Unix不是指一个具体的操作系统,而是一类操作系统的通称
。但在历史上,Unix确实是一个操作系统,但后来逐渐演化了。

  Unix诞生于1969年,是由AT&T公司Bell实验室的两个年轻人Ken Thompson 及
Demmis Rithchie在PDP-7小型机上开发的,最初在AT&T公司内部流传,后来流传
到一些大学和研究机构,得到广泛的应用。为了开发第二版的Unix,发明了C语言
,用高级语言来写操作系统,这是一个创举,由于高级语言的程序具有良好的移植
性(源代码级的移植性),在不同的硬盘平台上,只要用汇编语言写很少一部分和
硬件相关的操作系统代码,操作系统其它部分的代码直接拿来重新编译,这样就可
以构造出一个新的Unix操作系统。正是因为这种良好的移植性,使得Unix在不同硬
件平台均得以实现,从而实现了Unix在操作系统中的霸主地位,这个地位一直影响
至今。

  在Unix不断演化过程中,形成了两个主要的流派:System V和BSD。System V
主要是一些商业公司的Unix实现,以AT&T公司为代表。BSD是加州大学伯克利分校
开发的Unix系统(这个大学的计算机系代表了美国计算机系的最高水平,它也是以
左派闻名的学校,越战时期是反战的急先锋,关于这一点可以看看《阿甘正传》)
,BSD血统的Unix至今用得很多,比如FreeBSD。

  Unix后来也走上了商业化的道路,各个公司都以System V和BSD为蓝本开发自
已的Unix系统,最著名的有DEC公司的Ultrix(运行在VAX-11机器,VAX-11是
PDP-11的发展,PDP-11又是PDP-7的发展,VAX-11过去杭电有一台)、HP公司的
HP UX、IBM公司的AIX、Sun公司的Solaris。由于Unix的不断分化,带来了严重的
后果,各公司对Unix都有自已的扩展,带来不一致性,造成开发的应用软件移植性
差,在上世纪八、九十年代,形成了两大阵营:UI(Unix国际)和OSF(开放软件
基金会),两大组织都由一些巨无霸的公司牵头(我忘了具体是哪些公司),经常
打架,闹得不可开交(多像今天微软阵营和Linux阵营)。至此,Unix已经不能称
为是一个具体的操作系统了,而是一类相似操作系统的统称,这些冠以Unix名称的
操作系统之间的差距是很大的。

  Unix的商标权现在属于SCO公司,Unix原来是属于AT&T公司的,后来卖给了
Novell公司,Novell又转让给SCO公司,SCO公司是在Intel平台上开发Unix系统最
著名的公司,SCO Unix在国内用得很多。

  二、两个古怪的Unix操作系统

  我用过四个源于Unix的操作系统:1) Ultrix和Cromix,在大学期间课程学习
使用;2)HP UX和Xenix,在硕士研究生期间开发软件所用(博士研究生期间主要是
用Windows了)。Ultrix和HP UX是比较正宗的Unix操作系统,而Cromix和Xenix相
对比较古怪。

  Cromix运行于Cromemco System III之上,Cromemco System III是我国最早引
进的微机(这里讲的微机和PC有概念上的不同,微机是指采用单芯片微处理器的计
算机系统,PC是指个人电脑,Cromemco System III是多用户系统),这个计算机
系统用Zilog公司的Z80做CPU(80年代的工科大学生都会Z80的汇编),内存只有
64K,没有硬盘,用8寸软盘,运算速度奇慢,100多行代码的作业程序要编译10多
分钟。就这样一个简陋的计算机居然可以运行一个Unix的变种—Cromix,而且还是
多用户系统,真是奇迹。但使用起来,Cromix和Unix不是很像,甚至于连操作系统
命令都不一样。

  Xenix在当年可是大名鼎鼎,它是微软公司开发的Unix系统(也是先买来后改
进的),可以在286的PC上运行,由于286的机器能力有限,微软公司在Xenix上对
Unix做了简化,这是一个很好的操作系统,由于DOS的功能较差,当时有一些多用
户应用软件在Xenix上开发。Xenix和一般概念上的Unix系统还是蛮像的。

  三、POSIX

  讲到Unix不得不提到POSIX。由于System V和BSD之间存在着很多差异,各自的
系统调用不同,导致在各自上开发的源程序不兼容。业界的各Unix公司就致力于
Unix的统一工作,形成了POSIX标准,POSIX的意思是“可移植 UNIX 操作系统接口
”,后来标准化组织也接纳POSIX为操作系统的标准。

  POSIX是一个标准,不是一个具体的操作系统,它定义了操作系统的两个界面
:1)程序员界面,即系统调用;2)用户界面,即Shell和一些公用程序,也就是操
作系统命令。由于POSIX是利益妥协的产物,所以这个标准制定得比较宽松,各
Unix厂商在遵循POSIX标准上,依然对Unix系统进行自已的扩充,但POSIX有它的意
义,只要是按POSIX标准定义来开发的软件在源代码级上是可以在各Unix系统上移
植的。

  POSIX是操作系统标准,不单是Unix的标准,所以Windows NT号称也提供了对
POSIX的支持。

  四、Linux是不是Unix?

  Linux是不是Unix,这一个问题很难回答,有不同的说法,我倾向于这样的表
达:Linux是Unix家族中的一个新成员。

  Unix是有版权保护的,而且后来也变得比较庞大,为了在大学中教学方便,有
位教师(我忘了是谁)重新编写代码开发了Minix操作系统,Minix是仿造Unix的一
个小型操作系统,后来大家就知道了,芬兰大学生Linus在Minix的基础上开发出了
Linux操作系统。

  Linux在代码上是独立于Unix的,但它和Unix有历史上的渊缘,第一,Linux也
遵循POSIX标准,并采纳了一些System V和BSD的扩充;第二,Linux直接采用了
Unix上通行的一些应用软件;第三,对程序员和用户来说,Linux和一些Unix系统
的差别并不大于Unix系统之间的差别。所以Linux应该是属于Unix范畴的。

  五、Windows系统的由来

  以下的故事在许多书中都可以看到,比如《硅谷之火—个人计算机的故事》,
《微软的秘密》以及各种Bill Gates的传记。

  Bill Gates在上世纪70年代初为世界上第一台微型计算机“牛郎星”开发一套
BASIC解释器,这个软件的发行直接影响了微软公司今天的作风。第一是Gates对
BASIC语言的情有独衷,今天微软的软件产品中都有BASIC的踪影,VB在操作系统中
有(whost script)、在IIS中有(ASP多数用VB Script来编写)、Office中有(
VBA,宏病毒就是用VBA编写的)、Exchange Server和SQL Server都推荐用VB来开
发。第二是由于当年的BASIC解释器不断被盗版,对Gates的刺激太大,Gates因此
确立了软件是商品的概念,所以他对软件知识产权的保护特别重视,要他开放微软
的软件产品那是要他的命了。

  80年代初,当时是一家小软件公司的微软有幸被IBM公司看中,和其它两家软
件公司一起为即将面世的IBM PC开发操作系统(其中有一个操作系统是当时著名的
微机操作系统CP/M,用在Apple电脑上),Bill Gates在那时表现出商业天才,他
和IBM的合同条款是每一台机器收取一定的软件许可费,同时微软还可以独立销售
操作系统。当时微软还没有开发过操作系统,也是买了一个操作系统原型来改造,
这就是PC DOS(微软自已销售的叫MS DOS),三家软件公司开发的操作系统只有
DOS得到了广泛的应用,随着IBM PC的畅销,Gates就此发家致富了。

  再后来,IBM公司重新设计个人电脑的体系结构,准备推出新一代的个人电脑
--IBM PS/2(这种体系结构的个人电脑在商业上失败了,这又是另外一个故事),
为此IBM公司和微软继续合作开发一套新的操作系统—OS/2,由于Apple公司的新操
作系统MacOS得到广泛的欢迎(这是一个图形用户界面GUI的操作系统),OS/2也准
备采用GUI。而这时,微软的卑鄙行径开始显露了。

  微软公司一方面组成项目组和IBM合作开发OS/2操作系统,另一方面则私自组
织人员为 PC开发Windows,到后来,微软从OS/2项目中不断抽取人员与技术加强
Windows的开发,这件事导致了微软和IBM的决裂。

  Windows从1.0版到2.0版都没有什么影响,但微软有微软的本事,微软的产品
一开始都不好,但锲而不舍,不断推出新版本,最终这个产品变得越来越优秀,加
上出色的商业运作,直至把竞争对手一一打败,这就是众多软件公司害怕微软的原
因。

  1989年,划时代的产品诞生了,Windows 3.0得到了业界的广泛欢迎,后面的
改进产品是Windows 3.1以及Windows for Workgroup(WFW),WFW是一个在
Windows 3.1基础上开发的面向对等式网络的操作系统。

  严格意义上讲,Windows 3.X不是一个操作系统,它是在DOS上加挂的一个GUI
,但它拥有操作系统概念上五大模块中的四大模块,除了文件管理依然采用DOS的
FAT文件系统。Windows 3.X是面向对象的,虽说最初开发应用程序采用的是C语言
,但用C语言写出的程序确实是面向对象的,面向对象的系统并不是说一定要用面
向对象的程序设计语言开发,面向对象更重要的是一种程序设计思想,用C语言同
样可以开发面向对象的软件系统。Windows 3.X后来引入了组件技术,也就是OLE,
即今天所说的Active X技术。

  Windows 95是另一个里程牌式的产品,它已经是一个完整的操作系统,更重要
的是它完成了Windows产品从16位向32位的过渡。就我个人的经验而言,相对
Windows 3.x,Windows 95最让人满意的有两点:1) 32位平板式的内存管理,不再
有Windows 3.x分段式管理的麻烦;2) 抢先式的进程调度,在写程序时不再需要记
得释放CPU的控制权。Windows 95在网络管理上也比Windows 3.x先进许多。

  在此期间,IBM一直独家继续OS/2的开发,使之成为Windows 95的竞争产品,
我看到很多评测文章,普遍认为OS/2 Warp比Windows 95要好,很可惜OS/2没有什
么市场,后来就销声匿迹了。

  Windows NT和后来的Windows 2000则完成了从个人操作系统向网络服务器操作
系统的转换,Windows 2000已经成为一个现代的操作系统。

  六、比较Unix/Linux和Windows没什么意义

  无数的论坛、无数的帖子都在讨论Unix和Windows孰优孰劣,作为一名骨灰级
的网虫,当年我也和一些人在网络上吵得不可开交,现在看来,这种比较没什么意
义。

  Unix和Windows不是一类的产品,Unix诞生于60年代末,70年代中成熟,
Windows诞生80年代,90年代中成熟,两者相差了二十年。Unix代表了经典的操作
系统概念,成为计算机系操作系统课程教学的范本,而Windows则代表了现代操作
系统技术的发展。我不知道很多人认为Unix比Windows先进的观点是从何而来。

  Unix是简洁、优美的,它的思想是构造一个简单而坚固的核心,它并不试图为
用户提供所需的所有软件,但用户所需的所有软件都可以在Unix坚固的核心上开发
。Unix系统中,小至操作系统命令,大至复杂的应用软件,大都是不同的公司、研
究机构,不同的技术人员在后来不断补充的。Windows的思想是为用户提供各类易
用的软件产品,微软试图在操作系统中捆绑各类软件,这些软件功能都相对简单(
微软是不会把Office捆绑进操作系统的),但也可以满足一些基本需求,比如写字
板、媒体播放器等等,IE放入操作系统,纯属商业上不得已,微软在Internet上起
步越晚,为了和Netscape竞争,只有把IE嵌入操作系统中,后来微软如愿以偿了。

  Unix不是采用面向对象技术的,甚至不符合结构化的程序设计思想,它最初起
源于两个高手的作品,体现了软件开发的高超技巧,是一件精美的艺术品。
Windows从一开始就是基于面向对象技术,当然它的组件技术在不断完善的过程中
也带来许多不稳定。Windows比Unix复杂得多,Windows 2000有几千万行代码,有
一大批程序员在开发,这样的一个庞大系统能相对稳定可用,反映微软还是有很高
超的质量控制技术。

  Unix是面向小众的,Unix主要作为主机操作系统,既使是个人用户(或终端用
户),他在Unix上使用软件也是相对单一的,比如工程师用CAD软件从事工程设计
,银行柜台只使用一个信贷系统。当然Unix也可以从事一些文字处理之类的工作,
但troff/nroff以及tex对一般用户而言都太难了。Windows是面向大众的,一般人
很快就可以上手,完成他不同的工作或进行娱乐。当然,今天Unix和Windows都在
拓展应用面,Unix/Linux也在易用性和个人应用软件上不断的发展,Windows则向
网络服务器和应用服务器领域打开市场。

  Unix有浓厚的学术味,熟悉Unix系统的人都觉得自己是技术专家,Unix相对简
单,且源码开放(特别是Linux),技术人员可以读懂源码,甚至改造它。喜欢
Unix的人常常不大喜欢Windows,因为Windows不开放,商业气息过浓,且过于庞大
,无法也没条件从核心上弄通它,技术人员通常不喜欢这样,因为他有一种足不着
地、不踏实的感觉。这很像Windows刚出现时,很多人不喜欢Windows,只是因为他
熟悉DOS,DOS很简单,可以深入核心,可以编写病毒(Windows病毒编写要掌握更
多的知识),于是他就很有成就感。

  就目前而言,Unix和Windows血缘不同,设计思想不同,面向的用户群也不同
,实在没有必要去比较,尤其是拿它们之上的应用程序来比较,应用程序不属于操
作系统的一部分。

  Unix和Windows有一点是相同的,就是它们后面都有强大的商业利益在驱动,
不要以为Linux开放源码,它后面就没有商业利益,等大家都上了Linux的贼船,或
是微软公司关门了,大家再看看吧,我们走着瞧。

  七、X Window和Windows

  X Window和Windows名称中都有Window这个单词,其实两个不是一类东西,
Windows是一个操作系统,X Window不是,它只是一个外挂的视窗系统。

  前面已经提到过,Unix系统致力于实现一个简洁而坚实的核心,Unix自已是不
带窗口系统的,X Window是Xerox公司Palo实验室在Unix系统上实现的一个窗口系
统,通行的版本是11版,也叫X11。

  X Window本身是独立于Unix系统的,当微软的Windows出现后,在Windows上也
有X Window的实现。X Window可以分为X Server和X Terminal两部分,X Server和
X Terminal可以运行于不同的机器上,它们之间通过X协议进行通信。X Terminal
可以是在一台完整的计算机系统上运行的一个程序,也可以固化在硬件中,成为一
个独立的X终端,硬件的X终端只能运行X Terminal软件,不带操作系统,不带磁盘
系统,只有一个显示器和一个键盘,价格相对便宜,这就是瘦客户端的典型。

  和Windows不同,X Window本身是不带控件的(X Windows中叫构件,比如菜单
、按钮之类的组件),开发X的应用程序要用到构件,必须要带toolkit包(过去这
么叫,现在叫什么我就不知道了),刚开始时,toolkit也有两大主流,Motif(多
数公司支持)和OpenView(Sun公司的产品),后来Motif成为标准,现在和
toolkit相当的软件包有哪些,我就不了解了。带上toolkit的X程序设计也是基于
面向对象技术的。

  和Unix/X Window不同,Windows的核心和GUI是密不可分的。Windows也有
Terminal软件,即Windows Terminal Server,Windows终端也可以固化成一台硬盘
的终端,从而实现瘦客户端,在文二路新华书店里,给读者查询用的终端设备不是
PC,都是Windows终端。

  算算今天又写了6000多字,真累。写这篇文章时,不断地回忆起过去求学和工
作的日子,想想也很有幸,从读大学开始,我基本上见证了PC以及PC操作系统的发
展历程。不过有人说爱回忆是衰老的开始,看来我已经老了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/console_zhao/article/details/1117938

智能推荐

【Power Automate】日期格式化函数formatDateTime详细说明及示例_power automate表达式日期-程序员宅基地

文章浏览阅读4k次。【Power Automate】日期格式化函数formatDateTime详细说明及示例_power automate表达式日期

IDEA最常用快捷键汇总+快速写出Main函数_idea写main函数-程序员宅基地

文章浏览阅读1.5k次。IDEA可以说是当下Java程序员日常开发的神器,但是想要发挥这款神器的牛逼威力,必须得熟练使用它的各种快捷键才行。本篇总结下使用IDEA(也就是IntelliJ IDEA )进行日常开发中最常用的快捷键。按经常使用频度,分为必备、常用、一般必备快捷键 功能介绍 Alt + Enter IntelliJ IDEA 根据光标所在问题,提供快速修复选择,光标放在的位置不同提示的结果也不同 Ctrl + D 复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 _idea写main函数

Nacos单机部署和集群搭建_nacos2.2.3集群部署-程序员宅基地

文章浏览阅读2.6k次,点赞3次,收藏5次。Linux和Windows安装Nacos2.0.3一、Windows安装1.1、下载安装包1.2、解压1.3、端口配置1.4、启动1.5、访问二、Linux安装2.1、安装JDK2.2、下载2.3、解压2.4、端口配置2.5、启动2.6、访问三、Nacos的依赖一、Windows安装开发阶段采用单机安装即可。1.1、下载安装包在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:GitHub主页:https://github.com/alibaba/nacos_nacos2.2.3集群部署

pcb设计单点接地示意图_4种PCB设计中的接地方式解析-程序员宅基地

文章浏览阅读2.8k次。GND,指的是电线接地端的简写。代表地线或0线。电路图上和电路板上的GND(Ground)代表地线或0线。GND就是公共端的意思,也可以说是地,但这个地并不是真正意义上的地。是出于应用而假设的一个地,对于电源来说,它就是一个电源的负极。它与大地是不同的。有时候需要将它与大地连接,有时候也不需要,视具体情况而定。设备的信号接地,可能是以设备中的一点或一块金属来作为信号的接地参考点,它为设备中的所有信..._ad pcb单点接地

【微服务】springcloud集成skywalking实现全链路追踪_springcloud整合链路追踪-程序员宅基地

文章浏览阅读7.9k次,点赞129次,收藏119次。springcloud集成skywalking实现全链路追踪_springcloud整合链路追踪

无线传感器网络复习题 | 摘抄自网络-程序员宅基地

文章浏览阅读3.2k次。为什么80%的码农都做不了架构师?>>> ..._cc530 无线传感网 复习题

随便推点

Android实现视频播放的3种实现方式_android 视频播放-程序员宅基地

文章浏览阅读10w+次,点赞53次,收藏352次。Android提供了常见的视频的编码、解码机制。使用Android自带的MediaPlayer、MediaController等类可以很方便的实现视频播放的功能。支持的视频格式有MP4和3GP等。这些多媒体数据可以来自于Android应用的资源文件,也可以来自于外部存储器上的文件,甚至可以是来自于网络上的文件流。下面来说一下视频播放的几种实现方式:1、MediaController+Vid..._android 视频播放

阿里云服务SDK_uploadstreamresponse response = uploader.uploadstr-程序员宅基地

文章浏览阅读708次。提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档阿里云服务SDK前言一、OSS文件操作文件上传文件上传删除二、EasyExcel三、VOD视频点播功能视频上传功能获取播放地址,客户端进行播放四、短信服务获取短信 获取成功则需要存入redis, 后期便于校验五、总结前言此处为阿里云各组件的SDK示例提示:以下是本篇文章正文内容,下面案例可供参考一、OSS文件操作网站 : https://help.aliyun.com/document_detail/84781.html?_uploadstreamresponse response = uploader.uploadstream(request);部署在服务器

数据竞赛『技巧』,全面总结-程序员宅基地

文章浏览阅读582次。本文将对数据竞赛的『技巧』进行全面的总结,同时还会分享下个人对比赛方法论的思考。前者比较客观,总结了不同数据类型下涉及到的比赛技巧;后者稍微主观,是我个人对解决比赛思路的..._数据竞赛问题定义

《算法艺术与信息学竞赛》之 堆 积水_91318 积水面积 信息学竞赛-程序员宅基地

文章浏览阅读215次。算法艺术与信息学竞赛_91318 积水面积 信息学竞赛

GCC Coverage代码分析-GCC插桩前后汇编代码对比分析_coverage编译-程序员宅基地

文章浏览阅读8.4k次,点赞4次,收藏10次。本博客(http://blog.csdn.net/livelylittlefish)贴出作者(阿波)相关研究、学习内容所做的笔记,欢迎广大朋友指正!Content0. 序1. 如何编译1.1 未加入覆盖率测试选项1.2 加入覆盖率测试选项1.3 分析2. 未加入覆盖率测试选项的汇编代码分析3. 加入覆盖率测试选项的汇编代码分析3.1 计数桩代码分析3.2 构造函数桩代码分析3.3 数据结构分析3._coverage编译

冰蝎shell_冰蝎动态二进制加密WebShell特征分析-程序员宅基地

文章浏览阅读555次。概述冰蝎一款新型加密网站管理客户端,在实际的渗透测试过程中有非常不错的效果,能绕过目前市场上的大部分WAF、探针设备。本文将通过在虚拟环境中使用冰蝎,通过wireshark抓取冰蝎通信流量,结合平时在授权渗透中使用冰蝎马经验分析并总结特征。版本介绍目前冰蝎已经迭代6个版本下载地址,从最初的v1.0版本到目前最新的版本v2.0.1,其中v1.0版本可以从此处下载到。冰蝎最初的版本对于环境的要求较为苛..._冰蝎响应体

推荐文章

热门文章

相关标签