很多人很關(guān)心 Open
Office
, Star Office, AbiWord, ... 他們多么盼望有一天某一個(gè) Linux 程序能夠完全兼容的打開(kāi)一個(gè)復(fù)雜的 doc 文檔。但是你永遠(yuǎn)也不可能有那一天。為什么呢?因?yàn)槲④洖榱苏加惺袌?chǎng),必定不會(huì)讓其它系統(tǒng)的程序能夠完全兼容它的文檔格式!它一定會(huì)不斷變化 doc 文檔的內(nèi)部結(jié)構(gòu),隱藏一些秘密,讓其它公司的程序打開(kāi) doc 文檔時(shí)總是有某種問(wèn)題,從而你必需購(gòu)買(mǎi)Microsoft Office 和 Windows。
你應(yīng)該想一下,那么多的高智商的大學(xué)教授,科學(xué)家,學(xué)生,他們用的都是 Linux或者其它類(lèi)型的 UNIX,他們沒(méi)有 Word 可用,怎么處理文檔呢?這么多年沒(méi)有一個(gè)像 Open Office 的程序出現(xiàn),難道大家沒(méi)有辦法寫(xiě)文檔嗎?
顯然不是這樣。你看看那些高水平的學(xué)術(shù)雜志,論文,那些大學(xué)教授的網(wǎng)頁(yè),那些漂亮的P DF幻燈片,它們是什么做的?原來(lái) UNIX 用戶早就有非常方便的 troff,LaTeX, SGML 等東西可以處理文檔,而且它們比起 Word 都要高明的多。Word 顯然被這些大拿忽略了,以至于很久以來(lái)沒(méi)有人想在 Linux 下開(kāi)發(fā)一個(gè)類(lèi)似 Word的程序,除非某些公司想搶微軟的飯碗。
很多人留著 Windows 在
硬盤(pán)
上的原因無(wú)非是為了用 Word 和 PowerPoint。你待會(huì)兒可以看看我的TeX網(wǎng)頁(yè),你就會(huì)知道為什么我可以完全離開(kāi) Windows.
Windows 能做的那些沒(méi)用的事情 Linux 永遠(yuǎn)做不好
電腦游戲
有些人說(shuō) Linux 下不能玩 Windows 下所能得到的所有游戲。的確,Linux 下雖然也有少量的游戲,比如 Quake。但是它沒(méi)有 Counter Strike, 沒(méi)有 Star Craft,......
你可以在 CS 里殺人,你可以在 Tomb Raider 里探險(xiǎn),你甚至可以在 TonyHawk's Pro Skaters 里滑板...... 但是
It
's not real!你雖然有很高的"反恐技巧",但是遇到歹徒的時(shí)候,你是那么的怯懦;你雖然控制 Laura 伸手敏捷,但是你打籃球的時(shí)候怎么總是被人斷球?你雖然可以輕易的在 THPS 里作出一個(gè)"360 kickflip to hangten grind to fakie",但是你踩在自己的滑板上的時(shí)候還不會(huì) ollie!
說(shuō)回來(lái),如果你偶爾玩一下電腦游戲未嘗不可。但是世界上有遠(yuǎn)比 Windows +PC 更好的游戲方式。Sony 的 PlayStation2, SEGA 的 DreamCast, Nintendo 的N64,Namco 的街機(jī).. ....每一個(gè)都比 Windows 游戲精彩,每一個(gè)都有如此高的3D性能,以至于 Pentium4, Itanium + GForce4 都無(wú)法與它們比美!
Linux 的用戶們都是關(guān)心解決世界的關(guān)鍵問(wèn)題的份子,他們哪里有時(shí)間用自己的機(jī)器來(lái)玩游戲啊?他們每天用Linux高效的做完自己的工作就到陽(yáng)光下享受自然去了。要玩游戲也是玩一些類(lèi)似推箱子,貪吃蛇之類(lèi)的智力小游戲。所以,你知道為什么 Linux 幾乎沒(méi)有游戲了吧?
"整理硬盤(pán),優(yōu)化系統(tǒng)"
這是一個(gè)非常有意思的話題,僅次于有關(guān)"病毒"的話題。相信很多 Windows 用戶都有整理硬盤(pán)的經(jīng)歷。在很多 Windows 用戶眼里,"硬盤(pán)用久了,會(huì)出現(xiàn)碎片,速度會(huì)減慢,需要一個(gè)程序來(lái)整理,整理硬盤(pán)的時(shí)候不要做其它工作",這好像是天經(jīng)地義的事情。
Linux 和 UNIX 用戶似乎從來(lái)沒(méi)有"整理硬盤(pán)"這種說(shuō)法呢?你覺(jué)得很奇怪嗎?如果你覺(jué)得很奇怪,那說(shuō)明你的思想在某種程度上被微軟的垃圾程序禁錮了。你需要明白,UNIX 的大型主機(jī)很多必須是一天24小時(shí),一年365又1/4天不停運(yùn)轉(zhuǎn)的,要是每個(gè)星期都要整理一次硬盤(pán),在整理的時(shí)候幾乎不能干任何事情,那是絕對(duì)行不通的!
Linux 機(jī)器根本不用整理硬盤(pán),這就是為什么沒(méi)有看到過(guò) Linux 用戶整理硬盤(pán)。Linux 的文件系統(tǒng)是比 Windows 的 FAT, FAT32, NTFS 高明得多的文件系統(tǒng),它們不但可以對(duì)文件設(shè)置權(quán)限,實(shí)施完全的保護(hù),而且可以"越用越整齊","越用碎片越少"!你應(yīng)該把文件大部分放在 Linux 的分區(qū),而不是 Windows 分區(qū),因?yàn)樗?Windows 分區(qū)可靠得多。
還有更滑稽的事情就是有很多"Norton System Doctor","Windows 優(yōu)化大師","超級(jí)兔仔注冊(cè)表魔法" 之類(lèi)的程序存在,而且價(jià)格昂貴。似乎一個(gè)操作系統(tǒng)本來(lái)應(yīng)該有很多問(wèn)題,需要?jiǎng)e的廠商做程序來(lái)"優(yōu)化"它,而且為了得到優(yōu)化,你需要付錢(qián)!這些問(wèn)題 Linux 根本就沒(méi)有,所以不需要什么優(yōu)化。Linux 內(nèi)核本身就是高度優(yōu)化的。
IDE
有些人在抱怨為什么 Linux 沒(méi)有一個(gè)良好的 IDE 開(kāi)發(fā)環(huán)境。Linux 現(xiàn)在已經(jīng)有一些 IDE 了,但是總是有很多問(wèn)題。你是不是正在尋找,正在期望 Linux 某一天可以有一個(gè)VC 那樣的開(kāi)發(fā)環(huán)境?你有沒(méi)有發(fā)現(xiàn)你正在進(jìn)入微軟給你設(shè)下的怪圈?你為什么一定要用 IDE ?你說(shuō):"IDE 開(kāi)發(fā)迅速,調(diào)試方便,適合大型程序......" 那說(shuō)明微軟的程序在你腦子里已經(jīng)比較根深蒂固,你需要好好清醒一下了,看看我來(lái)告訴你。
高明的 UNIX 程序員不用 IDE,IDE 從來(lái)就是給初級(jí) Windows 程序員用的。
你看看大型的 UNIX 程序,包括 Linux 內(nèi)核,各種網(wǎng)絡(luò)服務(wù)程序,Xwindow 程序在內(nèi),哪一個(gè)是 IDE 搞出來(lái)的?我們實(shí)驗(yàn)室的 EDA 程序也沒(méi)有一個(gè)是 IDE 弄的,我還知道 Candence, Synopsys,Mentor 的高性能的圖形界面 EDA 程序也都不是 IDE 寫(xiě)的。你信不信,微軟的人在寫(xiě) Windows 本身的時(shí)候也根本不用 IDE!
有一次某雜志采訪一些出名的 Linux 內(nèi)核程序員,包括 Linus 在內(nèi),沒(méi)有一個(gè)人用 IDE ,有的人用 VIM,有的用 Emacs,只有 Linus 說(shuō)"GNU Emacs is evil",但是其實(shí)他用的是一種跟 Emacs 有同樣鍵綁定功能的 MicroEmacs。大家都是用編輯器編輯了程序文件,然后用 make 這樣的自動(dòng)工具調(diào)用 gcc 編譯器完成編譯工作的。
我相信: IDE is evil。我有一些用 Windows 的 IDE 寫(xiě)程序的朋友,他們對(duì)那套東西已經(jīng)很精通了。但是我卻驚奇的發(fā)現(xiàn),他們竟然把編譯器和匯編器的概念都分不清楚,甚至有的人連"編輯器"和"編譯器"都搞混淆了!他們只知道在一個(gè)窗口里輸入了代碼,點(diǎn)擊一個(gè)按鈕就可以編譯程序,但是這里面到底是怎么工作的,他們不知道!他們被蓋在上面的窗口擋住了視線,甚至?xí)詾槟莻(gè)按鈕就是編譯器!
他們對(duì)那些 IDE 的熱鍵背的滾瓜爛熟,但是我卻看到他們?cè)谝粋(gè)函數(shù)一個(gè)函數(shù)的把別人的 ANSI 風(fēng)格的代碼變成 VC 的風(fēng)格。想想這件事在 VIM 里有多么簡(jiǎn)單,一瞬間就可以搞定。
為什么 UNIX 程序員不用 IDE?明白了這個(gè)道理你就能體會(huì)到 UNIX 的
設(shè)計(jì)
思想了。首先,一個(gè) IDE 集成了編輯器,編譯器,匯編器,調(diào)試器,跟蹤器...... 這個(gè)編輯器功能肯定比不上 VIM 或 Emacs,編譯器比不上 GCC,匯編器比不上 as,調(diào)試器比不上 gdb, ddd, 跟蹤器比不上 strace, ltrace, truss。你得到的是一套整合的很好的低能的程序。如果你對(duì)調(diào)試器的功能不滿意,你只好換用另外一套IDE,但是這套 IDE 的熱鍵,菜單,編輯器功能,按鈕...... 跟原來(lái)那個(gè)有很大不同。你不得不花很多時(shí)間來(lái)熟悉新的環(huán)境,而不能保持原來(lái)的某些東西。
而在 UNIX 下就不一樣了。你可以用你最喜歡的 VIM 編輯程序,你在 VIM 里可以調(diào)用 GNU make,make 可以調(diào)用 gcc, ld, ... 實(shí)際上 make 能幫你很多忙。make的出錯(cuò)信息可以被 VIM 捕獲,VIM 能幫你在源程序里定位。你如果喜歡 icc, 你可以讓 make 用 icc 而不是 gcc。你如果覺(jué)得 gdb 跟蹤變量時(shí)比較麻煩,你可以用 ddd 來(lái)顯示各種數(shù)據(jù)結(jié)構(gòu)之間的關(guān)系。你還可以在 Emacs 里調(diào)用 gdb,那樣就可以同步顯示源代碼了。而且 VIM 和 Emacs 還可以編輯很多其它東西,比如信件,LaTeX 文檔,HTML,配置文件...... 你不用另外找一個(gè)什么編輯器來(lái)干這些雜活了。很多程序比如 Mutt, tin 都可以在內(nèi)部使用 VIM,這樣就更方便了。
釋放內(nèi)存
我在 Windows 下做過(guò)的一件最傻的事情莫過(guò)于"釋放內(nèi)存"了。有一天我看到一個(gè) Windows 程序說(shuō):"這個(gè)程序可以幫你把大量?jī)?nèi)存釋放出來(lái)給一個(gè)很大的程序用。"我試了一下,居然一下把我的 64M 內(nèi)存釋放出來(lái) 48M!我高興極了,F(xiàn)在想一想,那是多么傻的事情,那么多的內(nèi)存留著干什么?不用白不用啊!一操作系統(tǒng),居然還需要?jiǎng)e人寫(xiě)的程序來(lái)釋放內(nèi)存,那是什么樣的操作系統(tǒng)?
在 Linux 下用 free 命令,你會(huì)發(fā)現(xiàn)你的內(nèi)存幾乎每時(shí)每刻都快要被用完。那是因?yàn)?Linux 把大部分內(nèi)存用來(lái)作為磁盤(pán)緩沖了。Linux 有比 Windows 先進(jìn)的磁盤(pán)緩沖技術(shù)。你有沒(méi)有發(fā)現(xiàn)你往硬盤(pán)寫(xiě)數(shù)據(jù)的時(shí)候,很快就完成了?那是因?yàn)?Linux在內(nèi)存里有很多磁盤(pán)緩沖區(qū),你要寫(xiě)到硬盤(pán)上的數(shù)據(jù)先被寫(xiě)到了這些內(nèi)存里,然后 Linux 就告訴你"拷貝完成" ,當(dāng)你馬上又想刪除剛才寫(xiě)入的某些數(shù)據(jù)時(shí),Linux 只是把數(shù)據(jù)從內(nèi)存里移除,然后報(bào)告" 刪除完成"。在一定的間隔時(shí)間后,Linux 才把數(shù)據(jù)寫(xiě)回硬盤(pán),這樣不但高效,避免了多次硬盤(pán)操作,而且減少了文件的不連續(xù),也就是減少了"碎片"。Windows 當(dāng)然也有磁盤(pán)緩沖,但是由于它內(nèi)存管理的低效率,它不敢把大量?jī)?nèi)存都用來(lái)作為磁盤(pán)緩沖,因?yàn)樗鼪](méi)有能力在用的時(shí)候隨時(shí)把內(nèi)存收回來(lái)。
Linux 能干的高級(jí)的事情 Windows 都干不了
當(dāng)然有很多事情是Linux/UNIX的專利了。因?yàn)?Windows 只能裝在 PC 機(jī)上,好像以前也有 Alpha 可以使用 Windows NT,但是就是沒(méi)見(jiàn)到有人用。PC 機(jī)的能力是很低的,像我們編程序處理 NP-Hard 問(wèn)題的人,用 Windows 的機(jī)器顯然速度不夠,而且有時(shí)一個(gè)問(wèn)題算上幾天甚至幾個(gè)星期,Windows 機(jī)器是以"死機(jī)"著稱的,我們?cè)趺茨芊判?
所以幾乎所有科學(xué)計(jì)算程序,EDA 程序,高性能圖像處理程序都不是 Windows 的。他們有時(shí)也會(huì)移植一些給 Windows,但是常常降低那些程序的能力。你比較過(guò)Windows 版本的 Mathematica 和 Linux 的有什么區(qū)別嗎?
IBM 制造的最大的并行計(jì)算機(jī)有 8000 多個(gè)處理器,Windows 不可能有能力管理這么多處理器,它用的是什么操作系統(tǒng)?答案是 Linux。
《泰坦尼克號(hào)》電影里的三維動(dòng)畫(huà),那么細(xì)膩逼真,Windows機(jī)器能做出來(lái)嗎?不行。那也是 Linux 機(jī)器做的。
你想想,是不是有些 Windows 程序常常彈出一個(gè)窗口要你選擇 "Yes or No"?你不點(diǎn)擊它它就不下去。你覺(jué)不覺(jué)得你的程序在侵犯你的尊嚴(yán)?你是一個(gè)人!還有就是很多 Windows 程序把人當(dāng)成傻瓜,而它是"智能程序"。比如,有一個(gè)程序就是喜歡把你的每句話第一個(gè)字母都變成大寫(xiě),我不說(shuō)它是誰(shuí)了,你遇到的時(shí)候就知道了。如果連"一句話開(kāi)頭一個(gè)字母要大寫(xiě)"這么明顯的問(wèn)題都需要程序幫你糾正的話,人腦還用來(lái)干什么?況且如果你故意想要不大寫(xiě)的話,那就更麻煩了,我楞是沒(méi)有從它那一大堆菜單里找到怎么關(guān)閉這個(gè)愚蠢的選項(xiàng)。
只有符號(hào)才能完全操縱計(jì)算機(jī)
我們來(lái)說(shuō)說(shuō)很多初學(xué) Linux 的用戶。雖然他們?cè)谟?Linux,但是他們打心眼兒里是覺(jué)得 Windows 的工作方式好,他們希望 Linux 有一天能"像Windows那樣"。你說(shuō):"我鼠標(biāo)一點(diǎn),我菜單一拉,...... 就可以完成我的操作。" 但是我要告訴你:"Linux 從來(lái)沒(méi)有摹仿 Windows,將來(lái)也不會(huì)。Linux 從誕生之日起,它的工作方式就比 Windows 的先進(jìn)。Linux 屬于能勇敢面對(duì)符號(hào)的人。只有符號(hào)才能完全操縱計(jì)算機(jī)。"
這恐怕就是Windows和其它操作系統(tǒng)望塵莫及的地方了。UNIX 程序設(shè)計(jì)之統(tǒng)一,配合之完美,真使我難以置信!shell, grep, find, awk, sed, make, Perl,Emacs, vi, tin, Mutt, ... 它們是那么的具有一致性!你一旦學(xué)會(huì)了 sed 的正則表達(dá)式,其它程序基本上都能用了。你一旦學(xué)會(huì)了 vi 和 VIM, 你會(huì)發(fā)現(xiàn)它的操作是那么的有規(guī)律性,似乎vi的設(shè)計(jì)者在幾十年前就已經(jīng)設(shè)計(jì)好了 VIM 在今天的完美而統(tǒng)一的操作方式!而且vi的操作還體現(xiàn)在 Mutt, tin 等很多程序中。你甚至可以把 bash 設(shè)置為 vi 的輸入方式來(lái)輸入命令行,我就是這么做的。一個(gè)程序可以調(diào)用另外一個(gè)程序來(lái)得到數(shù)據(jù),可以把數(shù)據(jù)交給它處理后返回來(lái),可以在自己的窗口里"嵌入"另外一個(gè)程序。
在 Windows 和其它非 UNIX 操作系統(tǒng)中,這種合作是非常困難的。我曾經(jīng)在Windows 下使用 Perl來(lái)進(jìn)行一些自動(dòng)工作。但是 Windows 的文件操作,管道是如此的不穩(wěn)定,程序之間基本不能合作。你別想在 Visual Studio 窗口里面嵌入U(xiǎn)ltraEdit 編輯器,你別想用一個(gè) expect 腳本來(lái)控制 telnet 到水木清華BBS,這就是為什么 helloooo 誕生在 Linux 而不是 Windows。我曾經(jīng)試圖從Windows + Exceed + SecureCRT ssh 登錄到 Sun 機(jī)器,然后通過(guò) ssh 的隧道(X11 tunnel)把 X 程序傳到 Exceed 上運(yùn)行,但是搞了兩天都沒(méi)有成功!而在Linux 下這個(gè)事情根本就是不用怎么配置的,OpenSSH 和 XFree86 本來(lái)就是完美結(jié)合,只要打開(kāi) ssh 的 "forward X11" 選項(xiàng)就什么都搞定了。
Windows 的程序都是大而全,大而雜,所有的電子郵件程序都需要自己提供編輯器,自己發(fā)送和收取郵件,自己顯示郵件的附件。每一個(gè)BBS程序都提供自己的 Virtual Terminal, 自己的通訊代碼。每一個(gè) IDE 都自己提供編輯器,編譯器,匯編器,調(diào)試器。人們?yōu)榱耸褂靡环N新的程序,需要適應(yīng)所有這些它提供的界面,而不能使用自己喜歡的編輯器的鍵綁定,菜單組織...... 不能 DIY!
你要知道,最高級(jí)的電腦是定做的,自己想要什么什么
CPU
,什么主板,多少內(nèi)存,什么硬盤(pán),鍵盤(pán),鼠標(biāo),顯示器都是自己選擇的。最高級(jí)的滑板,自己想要什么牌子的版面,什么牌子的沙,什么橋,什么輪子,什么軸承,也都是自己選的。最高級(jí)的乒乓球拍,木板,膠皮,海綿,膠水都是可以自己選擇...... 而用Windows 程序,你得到的是大雜燴,就像你去買(mǎi)"品牌機(jī)",只有那么幾種配置,而且附帶很多你不需要的軟件和服務(wù);就像你去買(mǎi)組裝好的滑板,你想要大一點(diǎn)的輪子和窄一點(diǎn)的板子,但是你沒(méi)有這種選擇余地!Windo ws 程序就相當(dāng)于最廉價(jià),最次的滑板。但是它卻會(huì)花你更多的錢(qián),因?yàn)橐坏┮粋(gè)部件壞了,或者你不喜歡了,你不能另外找一個(gè)好的換掉它,你必需重新買(mǎi)全套配件!
我寫(xiě)這么多的目的是什么?我希望喜歡 Linux 的朋友,完全清除微軟和Windows 灌輸在你腦子里的謬論,別再相信它們所謂的"新技術(shù)",別再追趕Windows,因?yàn)樽汾s Windows =倒退。馬克思有一個(gè)思想很重要,"新生事物并不一定是在最近出現(xiàn)的。" UNIX,Xwindow, TeX 雖然都比 Windows 先出現(xiàn),但是它們才是先進(jìn)生產(chǎn)力的代表。我們要清楚的認(rèn)識(shí)到什么才是真正的現(xiàn)代化,什么才是真正的自動(dòng)化。
勇敢的拿起像 bash, FVWM, VIM, Emacs, Mutt, lftp ...... 這樣強(qiáng)大的程序,不要再埋怨"Linux 為什么不能像 Windows 那樣",不要再浪費(fèi)時(shí)間試用這樣那樣的程序,不要再忙著升級(jí)。是你需要改變而不是 Linux 和 UNIX,Linux 現(xiàn)在就可以成為你的好朋友。你需要認(rèn)識(shí)它,了解它,信任它,才能完全的靠它來(lái)高效的工作,省出時(shí)間來(lái)處理世界上更加值得處理的事情。