王垠的新文章——《谈 Linux,Windows 和 Mac》

关于Ubuntu的故事或对Ubuntu的感慨及心情
林杰杰
帖子: 193
注册时间: 2005-07-03 15:30
来自: 广州

王垠的新文章——《谈 Linux,Windows 和 Mac》

#1

帖子 林杰杰 » 2013-05-18 15:49

原地址:http://blog.sina.com.cn/s/blog_5d90e82f0101ip7f.html


这段时间受到很多人的来信。他们看了我很早以前写的推崇 Linux 的文章,想知道如何“抛弃 Windows,学习 Linux”。天知道他们在哪里找到那么老的文章,真是好事不出门…… 我觉得我有责任消除我以前的文章对人的误导,洗清我这个“Linux 狂热分子”的恶名。我觉得我已经写过一些澄清的文章了,可是怎么还是有人来信问 Linux 的问题。也许因为感觉到“舆论压力”,我把文章都删了。

简言之,我想对那些觉得 Linux 永远也学不会的“菜鸟”们说:

1. Linux 和 Unix 里面包含了一些非常糟糕的设计。不要被 Unix 的教条主义者吓倒。学不会有些东西很多时候不是你的错,而是 Linux 的错,是“Unix 思想” 的错。不要浪费时间去学习太多工具的用法,钻研稀奇古怪的命令行。那些貌似难的,复杂的东西,特别要小心分析。

2. Windows 避免了 Unix,Linux 和 Mac OS X 的很多问题。微软是值得尊敬的公司,是真正在乎程序开发工具的公司。我收回曾经对微软的鄙视态度。请菜鸟们吸收 Windows 设计里面好的东西。另外 Visual Studio 是非常好的工具,会带来编程效率的大幅度提升。请不要歧视 IDE。要正视 Emacs,VIM 等文本编辑器的局限性。当然,这些正面评价不等于说你应该为微软工作。就像我喜欢 iPhone,但是却不一定想给 Apple 工作一样。

3. 学习操作系统最好的办法是学会(真正的)程序设计思想,而不是去“学习”各种古怪的工具。所有操作系统,数据库,Internet,以至于 WEB 的设计思想(和缺陷),几乎都能用程序语言的思想简单的解释。


先说说我现在对 Linux 和相关工具(比如 TeX)的看法吧。我每天上班都用 Linux,可是回家才不想用它呢。上班的时候,我基本上只是尽我所能的改善它,让它不要给我惹麻烦。Unix 有许许多多的设计错误,却被当成了教条,传给了一代又一代的程序员,恶性循环。Unix 的 shell,命令,配置方式,图形界面,都是相当糟糕的。每一个新版本的 Ubuntu 都会在图形界面的设计上出现新的错误,让你感觉历史怎么会倒退。其实这只是表面现象。Linux 所用的图形界面(X Window)在本质上几乎是没救的。我不想在这里细说 Unix 的缺点,在它出现的早期,已经有人写了一本书,名叫 Unix Hater's Handbook,里面专门有一章叫做 The X-Windows Disaster。它分析后指出,X Window 貌似高明的 client-server 设计,其实并不像说的那么好。

这本书汇集了 Unix 出现的年代,很多人对它的咒骂。有趣的是,这本书有一个“反序言”,是 Unix 的创造者之一 Dennis Ritchie 写的。我曾经以为这些骂 Unix 的人都是一些菜鸟。他们肯定是智商太低,或者被 Windows 洗脑了,不能理解 Unix 的高明设计才在那里骂街。现在理解了程序语言的设计原理之后,才发现他们说的那些话里面居然大部分是实话!其实他们里面有些人在当年就是世界顶尖的编程高手,自己写过操作系统和编译器,功底不亚于 Unix 的创造者。在当年他们就已经使用过设计更加合理的系统,比如 Multics,Lisp Machine 等。

可惜的是,在现在的操作系统书籍里面,Multics 往往只是被用来衬托 Unix 的“简单”和伟大。Unix 的书籍喜欢在第一章讲述这样的历史:“Multics 由于设计过于复杂,试图包罗万象,而且价格昂贵,最后失败了。” 可是 Multics 失败了吗?Multics,Oberon,IBM System/38, Lisp Machine,…… 在几十年前就拥有了 Linux 现在都还没有的好东西。Unix 里面的东西,什么虚拟内存,文件系统,…… 基本上都是从 Multics 学来的。Multics 的机器,一直到 2000 年都还在运行。Unix 不但“窜改”了历史教科书,而且似乎永远不吸取教训,到现在还没有实现那些早期系统早就有的好东西。Unix 的设计几乎完全没有一致性和原则。各种工具程序功能重复,冗余,没法有效地交换数据。可是最后 Unix 靠着自己的“廉价”,“宗教”和“哲学”,战胜了别的系统在设计上的先进,统治了程序员的世界。

如果你想知道这些“失败的”操作系统里面有哪些我们现在都还没有的先进技术,可以参考这篇文章:Oberon - The Overlooked Jewel。它介绍的是 Niklaus Wirth(也就是 Pascal 语言的设计者)的 Oberon 操作系统。

胜者为王,可是 Unix 其实是一个暴君,它不允许你批评它的错误。它利用其它程序员的舆论压力,让每一个系统设计上的错误,都被说成是用户自己的失误。你不敢说一个工具设计有毛病,因为如果别人听到了,就会以为你自己不够聪明,说你“人笨怪刀钝”。这就像是“皇帝的新装”里的人们,明明知道皇帝没穿衣服,还要说“这衣服这漂亮”!总而言之,“对用户友好”这个概念,在 Unix 的世界里是被歧视,被曲解的。Unix 的狂热分子很多都带有一种变态的“精英主义”。他们以用难用的工具为豪,鄙视那些使用“对用户友好”的工具的人。

我曾经强烈的推崇 FVWM,TeX 等工具,可是现在擦亮眼睛看来,它们给用户的界面,其实也是非常糟糕的设计,跟 Unix 一脉相承。他们把程序设计的许多没必要的细节和自己的设计失误,无情的暴露给用户。让用户感觉有那么多东西要记,仿佛永远也没法掌握它。实话说吧,当年我把 TeXbook 看了两遍,做完了所有的习题(包括最难的“double bend”习题)。几个月之后,几乎全部忘记干净。为什么呢?因为 TeX 的语言是非常糟糕的设计,它没有遵循程序语言设计的基本原则。

这里有一个鲜为人知的小故事。TeX 之所以有一个“扩展语言”,是 Scheme 的发明者 Guy Steele 的建议。那年夏天,Steele 在 Stanford 实习。他听说 Knuth 在设计一个排版系统,就强烈建议他使用一种扩展语言。后来 Knuth 采纳了他的建议。不幸的是 Steele 几个月后就离开了,没能帮助 Knuth 完成语言的设计。Knuth 老爹显然有我所说的那种“精英主义”,他咋总是设计一些难用的东西,写一些难懂的书? 谈 <wbr>Linux,Windows <wbr>和 <wbr>Mac

一个好的工具,应该只有少数几条需要记忆的规则,就像象棋一样。而这些源于 Unix 的工具却像是“魔鬼棋”或者“三国杀”,有太多的,无聊的,人造的规则。有些人鄙视图形界面,鄙视 IDE,鄙视含有垃圾回收的语言(比如 Java),鄙视一切“容易”的东西。他们却不知道,把自己沉浸在别人设计的繁复的规则中,是始终无法成为大师的。就像一个人,他有能力学会各种“魔鬼棋”的规则,却始终无法达到象棋大师的高度。所以,容易的东西不一定是坏的,而困难的东西也不一定是好的。学习计算机(或者任何其它工具),应该“只选对的,不选难的”。记忆一堆的命令,乌七八糟的工具用法,最后脑子里什么也不会留下。学习“原理性”的东西,才是永远不会过时的。

Windows 技术设计上的很多细节,也许在早期是同样糟糕的。但是它却向着更加结构化,更加简单的方向发展。Windows 的技术从 OLE,COM,发展到 .NET,再加上 Visual Studio 这样高效的编程工具,这些带来了程序员和用户效率的大幅度提高,避免了 Unix 和 C 语言的很多不必存在的问题。Windows 程序从很早的时候就能比较方便的交换数据。比如,OLE 让你可以把 Excel 表格嵌入到 Word 文档里面。不得不指出,这些是非常好的想法,是超越“Unix 哲学”的。相反,由于受到“Unix 哲学”的误导,Unix 的程序间交换数据一直以来都是用字符串,而且格式得不到统一,以至于很多程序连拷贝粘贴都没法正确进行。Windows 的“配置”,全都记录在一个中央数据库(注册表)里面,这样程序的配置得到大大的简化。虽然在 Win95 的年代,注册表貌似老是惹麻烦,但现在基本上没有什么问题了。相反,Unix 的配置,全都记录在各种稀奇古怪的配置文件里面,分布在系统的各个地方。你搞不清楚哪个配置文件记录了你想要的信息。每个配置文件连语法都不一样!这就是为什么用 Unix 的公司总是需要一个“系统管理员”,因为软件工程师们才懒得记这些麻烦的东西。

再来比较一下 Windows 和 Mac 吧。我认识一个 Adobe 的高级设计师。他告诉我说,当年他们把 Photoshop 移植到 Intel 构架的 Mac,花了两年时间。只不过换了个处理器,移植个应用程序就花了两年时间,为什么呢?因为 Xcode 比起 Visual Studio 真是差太多了。而 Mac OS X 的一些设计原因,让他们的移植很痛苦。不过他很自豪的说,当年很多人等了两年也没有买 Intel 构架的 Mac,就是因为他们在等待 Photoshop。最后他直言不讳的说,微软其实才是真正在乎程序员工具的公司。相比之下,Apple 虽然对用户显得友好,但是对程序员的界面却差很多。Apple 尚且如此,Linux 对程序员就更差了。可是有啥办法呢,有些人就是受虐狂。自己痛过之后,还想让别人也痛苦。就像当年的我。

我当然不是人云亦云。微软在程序语言上的造诣和投入,我看得很清楚。我只是通过别人的经历,来验证我已经早已存在的看法。所以一再宣扬别的系统都是向自己学习的 Apple 受到这样的评价,我也一点不惊讶。Mac OS X 毕竟是从 Unix 改造而来的,还没有到脱胎换骨的地步。我有一个 Macbook Air,一个 iPhone 5,和一个退役的,装着 Windows 7 的 T60。我不得不承认,虽然我很喜欢 Macbook 和 iPhone 的硬件,但我发现 Windows 在软件上的很多设计其实更加合理。

我为什么当年会鄙视微软?这很简单。我就是跟着一群人瞎起哄而已!他们说 Linux 能拯救我们,给我们自由。他们说微软是邪恶的公司…… 到现在我身边还有人无缘无故的鄙视微软,却不知道理由。可是 Unix 是谁制造的呢?是 AT&T。微软和 AT&T 哪个更邪恶呢?我不知道。但是你应该了解一下 Unix 的历史。AT&T 当年发现 Unix 有利可图,找多少人打了多少年官司?说微软搞垄断,其实 AT&T 早就搞过垄断了,还被拆散成了好几个公司。想想世界上还有哪一家公司,独立自主的设计出这从底至上全套家什:程序语言,编译器,IDE,操作系统,数据库,办公软件,游戏机,手机…… 我不得不承认,微软是值得尊敬的公司。

公司还不都一样,都是以利益为本的。我们程序员就不要被他们利用,作为利益斗争的炮眼啦。见到什么好就用什么,就学什么。自己学到的东西,又不属于那些垄断企业。我们都有自由的头脑。

当然我不是在这里打击 Linux 和 Mac 而鼓吹 Windows。这些系统的纷争基本上已经不关我什么事。我只是想告诉新人们,去除头脑里的宗教,偏激,仇恨和鄙视。每次仇恨一个东西,你就失去了向它学习的机会。
  再把Xwindow叫成X windows的,一律不予理睬。
  三个以上感叹号连打或有事没事都打感叹号的,也不予理睬。
谢宝良
帖子: 1983
注册时间: 2010-05-01 21:23

Re: 王垠的新文章——《谈 Linux,Windows 和 Mac》

#2

帖子 谢宝良 » 2013-05-18 16:11

这样的论调太过时了。
头像
百草谷居士
帖子: 4024
注册时间: 2006-02-10 16:36
系统: debian12/xubuntu2404

Re: 王垠的新文章——《谈 Linux,Windows 和 Mac》

#3

帖子 百草谷居士 » 2013-05-18 16:12

"垠"------这个字是叫做“yin”吧?
Mint 22 / Xubuntu 24.04

为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
林杰杰
帖子: 193
注册时间: 2005-07-03 15:30
来自: 广州

Re: 王垠的新文章——《谈 Linux,Windows 和 Mac》

#4

帖子 林杰杰 » 2013-05-18 16:13

不知道王垠是观点改变得如此彻底还是故意说这些话来摘清自己狂热分子的名头。。。。
  再把Xwindow叫成X windows的,一律不予理睬。
  三个以上感叹号连打或有事没事都打感叹号的,也不予理睬。
jtshs256
帖子: 22323
注册时间: 2010-07-19 21:41
系统: OS X

Re: 王垠的新文章——《谈 Linux,Windows 和 Mac》

#5

帖子 jtshs256 » 2013-05-18 16:16

好像之前看到过这篇
躺平
头像
ceclinux
帖子: 308
注册时间: 2013-01-17 2:42
系统: Ubuntu 12.04LTS

Re: 王垠的新文章——《谈 Linux,Windows 和 Mac》

#6

帖子 ceclinux » 2013-05-18 16:46

早看过了。。
Ubuntu 12.04 LTS
laptop:Acer 4750G CPU:I5-2410
内存:2+2G 硬盘:500+750
http://www.ceclinux.org
头像
hawkIdeality
帖子: 411
注册时间: 2012-05-14 18:39

Re: 王垠的新文章——《谈 Linux,Windows 和 Mac》

#7

帖子 hawkIdeality » 2013-05-18 17:12

好像之前看到过这篇
早看过了。。
崩溃是不可抗拒滴
攒钱买(第?台)macbook,然后装ubuntu
那些说unity找不到应用程序的人拜托按一下win+A好吗?
Novelty, Novelty, Give Me Novelty
发表Linux、Win、OS X的对比帖时,建议您确认一下您真的用过Linux&&Win&&OS X,而不是用过Linux||Win||OS X。
吾乃古剑奇谭NC粉!
bill_deng
帖子: 6
注册时间: 2006-12-12 12:52

Re: 王垠的新文章——《谈 Linux,Windows 和 Mac》

#8

帖子 bill_deng » 2013-05-23 13:03

当年我就是被王垠忽悠进来的,不过现在主要时间都在window下了。
Tex 当初把我折腾得惨,后来果断放弃。
头像
32idea
帖子: 1251
注册时间: 2006-12-15 9:32
系统: linux

Re: 王垠的新文章——《谈 Linux,Windows 和 Mac》

#9

帖子 32idea » 2013-05-23 13:33

悟已往之不谏,知来者之可追;实迷途其未远,觉今是而昨非.
头像
huangbster
帖子: 187
注册时间: 2012-10-29 11:35
系统: UBUNTU

Re: 王垠的新文章——《谈 Linux,Windows 和 Mac》

#10

帖子 huangbster » 2013-05-23 13:46

WINDOWS好吗?
WINDOWS的串口句柄居然不能select!!!
WINDOWS的开发程序居然无法直观显示堆栈出错和内存泄露!!!
十年前用VC开发个程序,保存时,居然他妈的把我整个辛辛苦苦写的程序变成0字节!!!
头像
b33e
帖子: 3874
注册时间: 2011-06-07 14:20

Re: 王垠的新文章——《谈 Linux,Windows 和 Mac》

#11

帖子 b33e » 2013-05-23 14:21

矫枉过正
从一个极端走到另一个极端
头像
qy117121
论坛版主
帖子: 50587
注册时间: 2007-12-14 13:40
系统: Winbuntu
来自: 志虚国乌由市
联系:

Re: 王垠的新文章——《谈 Linux,Windows 和 Mac》

#12

帖子 qy117121 » 2013-05-23 14:26

b33e 写了:矫枉过正
从一个极端走到另一个极端
渠月 · QY   
本人只会灌水,不负责回答问题
无聊可以点一下→ http://u.nu/ubuntu

邮箱 [email protected]
林杰杰
帖子: 193
注册时间: 2005-07-03 15:30
来自: 广州

Re: 王垠的新文章——《谈 Linux,Windows 和 Mac》

#13

帖子 林杰杰 » 2013-05-23 15:58

bill_deng 写了:当年我就是被王垠忽悠进来的,不过现在主要时间都在window下了。
Tex 当初把我折腾得惨,后来果断放弃。
其实latex不难。。。WIN下安装CTex套件,然后网上找一个模板,就可以写了。。。已经用很久了。
  再把Xwindow叫成X windows的,一律不予理睬。
  三个以上感叹号连打或有事没事都打感叹号的,也不予理睬。
头像
photor
论坛版主
帖子: 11004
注册时间: 2008-04-26 12:41

Re: 王垠的新文章——《谈 Linux,Windows 和 Mac》

#14

帖子 photor » 2013-05-23 19:35

林杰杰 写了:
bill_deng 写了:当年我就是被王垠忽悠进来的,不过现在主要时间都在window下了。
Tex 当初把我折腾得惨,后来果断放弃。
其实latex不难。。。WIN下安装CTex套件,然后网上找一个模板,就可以写了。。。已经用很久了。
lyx更简单 :em09
谢宝良
帖子: 1983
注册时间: 2010-05-01 21:23

Re: 王垠的新文章——《谈 Linux,Windows 和 Mac》

#15

帖子 谢宝良 » 2013-05-23 19:42

latex不难,只是效率比office低。
回复