Linux什么时候能像WIN一样普及?预期...
完全使用GNU/Linux工作。
理解GNU/Linux
“UNIX很简单,你不需要成为天才就能理解它。”
因为GNU/Linux这个词太长,所以“Linux”就是“GNU/Linux”的意思,除非特别说明。
在这个时代,恐怕没有人需要我来介绍Linux是什么了。如果你认为“Linux只是一个类似于DOS的东西”,恐怕你已经很久没有在山洞里见到天日了。问一下旁边的Linux用户,Linux的状态如何?
那我为什么要写这样的文章?因为,我发现还是有很多人不了解Linux和UNIX。虽然他们正在使用它,但他们有时会问,“为什么Linux不能像Windows一样...?",“为什么Redhat Linux不能挂载NTFS分区!”,“Linux下用什么整理硬盘?”" OpenOffice何时能与Word文件完全兼容?"“现在Windows能做什么,而Linux不能?”……
他们有40G硬盘,但只为Linux分配了2G空间。有时候他们会抱怨“这东西怎么占那么多硬盘!”好像Windows应该占了大部分硬盘。他们把重要的数据放在Windows的分区里,看起来是不信任Linux。他们总是到处寻找新颖美观的GUI程序,对命令行上的任何东西都不屑一顾。他们对拖拉感兴趣。滴,菜单配置,自动升级都很感兴趣。如果他们发现一个看起来像Windows程序的Linux程序,他们会很高兴地说:“哈哈!Linux也可以...! "如果Linux在某项测试中击败了Windows,他们会高兴得跳起来。当他们无法用Linux解决问题时,他们甚至用Wine来运行Windows程序。有时候实在没办法,只好重启Windows,或者干脆省事,在Windows下装个VMWare虚拟Linux来玩。
你支持Linux,你喜欢Linux,你能从中感受到快乐,这很好。你现在需要明白的是,Linux从来就不是一个玩具,它是天才UNIX的后代。UNIX是自晶体管发明以来最伟大的发明,从诞生之日起就比Windows的设计更好。Linux不需要赶上Windows或者碾压微软。它的终极目标是改变整个计算机世界,让人自由,给人乐趣和便利。其他很多UNIX都被Linux打败了,更别说Windows了!
如果你有以上情况,说明你的思想已经被Windows潜移默化的影响和误导了。你还没有能够从本质上理解Linux中存在的UNIX思想。UNIX的设计者丹尼斯·里奇说:“UNIX很简单。只有天才才能理解它的简单。”但我不这么认为,因为我不是天才,但我勇敢地把Windows彻底删除了。半年后,我体会到了UNIX的思想和好处。因为我相信这个信念:“Windows能做到的,Linux当然也能做到,而且做得更好。”
这一节开头的话应该改成:“Unix很简单,但在这个批判Windows错误观念的世界里,你需要信念和勇气才能理解它的简单!”下面我给大家讲一个我理解的事情。
微软的立场
你可能听说过微软在欧美大学的口碑不好,尤其是计算机系。我认识的麻省理工学院、斯坦福大学的教授、贝尔实验室的专家,甚至一个欧洲小国的高中计算机老师都没提过微软的名字。在他们眼里,微软只是一个没有真正技术,只靠商业宣传和落后国家垄断经营的小公司。这个“小”不是指人少钱少,而是指技术不太先进。
上次和王毅合作写了一个算法演示程序,是贝尔实验室的科学家Steven Fortune发明的。为了让我们身边的大多数人都能使用这个程序,我们选择了VC+MFC作为平台。在我分析算法的时候,受到了《财富》的热情鼓励,给我发了一份文件,多次回信,耐心的给我讲解了很多细节。但程序完成后,我把样本发给了《财富》,他回信说:“对不起。我的机器上没有MFC。很客气,但是我已经感觉到他对Windows的不屑了。然后我把MFC静态编译成程序发给他,他一直不回。他明显不是看不起我,但他确实有苦衷。
你能感受到科学家对微软和Windows的态度吗?不是厌恶,而是他心里根本没有窗户这种东西!微软在高科技领域没有发展,怎么生存?去发展中国家发展。他们的人民仍然对计算机一无所知。也许我甚至可以进入一所大学的计算机系。我给他们软件,我捐钱盖大楼,我请图灵奖获得者演讲!
嗯,目前国内几乎所有的大学,包括清华,都有盗版Win2000,Office XP安装在机器上。学校的选课系统无法正确浏览。论文用Word编辑,演示用ppt做,连863项目都用VC编程。很久以前看过一份报纸,说“微软为什么不打击盗版?”这篇文章说,微软在中国不打击盗版,反而倾向于放任自流。放长线钓大鱼,“我要你以后还我两次!”“的确,它的目的差不多实现了。
Windows下的中国计算机教育
说得好听点,比尔·盖茨是我很久以前的偶像...//脸红
在中国,比尔·盖茨被许多人视为“年轻的计算机天才”,甚至有人在提到他的名字时做出“向天挥拳”的手势。很多人谈微软的“新技术”“高科技”都很开心。《VC编程圣经》《了解Visual C++》之类的各种书籍,前几页都会有非常恶心的文字。“就在那场混乱中,一个划时代的向导——Windows 1.0诞生了……”
微软软件被这么多人盗了,那么大家是怎么使用这些盗版程序的呢?我们看看电脑培训班,教一些DOS命令,打字,Windows基本操作,Word文档处理,PowerPoint,高级班。可能有Excel,Access……...参加各种微软认证考试的人,MCSE、MSDE都是络绎不绝,考试辅导班都贴出了“280元”。考试参考资料更贵。在一些电脑书店,两个货架上都是“微软出版社”。我有个同学是考认证的,每次考试要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好,X Window好,被一群人宣扬:“这个Windows能行”、“你对Windows有偏见”、“微软是主流”、“你怎么敢看不起win2k?”".NET是世界的趋势”,“微软的毕竟是新技术”,“金钱意味着技术”...即使经过一番争论和比较,我们还是要说:“Windows性能差,但是好用”,“Windows是普通人用的,不要那么苛刻”,“微软那么有钱,以后超越UNIX不是很容易吗?”……
发达国家的计算机教育
前段时间在USENET上发了一个关于Scheme语言的问题,遇到了一个丹麦人。他解决了我所有的问题,并建议我读一些关于语法和编程语言语法的“深奥”的书。他告诉我很多网站可以学习LISP,Scheme,人工智能,算法。他让我读乔纳森·里斯的论文。他还打包寄给我一本麻省理工的《如何设计程序》。他说他在个人电脑上安装了Linux,他用Emacs编辑并运行Scheme程序。他对Emacs的了解和兴趣真的很惊人。他大学毕业时做的毕业设计是一个方案解释器。这是我的最后一根稻草。
他不知疲倦,每个问题都回答得很详细。我有时候觉得太细致了。我怎么能这么有耐心?在我看来,他是我的高中老师。他是什么样的人?我好奇地询问他的情况。原来她是丹麦一所普通高中的计算机老师!注意,我改变了我的人称代词!
她说她在高中教编程和算法,计算机语言语法分析。她说,有了Scheme,她的学生再也不用担心编程语言本身的问题,比如指针交叉和内存泄漏,而是专注于问题和算法本身。有利于培养学生解决问题的能力,特别是用计算机解决数学问题的能力。
天啊,为什么欧洲有这么多数学家和几何学家?看别人看重什么!如果我们的计算机教育继续这样下去,只会在弯路上越走越远!
微软及其朋友的如意算盘
我们来看看微软的收入是怎么来的。首先,Windows 98系列操作系统,一个就是100多美元,而且每次升级几乎都是一样的价格。Windows NT贵好几倍,而且有用户数量限制。以后想增加用户量,就得按比例付费。这种奇怪的现象被通用汽车的总裁比喻为:“你买的微软汽车,开头只有一个座位。每增加一个座位你都要向汽车公司付费,每100英里你都要大修一次,每年都要换发动机。”
我花那么多钱买的操作系统能用吗?它甚至不提供压缩程序!安装Windows后,你通常做的第一件事就是下载一个WinZip,“只要29美元”。Windows会捕捉病毒,所以马上花70美元买一个诺顿杀毒。黑客呢?再买个诺顿网络安全特警就行了,100块钱。系统需要优化,磁盘需要整理。购买Norton System Works是您的最佳解决方案,价格为65,438+000美元。
但是你现在还是不能做生意!你想说句话吗,PowerPoint?然后买一套Office XP。一起买比较便宜。$459.90。
那些程序不管用!如何设置这些菜单,它们有什么功能?看“帮”买本书看看是学不到的。我推荐“使用微软Office XP的特别版”,不贵。$27.99。这本书大部分是截屏,还是买旧的更划算?$17.85。
如果只是做秘书的话,以上差不多就可以了。但是你有更高的志向。你想成为一名Windows程序员。首先,买一个可视化的Studio.NET,要不然怎么编译程序。?$494.95。
为了跟上微软潮流和世界潮流,你得注册个MSDN什么的,对吧?这个比较贵,但是很值。$2,799。
嗯,你现在是上流社会的白领了。你现在可以像这样过着“自由”和“安全”的生活:
有什么是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才有P * * * E,UNIX的H***e就好很多,可以在大型机上运行。当然它们不是免费的,但是它们值这个价。
但是Windows下的有些东西在Linux下不是很像,或者你发现很多类似的东西,但是每一个都比Windows下的那个程序差很多,所以有两种可能:
有一个完全类似的程序,但是因为第一眼看上去不美,你就忽略了。
虽然其他程序看起来很美,但它们是由一些初学者编写的。现在,由于GTK+和Qt的诞生,在Linux下开发图形界面程序变得极其简单,很多初中生甚至小学生都可以随意编写一些漂亮而无用的程序。如果你整天找这样的节目,挑挑拣拣,你永远也找不到自己满意的。
我以前也犯过这样的错误,我忽略了优秀的FVWM,lftp,Mutt,wget!当我发现他们的时候,我很惭愧。他们现在都是我微笑的朋友。你可以用这些程序改变一切。当我第一次看到FVWM时,我认为它只是一个有着又粗又丑的边界的东西。但是现在,当我的同学看到FVWM时,他们都说:“哇!真漂亮。”
还有另一种完全不同的方式可以达到同样的目的,甚至更好。
很多人都很关心Open Office,Star Office,AbiWord,...他们多么希望有一天Linux程序能打开一个完全兼容的复杂doc文档。但你永远不会有那一天。为什么?因为微软为了占领市场,肯定不会让其他系统的程序完全兼容它的文档格式!肯定会改变doc文档的内部结构,隐藏一些秘密,让其他公司的程序在打开doc文档时总是出现一些问题,所以一定要买微软Office和Windows。
你应该考虑一下。有那么多高智商的大学教授,科学家,学生。他们都使用Linux或其他类型的UNIX。他们没有消息。他们如何处理文件?这么多年都没有像Open Office这样的程序。不是每个人都会写文档吗?
显然不是。看看那些高水平的学术杂志,论文,大学教授的网页,还有那些漂亮的PDF幻灯片。它们是由什么制成的?原来UNIX用户早就有非常方便的troff,LaTeX,SGML等东西来处理文档了,而且比Word强多了。Word显然被这些巨头忽视了,以至于没有人愿意长期在Linux下开发类似Word的程序,除非有公司想抢微软的饭碗。
很多人之所以把Windows保存在硬盘上,无非是为了用Word和PowerPoint。以后你可以看看我的TeX页面,你就知道我为什么可以彻底离开Windows了。
那些Windows能做的没用的事情,Linux永远做不好。
电脑游戏
有人说Linux不能玩Windows下所有可用的游戏。的确,虽然Linux下也有少数游戏,比如雷神之锤。但是它没有反恐精英,没有星际争霸,...
不是说电脑游戏不应该玩,而是适可而止。电脑是处理事务的工具,帮助你学习和解决问题,不是玩具!整天沉迷于电脑游戏,不出去感受外面的世界,你会变得越来越冷漠,越来越没人性。你离现实世界越来越远。
你可以在CS里杀人,你可以在古墓丽影里探险,你甚至可以在托尼·霍克的职业滑板手里玩滑板…但这不是真的!虽然你有很高的“反恐技能”,但是遇到歹徒你却那么胆小;虽然你控制了劳拉的敏捷,但是怎么打篮球的时候总是被挡?虽然在THPS你可以轻松做出一个“360 kicklip挂十磨以假乱真”,但是当你踩上你的滑板时,你却无法奥利!
另一方面,偶尔玩玩电脑游戏也没关系。但世界上有比Windows+PC好得多的玩游戏方式。索尼的PlayStation2,SEGA的DreamCast,任天堂的N64,Namco的arcade...每一个都比Windows游戏更精彩,每一个都有那么高的3D性能,Pentium4,Itanium+GeForce4都比不上!
Linux用户都关心解决世界上的关键问题。他们哪来的时间用自己的机器玩游戏?他们每天使用Linux高效地完成工作,在阳光下享受大自然。玩游戏也是玩一些推箱子吃蛇之类的智力游戏。所以,你知道为什么Linux里几乎没有游戏吗?微笑
“整理硬盘,优化系统”
这是一个非常有趣的话题,仅次于“病毒”这个话题。相信很多Windows用户都有整理硬盘的经历。在很多Windows用户看来,“硬盘用久了会碎片化,速度会变慢。你需要一个程序来整理它。整理硬盘时不要做其他工作”,这似乎是理所当然的。
我曾经看着诺顿Defrag把我的硬盘一点一点的整理、调整、图形化显示,然后报告:“100%没有碎片。您的硬盘现在已达到最佳状态。”现在我意识到我是多么的天真。
Linux和UNIX用户似乎从来不说“整理一下硬盘”。你觉得奇怪吗?如果你觉得很奇怪,说明你的思维在某种程度上被微软的垃圾程序禁锢了。你要明白,很多UNIX主机必须一年365天1/4天24小时运行。如果一周要清理一次硬盘,清理的时候几乎什么都做不了。绝对不可能!
Linux机器根本不需要整理硬盘,这也是Linux用户没见过他们整理硬盘的原因。Linux的文件系统比Windows的FAT,FAT32,NTFS要好很多。他们不仅可以对文件设置权限、实施完全保护,还可以“用得更整齐”、“用得更不碎片化”!你应该把大部分文件放在Linux分区,而不是Windows分区,因为它比Windows分区可靠得多。
更搞笑的是,还有诺顿系统医生、Windows优化器、超级兔子注册表Magic等很多程序,价格不菲。好像一个操作系统应该有很多问题,需要其他厂商做程序来“优化”它,而为了得到优化,你需要付出!Linux根本不存在这些问题,所以不需要优化。Linux内核本身是高度优化的。
集成驱动电子设备
有人在抱怨为什么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!
有一次某杂志采访了一些知名的Linux内核程序员,包括Linus。他们都没用IDE,有的用VIM,有的用Emacs。只有Linus说“GNU Emacs是邪恶的”,其实他用了一个和Emacs一样的键绑定功能的MicroEmacs。大家都是用编辑器编辑程序文件,然后用make这样的自动化工具调用gcc编译器完成编译。
我以前写过Windows程序:应用,驱动。但是我没有用VC的IDE。Linux教过我,我会在命令行调用CL,我知道CL是VC的编译器。我可以在cygwin的Makefile中使用CL。我也知道CL的参数是干什么用的。但是这些对于一个从一开始就使用IDE的人来说并不是很快就能理解的。
我相信:IDE是邪恶的。我有一些用Windows的IDE写程序的朋友,对那套东西已经很精通了。但我惊讶地发现,他们竟然混淆了编译器和汇编器的概念,甚至有人混淆了“编辑器”和“编译器”!他们只知道在一个窗口中输入代码,点击一个按钮就可以编译程序,却不知道它是如何工作的!它们被覆盖在上面的窗口挡住了,甚至认为按钮就是编译器!
他们对IDE的热键很熟悉,但是我看得出来他们是在把别人的ANSI风格的代码一个一个函数的改成VC风格的。想想在VIM里有多简单,一瞬间就能搞定。
UNIX程序员为什么不用IDE?明白了这个道理,你就能体会UNIX的设计思想了。首先,IDE集成了编辑器、编译器、汇编器、调试器和跟踪器...编辑器的功能肯定比不上VIM或者Emacs,编译器比不上GCC,汇编器比不上as,调试器比不上gdb,ddd,跟踪器比不上strace,ltrace,truss。你得到的是一个集成良好的低能耗程序。如果对调试器的功能不满意,就得换另一个IDE,但是这个IDE的热键、菜单、编辑器功能、按钮都和原来的有很大不同。你要花很多时间去熟悉新的环境,却不能保留原有的一些东西。
但是在UNIX下,就不一样了。可以使用自己喜欢的VIM编辑程序。可以在VIM中调用GNU make,make可以调用gcc,ld,...其实make可以帮到你很多。Make错误信息可以被VIM捕获,这可以帮助你在源程序中定位。如果喜欢icc,可以让make用icc代替gcc。如果觉得gdb跟踪变量比较麻烦,可以用ddd来表示各种数据结构之间的关系。还可以在Emacs中调用gdb,这样可以同步显示源代码。VIM和Emacs还可以编辑许多其他东西,比如信件、LaTeX文档、HTML、配置文件...你不需要再找一个编辑来做这些杂事。mutt、tin等很多程序都可以内部使用VIM,比较方便。
释放内存
我在Windows下做过最蠢的一件事就是“释放内存”。有一天我看到一个Windows程序说:“这个程序可以帮你为一个大程序释放大量内存。”我试了一下,居然一下子释放了我的64M内存,48M!我欣喜若狂。现在想想,这是多么傻的一件事,这么大的内存是怎么回事?不要白用!一个操作系统实际上需要别人写的程序来释放内存。那是什么样的操作系统?
使用Linux下的free命令,你会发现你的内存几乎一直在用光。这是因为Linux将其大部分内存用作磁盘缓冲区。Linux拥有比Windows更先进的磁盘缓冲技术。你有没有发现,当你把数据写到硬盘的时候,很快就完成了?这是因为Linux在内存中有很多磁盘缓冲区。你想写在硬盘上的数据先写入这些内存,然后Linux告诉你复制完成。当你想删除一些刚刚写入的数据时,Linux只是从内存中删除数据并报告删除完成。一定间隔后,Linux将数据写回硬盘,不仅效率高,而且减少了文件的不连续性,即减少了“碎片化”。Windows当然有磁盘缓冲,但是由于内存管理效率低,不敢用大量内存作为磁盘缓冲,因为它没有能力在内存被使用后随时回收。
Windows做不了Linux能做的高级的东西。
当然很多东西都是Linux/UNIX的专利。因为Windows只能安装在PC上,之前好像有个Alpha可以用Windows NT,只是我没看到有人用。PC的能力很低。对于我们这些编程NP难问题的人来说,使用Windows机器的速度显然不够,有时候一个问题算几天甚至几周。Windows机器以“死机”著称。怎么才能放心呢?
所以几乎所有的科学计算程序,EDA程序,高性能图像处理程序都不是Windows。他们有时会将一些程序移植到Windows,但通常会降低这些程序的功能。你对比过Mathematica的Windows版和Linux版吗?
IBM制造的最大的并行计算机有8000多个处理器。Windows不可能管理这么多处理器。它使用什么操作系统?答案是Linux。
泰坦尼克号电影中的三维动画如此细腻逼真,Windows machine能做出来吗?不会吧。那也是Linux机器做的。
对于中国民航用来培训当地人员的虚拟现实训练设备,Windows当然无能为力。那些都是商用的IRIX机器。
UNIX是最早支持TCP/IP网络协议的系统。上面有很多web服务程序可以互相合作。经过多年的使用和修改,已经达到了比较完善的程度。直到1997,微软的比尔·盖茨还在威胁:“互联网没有未来。”大家应该都看到了微软的这种“先见之明”。它在IIS这个网络服务程序上加了那么多漏洞,以至于公安部频频报警,大家也都看到了。
其实你知道,Windows里没有什么有用的东西能比UNIX做得更好。
Windows做不到Linux做不到的有用的事情。
当然,Linux并不是一切。它也有做不到的事情,电脑做不到的事情。但是Linux做不到的,Windows当然也做不到。这些都是需要我们去探索和努力的。在你探索的过程中,Linux一定是你的好伙伴。
UNIX的真正含义是什么?
让聪明人为所欲为。
UNIX的特点之一就是灵活性高,Xwindow也有这种灵活性。这种灵活性体现在哪里?
UNIX程序通常有许多参数。不管你现在是否需要它们,总有人需要一些参数。它们的许多行为可以通过配置文件来更改。比如GNU bash,通常默认的命令行输入方式是Emacs,但是只要我编辑一个。inputrc文件,我可以把它变成vi输入模式,也可以自己绑定。