我已經(jīng)半年沒(méi)有使用 Windows 的方式工作了。Linux?高效的完成了我所有的工作某饰。
GNU/Linux?不是每個(gè)人都想用的儒恋。如果你只需要處理一般的事務(wù),打游戲黔漂,那么你不需要了解下面這些了诫尽。
我不是一個(gè)狂熱的自由軟件份子,雖然我很喜歡自由軟件炬守。這篇文章也不是用來(lái)推行自由軟件運(yùn)動(dòng)的牧嫉,雖然我覺(jué)得自由軟件運(yùn)動(dòng)是非常好的。
這篇文章也不是用來(lái)比較 Linux 和 Windows 內(nèi)核效率减途,文件系統(tǒng)酣藻,網(wǎng)絡(luò)服務(wù)的。我現(xiàn)在是作為一個(gè)用戶而不是一個(gè)開(kāi)發(fā)者來(lái)說(shuō)話的鳍置,我們的討論是基于操作辽剧,應(yīng)用層面的。是為了告訴大學(xué)里還不了解税产,或者不理解 UNIX 的科學(xué)工作者和大學(xué)生怕轿,UNIX?比 Windows 更適合用于科學(xué)研究工作,請(qǐng)大家理解 UNIX 的工作方式辟拷,不要用 Windows 的標(biāo)準(zhǔn)來(lái)要求 Linux撞羽,而要用一個(gè)科學(xué)工作者的標(biāo)準(zhǔn)來(lái)要求自己,用 UNIX 的思想來(lái)武裝自己衫冻。
我顯然是反對(duì)在大學(xué)诀紊,特別是理工科專業(yè)推廣 Windows 的。我也反對(duì)在對(duì)“娃娃”?們的計(jì)算機(jī)啟蒙教育中使用 Windows隅俘。因?yàn)?Windows 不論從技術(shù)上邻奠,經(jīng)濟(jì)上,思想風(fēng)格上都是與我們培養(yǎng)高科技人才的目標(biāo)格格不入的为居。Windows?的流行屬于歷史遺留問(wèn)題惕澎,爺爺一級(jí)的人當(dāng)然已經(jīng)不可救藥,但是我們不應(yīng)該讓下一代繼續(xù)走上歧途颜骤。
UNIX?不是計(jì)算機(jī)專家的專利
當(dāng)我建議一些非計(jì)算機(jī)專業(yè)的人用 Linux 的時(shí)候,很多人說(shuō):“UNIX?是計(jì)算機(jī)系的人用的捣卤,我們不能理解忍抽。”?“UNIX?是男孩用的董朝,我們女孩不用鸠项。”
但是其實(shí)世界上的大多數(shù)科學(xué)家和工程師幾乎用的都是 UNIX 作為他們的電腦工具子姜。就因?yàn)樗?jiǎn)單祟绊,可靠,穩(wěn)定,強(qiáng)大牧抽,有趣嘉熊。甚至很多時(shí)候 UNIX 就是唯一的選擇。
你說(shuō):“我們都會(huì)用 UNIX 的話扬舒,你們計(jì)算機(jī)專業(yè)的人還用來(lái)干什么阐肤?”?很榮幸的告訴你,計(jì)算機(jī)專業(yè)的有一部分人就是專門為你們提供這樣強(qiáng)大而方便的計(jì)算機(jī)工具的讲坎。如果他們制造的工具只有自己會(huì)用的話孕惜,那這個(gè)工具還有什么用?
理解 GNU/Linux
不要用 Windows 的標(biāo)準(zhǔn)來(lái)要求 Linux晨炕。
由于GNU/Linux這個(gè)詞太長(zhǎng)衫画,下面如果沒(méi)有特別指明,“Linux”就是指“GNU/Linux”瓮栗。
在這個(gè)年代削罩,恐怕沒(méi)有人需要我來(lái)介紹 Linux 是什么了吧?如果你覺(jué)得“Linux?只不過(guò)是跟 DOS 差不多的東西”遵馆,那請(qǐng)問(wèn)問(wèn)你旁邊的 Linux 用戶鲸郊,Linux?到底是什么?
那為什么我還要寫一篇這樣的文章货邓?因?yàn)楦汛椋野l(fā)現(xiàn)還有很多人不不理解 Linux 和 UNIX,雖然他們也在用它换况,但是他們有時(shí)會(huì)問(wèn):“為什么 Linux 不能像 Windows 那樣?……职辨?”,“怎么Redhat Linux不能 mount NTFS 分區(qū)戈二!”舒裤,“Linux?下用什么整理硬盤?”觉吭,“什么時(shí)候OpenOffice才能完全兼容Word文件疤诠?”鲜滩,“現(xiàn)在還有什么Windows能干的事情L(zhǎng)inux干不了的伴鳖?”……
他們有40G的硬盤,卻只為 Linux 分配了2G空間徙硅,有時(shí)還抱怨“這個(gè)東西怎么占這么多硬盤榜聂!”?似乎 Windows 該占用大部分硬盤。他們把重要的數(shù)據(jù)裝在Windows的分區(qū)嗓蘑,似乎信不過(guò)Linux须肆。他們總是到處尋找新奇的匿乃,好看的GUI程序,對(duì)命令行的東西一概不屑一顧豌汇。他們對(duì) Drag&Drop幢炸,菜單配置,自動(dòng)升級(jí)非常感興趣瘤礁。他們?nèi)绻业揭粋€(gè)很像 Windows 程序的 Linux 程序阳懂,一定會(huì)很高興的說(shuō):“哈哈!Linux?也能……了柜思!”?如果Linux在某種測(cè)試中勝過(guò)Windows岩调,他們會(huì)高興得跳起來(lái)。他們沒(méi)有辦法用Linux解決問(wèn)題的時(shí)候赡盘,甚至用Wine[5]來(lái)運(yùn)行Windows程序号枕。有時(shí)實(shí)在沒(méi)辦法,只好重起到 Windows陨享,或者干脆省得麻煩葱淳,在 Windows 下裝一個(gè) VMWare[6]?虛擬一個(gè) Linux 玩。
你如果出現(xiàn)了上面的情況抛姑,說(shuō)明你的思想受到了 Windows 的某種潛移默化的影響和誤導(dǎo)赞厕。你沒(méi)有能夠從本質(zhì)上理解存在于 Linux 身上的 UNIX 思想。你支持 Linux定硝,你喜歡 Linux皿桑,你能從中感覺(jué)到快樂(lè),這非常好蔬啡。你現(xiàn)在只需要明白的是:Linux 從來(lái)就不是一個(gè)玩具诲侮,它是天才UNIX的后代。UNIX?是自晶體管發(fā)明以來(lái)最偉大的發(fā)明[7]箱蟆,它從誕生那一天開(kāi)始就比 Windows 的設(shè)計(jì)出色沟绪。
你要體會(huì)什么叫做“設(shè)計(jì)”,一個(gè)糟糕的設(shè)計(jì)并不是到后來(lái)縫縫補(bǔ)補(bǔ)就可以變好的空猜,而一個(gè)出色的設(shè)計(jì)绽慈,不但可以以不變應(yīng)萬(wàn)變,而且可以影響到后來(lái)者辈毯。一個(gè)出色的設(shè)計(jì)配上一個(gè)出色的實(shí)現(xiàn)久信,那就是非常出色的發(fā)明。Linux 就是這樣的一個(gè)出色的發(fā)明漓摩。 Linux 并不需要追趕 Windows,也不需要打垮微軟入客。它的最終目標(biāo)是改變整個(gè)計(jì)算機(jī)世界管毙,還人們自由腿椎,給人們樂(lè)趣和方便。
Unix 是簡(jiǎn)單的夭咬,你不需要成為一個(gè)天才也能理解這種簡(jiǎn)單啃炸。
UNIX的設(shè)計(jì)者 Dennis Ritchie 說(shuō):“Unix is simple. It just takes a genius to understand its simplicity.”?但是我不這么認(rèn)為,因?yàn)槲也皇且粋€(gè)天才卓舵,但是我卻勇敢的把 Windows 完全刪除掉南用,遇到不明白的事情的時(shí)候努力用 UNIX 的方式去解決,而不是尋求 Windows 的幫助√屯澹現(xiàn)在我體會(huì)到了 UNIX 的思想和好處裹虫,我可以用比 Windows 高效幾倍的效率工作。因?yàn)槲蚁嘈胚@樣的信念:“Windows?能辦到的事 Linux 一定能辦到融击,而且辦的更好筑公。”
這小節(jié)開(kāi)頭的話應(yīng)該改成:“Unix 是簡(jiǎn)單的尊浪,你不需要成為一個(gè)天才或是計(jì)算機(jī)專家匣屡。但是在這個(gè)沖斥著 Windows 錯(cuò)誤觀念的世界,你需要信念和勇氣才能理解它的簡(jiǎn)單拇涤〉纷鳎”?我下面就告訴你一些我理解到的東西。首先鹅士,你要知道的是微軟在國(guó)際科學(xué)領(lǐng)域是根本沒(méi)有地位的券躁。
微軟的地位
微軟的名聲在歐洲和美國(guó)的大學(xué)里,特別是在計(jì)算機(jī)系里之壞如绸,大家可能有所耳聞嘱朽。我認(rèn)識(shí)的 MIT,Stanford 的教授怔接,貝爾實(shí)驗(yàn)室的專家搪泳,甚至一個(gè)歐洲小國(guó)的高中計(jì)算機(jī)老師都絕口不提微軟的名字。在他們眼里扼脐,微軟只是一個(gè)沒(méi)有真技術(shù)岸军,專靠在落后國(guó)家商業(yè)宣傳和壟斷經(jīng)營(yíng)的小公司瓦侮。這個(gè)“小”并不是說(shuō)它人少艰赞,錢少,而是說(shuō)它先進(jìn)技術(shù)少肚吏。
我上次和王益合作寫了一個(gè)算法演示程序方妖,那個(gè)算法是貝爾實(shí)驗(yàn)室一位科學(xué)家Steven Fortune很天才的發(fā)明,為了程序能夠被身邊大多數(shù)人使用罚攀,我們選擇了 VC+MFC 作為平臺(tái)党觅。我在分析算法時(shí)還得到 Fortune 很熱情的鼓勵(lì)雌澄,寄給我一份資料,還多次回信耐心的給我講解了很多細(xì)節(jié)杯瞻。但是程序完成之后镐牺,我把樣品發(fā)給 Fortune,他回信說(shuō):“對(duì)不起魁莉。我機(jī)器上沒(méi)有 MFC睬涧。”?話說(shuō)的很客氣旗唁,但是我已經(jīng)感覺(jué)到了他對(duì) Windows 的不屑畦浓。然后我把 MFC 靜態(tài)編譯進(jìn)程序再發(fā)給他,他就沒(méi)有再回信了逆皮。他顯然不是瞧不起我宅粥,而是確實(shí)有難處。
你能感覺(jué)到這位科學(xué)家對(duì)微軟和 Windows 是什么態(tài)度了吧电谣?不是反感秽梅,而是他心里根本沒(méi)有 Windows 這個(gè)東西!微軟在高科技領(lǐng)域沒(méi)有發(fā)展剿牺,那么它怎么生存呢企垦?到發(fā)展中國(guó)家去發(fā)展一下,他們的人民還對(duì)電腦一無(wú)所知晒来,我說(shuō)不定甚至可以打入大學(xué)的計(jì)算機(jī)系呢钞诡。我送他們軟件,我捐錢蓋大樓湃崩,我出錢找圖靈獎(jiǎng)獲得者來(lái)演講荧降,讓他們覺(jué)得我們都是科學(xué)家!
好了攒读,現(xiàn)在全國(guó)的大學(xué)包括清華朵诫,幾乎所有人機(jī)器必裝盜版 Win2000,Office XP薄扁,學(xué)校的選課系統(tǒng)是非IE不能正確瀏覽剪返,論文用 Word 編輯,演示用ppt做邓梅,email?的通知附件是 doc 文件脱盲,你不用 Word 打不開(kāi),連 863 項(xiàng)目都用 VC 寫程序了日缨。我很久以前就看到一份報(bào)紙說(shuō)钱反,“微軟為什么不嚴(yán)厲打擊盜版?”?這篇文章說(shuō),微軟非但不打擊中國(guó)的盜版行為面哥,而且有放任之趨勢(shì)乙各。放長(zhǎng)線吊大魚,“以后我要你們加倍的來(lái)還我幢竹!”?確實(shí)如此,它的目的快實(shí)現(xiàn)了恩静。
Windows 籠罩下的中國(guó)計(jì)算機(jī)教育
說(shuō)句丟臉的話焕毫,比爾蓋茨很久以前是我的偶像……
在中國(guó),比爾蓋茨被很多人奉為神圣驶乾,“少年電腦天才”邑飒,甚至有的人提到他的名字就做出“抱拳對(duì)天”的姿勢(shì)。很多人談到微軟的“新技術(shù)”级乐,“高科技”?都是眉飛色舞疙咸。各種“VC編程圣經(jīng)”,“深入了解 Visual C++”之類的書风科,在開(kāi)頭幾頁(yè)都會(huì)出現(xiàn)非常肉麻的字眼撒轮,“在那團(tuán)團(tuán)的混沌中,一個(gè)開(kāi)天辟地的精靈贼穆,Windows 1.0题山,誕生了……”
微軟的軟件被這么多人盜用,那么人們是怎樣使用這些盜版程序的呢故痊?先看看電腦培訓(xùn)班顶瞳,教的都是一些 DOS 命令,打字愕秫,Windows?基本操作慨菱,Word?文檔處理,PowerPoint戴甩,高級(jí)班可能有 Excel符喝,Access……?參加各種微軟認(rèn)證考試,MCSE等恐,MSDE 的人絡(luò)繹不絕洲劣。考試輔導(dǎo)班都貼出了“280元课蔬,考過(guò)為止”之類的字樣囱稽。考試參考資料更是昂貴二跋,有些電腦書店整整兩書架都是“Microsoft Press”的東西战惊。我有個(gè)同學(xué)參加認(rèn)證考試,每門考試都要200多元扎即。而且你一次考不過(guò)可以再考吞获,又要交錢况凉。他后來(lái)還津津樂(lè)道跟我說(shuō),看我各拷,花了XXXX(一個(gè)四位數(shù))元考過(guò)了微軟認(rèn)證刁绒,得到一張比爾蓋茨親筆簽名的證書和價(jià)值6000元的 Windows XP 內(nèi)部發(fā)行版。
“電腦要從娃娃抓起”烤黍,我們?cè)賮?lái)看看娃娃們學(xué)的是什么知市。大部分家長(zhǎng)給孩子買了電腦之后,他們首先就會(huì)裝一個(gè)盜版的 Windows速蕊,然后買來(lái)盜版的游戲開(kāi)始玩嫂丙。如果哪個(gè)孩子會(huì)用 Delphi 編程序,那可不得了规哲。報(bào)社記者跟啤,電視臺(tái)爭(zhēng)相報(bào)導(dǎo),說(shuō)唉锌,某某學(xué)校的初中生某某隅肥,在別人都還在玩電腦游戲這種“初級(jí)階段”的時(shí)候就已經(jīng)用 Delphi 寫程序了。鏡頭還瞄準(zhǔn)了他顯示器上面的像框中的比爾蓋茨頭像糊秆!
我剛進(jìn)入大學(xué)計(jì)算機(jī)系時(shí)還不懂得什么是操作系統(tǒng)武福,因?yàn)槲乙郧爸挥眠^(guò)“中華學(xué)習(xí)機(jī)”《环看到新入學(xué)的同學(xué)們各個(gè)談?wù)摰亩际?“Windows 95”捉片,“VC”……?我簡(jiǎn)直覺(jué)得我落后了好幾十年一樣,整個(gè)一土人汞舱,根本跟他們答不上話伍纫。好不容易找到一個(gè)比較熟的同學(xué)問(wèn)了一下:“你們天天談?wù)摰奈?5是什么啊昂芜?”答:“win95就是一個(gè)操作系統(tǒng)莹规,跟DOS是一類霹俺∫ぶ停”“朵死是什么?”?“你連DOS都不知道是什么睦番?別在計(jì)算機(jī)系混了欢际∧甘校”?學(xué)校上課當(dāng)然不講VC編程之類的東西,但是上 Pascal 的老師有一次就說(shuō):“嗨损趋,我們學(xué)校真是落后』季茫現(xiàn)在別人都用 C, C++,甚至 VC 了,我們還在講 Pascal蒋失。不知道什么時(shí)候才能有VC課啊返帕。你們出去也是要用VC的,只好自學(xué)了篙挽【S”?于是,有些同學(xué)很多時(shí)候上課都捧著一本很重的“Windows 編程大全”之類的書铣卡,根本沒(méi)有聽(tīng)課观腊。吃飯時(shí)就念念有詞的跟我說(shuō),“代碼的優(yōu)化是無(wú)止境的”算行,“匈牙利命名法真是偉大的發(fā)明?”?……?這就是中國(guó)很多大學(xué)計(jì)算機(jī)系的情況。
感覺(jué)到無(wú)知了苫耸?這不是偶然的州邢,而是微軟長(zhǎng)久以來(lái)埋下的伏筆。它要讓無(wú)知的大家都把它奉為神圣褪子,它要讓支持UNIX量淌,Xwindow的人一旦說(shuō) UNIX 好,Xwindow?好的時(shí)候嫌褪,都被一群人圍著說(shuō)教:“這個(gè) Windows 也能做到?”呀枢,“你對(duì) Windows 有偏見(jiàn)”,“微軟才是主流啊”笼痛,“你敢瞧不起 win2k裙秋?”,“.NET 就是世界潮流”缨伊,“微軟的畢竟是新技術(shù)”摘刑,“有錢就是有技術(shù)”……?甚至在一番論戰(zhàn)比較后敗下來(lái)還是要說(shuō):“Windows?性能差點(diǎn),但是易用性強(qiáng)”刻坊,“Windows?是老百姓用的枷恕,要求別那么高?”,“微軟那么有錢谭胚,以后想超過(guò) UNIX 還不容易嗎徐块?”……
發(fā)達(dá)國(guó)家的計(jì)算機(jī)教育
我前段時(shí)間在 USENET 發(fā)文問(wèn)有關(guān) Scheme 語(yǔ)言的問(wèn)題時(shí),認(rèn)識(shí)了一位丹麥人灾而。他解決了我所有的問(wèn)題胡控,并且建議我閱讀一些很“深?yuàn)W”的有關(guān)程序語(yǔ)言語(yǔ)法,文法的書绰疤,他告訴我很多網(wǎng)站可以學(xué)習(xí) LISP铜犬,Scheme,人工智能,算法癣猾。他叫我看 Jonathan Rees 的論文?"Syntactic Closures"敛劝。他還打包給我寄過(guò)來(lái)一份 MIT 的?"How to Design Programs"。他說(shuō)他在自己的 PC 機(jī)上裝的是 Linux纷宇,他用 Emacs 編輯夸盟,運(yùn)行 Scheme 程序。他對(duì) Emacs 的了解和愛(ài)好真是使人驚訝像捶。他大學(xué)本科畢業(yè)時(shí)做的畢業(yè)設(shè)計(jì)是一個(gè) Scheme 解釋器上陕。這對(duì)于我來(lái)說(shuō)是望塵末及了。
他是那么的不厭其煩拓春,我的每一個(gè)問(wèn)題他都詳細(xì)的回答释簿。我有時(shí)都覺(jué)得過(guò)于詳細(xì)了,怎么這么耐心芭鹈А庶溶?我覺(jué)得他似乎是我的高中老師。他是什么樣的人呢懂鸵?我好奇的打聽(tīng)了他的情況偏螺。原來(lái),他是丹麥一所普通高中的計(jì)算機(jī)老師匆光。
他說(shuō)他在高中里講授程序設(shè)計(jì)和算法套像,計(jì)算機(jī)語(yǔ)言文法。他說(shuō)用 Scheme终息,他的學(xué)生不用再為內(nèi)存泄漏等程序語(yǔ)言本身的問(wèn)題而煩惱夺巩,而專注于問(wèn)題和算法本身。有利于培養(yǎng)學(xué)生解決問(wèn)題的能力周崭,特別是用計(jì)算機(jī)解決數(shù)學(xué)問(wèn)題的能力劲够。
天哪!為什么歐洲出現(xiàn)那么多數(shù)學(xué)家休傍,幾何學(xué)家征绎?你看看別人重視的是什么!我們的計(jì)算機(jī)教育如果繼續(xù)這樣下去磨取,只會(huì)沿著彎路越走越遠(yuǎn)人柿!
微軟和它的朋友們的如意算盤
下面來(lái)看看微軟的收入是怎么來(lái)的。首先忙厌,Windows 98系列操作系統(tǒng)凫岖,一個(gè)就是 100 多美元,每次升級(jí)又是幾乎同樣的價(jià)錢逢净。Windows NT 還要貴幾倍哥放,而且有用戶數(shù)目限制歼指,5個(gè)用戶的,10個(gè)用戶的……?以后如果要增加用戶數(shù)目還要按比例付錢甥雕。
花了如此多錢買來(lái)的操作系統(tǒng)就能用了嗎踩身?它竟然連壓縮程序都沒(méi)有提供!你裝上 Windows 之后一般第一件事就是去下載一個(gè) WinZip 吧社露,“只要 29 美元”挟阻。Windows?會(huì)中病毒啊,馬上花 70 美元買一個(gè) Norton AntiVirus 吧峭弟。還有黑客呢附鸽?再買一個(gè) Norton Internet Security 好了,100?美元瞒瘸。系統(tǒng)需要優(yōu)化坷备,磁盤需要整理,買一個(gè) Norton System Works 是你最佳的解決方案情臭,100美元击你。
可是你現(xiàn)在還是不能干正事啊谎柄!你想要一個(gè) Word, PowerPoint?那就買一套 Office XP 吧惯雳,一起買便宜些朝巫,$459.90。
那些程序不會(huì)用笆啊劈猿!那些菜單怎么設(shè)置,到底有什么功能俺蹦酢揪荣?看“幫助”也學(xué)不會(huì)。買本書看看吧往史,我推薦?“Special Edition Using Microsoft Office XP”仗颈,不貴,$27.99椎例。這本書里面大部分是屏幕抓圖挨决,還是買一本舊的比較劃算,$17.85订歪。
你如果只是當(dāng)個(gè)秘書脖祈,上面的差不多還湊合了∷⒔可是你有更高的追求盖高,你想成為 Windows 程序員慎陵。首先買一個(gè) Visual Studio.NET 吧,要不然怎么編譯程序喻奥。$494.95席纽。
為了緊跟微軟動(dòng)向,世界潮流映凳,不能不注冊(cè)個(gè) MSDN 什么的吧胆筒?這個(gè)貴一點(diǎn),不過(guò)物有所值啊诈豌,$2,799仆救。
嗯,你現(xiàn)在已經(jīng)是上層階級(jí)矫渔,白領(lǐng)人士了彤蔽。你現(xiàn)在可以像這樣“自由”的,“安全”的生活了
為什么要反對(duì)使用 Windows
很多人都說(shuō)不應(yīng)該完全否定 Window庙洼,Windows 也有它的長(zhǎng)處顿痪。不應(yīng)該罵微軟。
對(duì)油够。Windows 容易操作蚁袭,適合普通用戶。如果微軟把它自己定位在 P&G石咬,Philips 那樣的地位揩悄,能夠給我們的百姓提供周到的,完善的鬼悠,價(jià)廉物美的服務(wù)删性。那我肯定是很喜歡它的。
但是從上面的種種情況說(shuō)明焕窝,微軟是一個(gè)野心極大的國(guó)際壟斷組織蹬挺!它的產(chǎn)品沒(méi)有一個(gè)是不出問(wèn)題的:Windows 不穩(wěn)定,容易中病毒它掂,而微軟不為大家免費(fèi)提供殺毒軟件巴帮。我就是要讓你們花錢買我的朋友 Symantec 的殺毒軟件,誰(shuí)叫你們已經(jīng)上了我的賊船虐秋?這叫什么售后服務(wù)拔稀!
你買來(lái)微軟的程序熟妓,安裝的時(shí)候一般都有一個(gè)協(xié)議雪猪,說(shuō):“由于微軟的程序造成你的數(shù)據(jù)損壞或丟失,微軟概不負(fù)責(zé)起愈≈缓蓿”?我想很多人肯定覺(jué)得這個(gè)不合理译仗,不想按那個(gè)?"I accept"。但是你的軟件買都買來(lái)了官觅,錢都花了纵菌,現(xiàn)在一按?"I decline",安裝程序馬上就會(huì)退出休涤。你只好被迫點(diǎn)擊了?"I accept"咱圆!這不是不平等條約嗎?
我已經(jīng)目睹了好幾個(gè)朋友的文檔被 Microsoft Word 損壞功氨,有的是編輯了十多天的30多頁(yè)的論文序苏,有的是費(fèi)了很大工夫做出來(lái)的個(gè)人簡(jiǎn)歷,那個(gè)朋友為此失去了到自己向往的 P&G 工作的機(jī)會(huì)捷凄。就在他要投簡(jiǎn)歷的前一個(gè)晚上忱详,就在那一瞬間……?不知道他痛哭的時(shí)候有沒(méi)有想起要投訴微軟,可是誰(shuí)叫我們用的都是盜版呢跺涤,況且你還點(diǎn)擊了?"I accept"匈睁。
微軟仗勢(shì)已經(jīng)占有大部分PC市場(chǎng),制定不符合國(guó)際標(biāo)準(zhǔn)的“微軟的標(biāo)準(zhǔn)”桶错,以不合理的方式壓制其它公司的軟件航唆,這個(gè)問(wèn)題已經(jīng)在美國(guó)司法部鬧了很久了。他甚至在 Windows 系列操作系統(tǒng)中放置能夠通過(guò)網(wǎng)絡(luò)泄漏用戶信息的代碼院刁,以至于 Windows 剛進(jìn)入澳大利亞時(shí)被澳大利亞政府禁止使用糯钙。
有些人說(shuō):“微軟畢竟開(kāi)創(chuàng)了一個(gè)歷史,造就了今天的 IT 行業(yè)黎比。”?但是鸳玩,如果沒(méi)有微軟阅虫,我們今天早就用上非常穩(wěn)定,非巢桓可靠颓帝,非常方便,非澄迅铮“傻瓜”的軟件了购城!微軟是阻擋信息技術(shù)發(fā)展的罪魁禍?zhǔn)住?/p>
微軟的程序的工作方式(注意,我只是說(shuō)操作方式虐译,病毒的事情另外算)確實(shí)適合于一般家庭瘪板,上上網(wǎng),發(fā)發(fā)郵件漆诽,打打游戲都不錯(cuò)侮攀÷嘀Γ可是微軟卻要把自己包裝成什么?“高科技”企業(yè),要在世界各地設(shè)置“研究院”兰英,在大學(xué)計(jì)算機(jī)系贈(zèng)送不適合用于科研的 Windows 產(chǎn)品撇叁,甚至出錢請(qǐng)圖靈獎(jiǎng)得主來(lái)中國(guó)暢談“二十一世紀(jì)的計(jì)算”,還在大會(huì)上宣傳自己的?.NET?技術(shù)畦贸。非要把別人認(rèn)為自己是科學(xué)的陨闹,自己是領(lǐng)導(dǎo)世界高科技的。但是呢薄坏?它什么高科技也沒(méi)有趋厉。歐洲,美國(guó)颤殴,哪一個(gè)關(guān)鍵部門在用微軟的東西觅廓?NASA? DOE? CERN??你仔細(xì)想一想,微軟的程序?qū)θ祟惖降子惺裁粗卮笞饔茫?/p>
什么是 Windows 能干而 Linux 干不了的事情涵但?
“Windows 能干而 Linux 干不了的事情杈绸,那就是不需要干的事情“粒”
有個(gè)朋友看我半年沒(méi)有用 Windows瞳脓,有時(shí)就會(huì)問(wèn)我:“你只用 Linux,有沒(méi)有發(fā)現(xiàn)有些 Windows 能處理的事情 Linux 干不了澈侠?”
我回答說(shuō):“Windows 能干而 Linux 干不了的事情劫侧,那就是不需要干的事情∩诳校”
Windows 能做的有益的事情 Linux 都能做
Windows 下的某些功能確實(shí)是我們需要的烧栋,那么 Linux 的開(kāi)發(fā)者們和用戶也需要這種功能,他們就會(huì)去實(shí)現(xiàn)這種功能拳球,而且比 Windows 的方式好得多审姓。由于大多數(shù)科學(xué)家,工程師用的都是 Linux 或者某種商業(yè) UNIX,?所以幾乎所有商業(yè)的科學(xué)工程程序祝峻,比如 Matlab, Mathematica, AutoCAD, Candence的魔吐,Synopsys 的,Avant!?的……全都是先有 UNIX 的版本(包括Linux)莱找,然后再考慮移植給 Windows酬姆,甚至根本不移植給 Windows,因?yàn)?Windows 的機(jī)器一般沒(méi)有足夠的能力運(yùn)行這樣的程序奥溺。你不要以為只有 Windows 才有 PSpice, UNIX 的 HSpice 要好得多辞色,而且可以運(yùn)行在大型主機(jī)上。當(dāng)然它們不是免費(fèi)的浮定,但是它們值那個(gè)價(jià)錢淫僻。
但是 Windows 下有些東西在 Linux 下沒(méi)有很相似的诱篷,或者你找到很多類似的,但是它們每一個(gè)比起 Windows 的那個(gè)程序都要差很多雳灵,那么原因有兩種可能性:
有一個(gè)完全類似的程序棕所,但是由于它乍一看不漂亮,被你忽略了悯辙。
而其它程序雖然看起來(lái)很漂亮琳省,但是它們是一些初學(xué)編程的人寫的。現(xiàn)在由于 Gtk, Qt 的誕生躲撰,Linux?下開(kāi)發(fā)圖形界面程序極其簡(jiǎn)單针贬,很多初中生甚至小學(xué)生都可以隨手編出一些漂亮不中用的程序。如果你整天尋找這樣的程序挑來(lái)挑去拢蛋,永遠(yuǎn)也找不到你滿意的桦他。當(dāng)然也有一流的程序用 Gtk 和 Qt,比如 GVIM 就可以用 Gtk 作為圖形界面谆棱,我還知道 Synopsys 一些程序用了 Qt快压。
我曾經(jīng)也犯過(guò)這樣的錯(cuò)誤,從外表區(qū)分一切垃瞧。結(jié)果優(yōu)秀的 FVWM, lftp, Mutt, wget 都被我忽略過(guò)蔫劣。當(dāng)我找回它們的時(shí)候,我是那么的羞愧不已个从,它們現(xiàn)在都是我的朋友?:)?我第一次看到 FVWM 覺(jué)得它只不過(guò)是一個(gè)有很厚很難看邊框的東西脉幢。可是現(xiàn)在嗦锐,我的同學(xué)看到 FVWM 都說(shuō):“哇嫌松!真漂亮∞任郏”
有另一種完全不同的方式可以達(dá)到相同的目的萎羔,甚至更好
很多人很關(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)買 Microsoft Office 和 Windows。
你應(yīng)該想一下砸喻,那么多的高智商的大學(xué)教授柔逼,科學(xué)家蒋譬,學(xué)生,他們用的都是 Linux 或者其它類型的 UNIX愉适,他們沒(méi)有 Word 可用犯助,怎么處理文檔呢?這么多年沒(méi)有一個(gè)像 Open Office 的程序出現(xiàn)维咸,難道大家沒(méi)有辦法寫文檔嗎剂买?
顯然不是這樣。你看看那些高水平的學(xué)術(shù)雜志癌蓖,論文瞬哼,那些大學(xué)教授的網(wǎng)頁(yè),那些漂亮的幻燈片租副,它們是什么做的坐慰?原來(lái) UNIX 用戶早就有非常方便的 troff, LaTeX, SGML 等東西可以處理文檔,而且它們比起 Word 都要高明的多用僧。Word?顯然被這些大拿忽略了结胀,以至于很久以來(lái)沒(méi)有人想在 Linux 下開(kāi)發(fā)一個(gè)類似 Word 的程序,除非某些公司想搶微軟的飯碗永毅。
很多人留著 Windows 在硬盤上的原因無(wú)非是為了用 Word 和 PowerPoint把跨。我見(jiàn)過(guò)一個(gè)教授,他的 Windows 筆記本電腦上除了 PowerPoint 什么都沒(méi)有沼死。有一天演示的時(shí)候着逐,他指著堆亂字符說(shuō):“對(duì)不起,這是一個(gè)公式……怎么每次都是這樣……”?其實(shí)有比 PowerPoint 好幾百倍的東西可以制造幻燈片意蛀,你可以用最簡(jiǎn)單的方法制造世界一流效果的論文和幻燈片耸别。你待會(huì)兒可以看看我的TeX網(wǎng)頁(yè),你就會(huì)知道為什么我可以完全離開(kāi) Windows县钥。
Windows 能做的那些沒(méi)用的事情 Linux 永遠(yuǎn)做不好
電腦游戲
有些人說(shuō) Linux 下不能玩 Windows 下所能得到的所有游戲秀姐。的確,Linux?下雖然也有少量的游戲若贮,比如 Quake省有。但是它沒(méi)有 Counter Strike[9],?沒(méi)有 Star Craft,?……
并不是說(shuō)電腦游戲不該玩,但是應(yīng)該適可而止谴麦。電腦是用來(lái)處理事務(wù)蠢沿,幫助你學(xué)習(xí),解決問(wèn)題的工具匾效,而不是一個(gè)玩具舷蟀!整天沉迷于電腦游戲中,而不出去感覺(jué)外面的世界,你會(huì)變得越來(lái)越冷酷野宜,越來(lái)越缺乏人情味扫步。你與真實(shí)的世界越來(lái)越遠(yuǎn)。
你可以在 CS 里殺人匈子,你可以在 Tomb Raider 里探險(xiǎn)河胎,你甚至可以在 Tony Hawk'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)光下享受自然去了。要玩游戲也是玩一些類似推箱子轨功,貪吃蛇之類的智力小游戲旭斥。所以,你知道為什么 Linux 幾乎沒(méi)有游戲了吧古涧?:)
“整理硬盤垂券,優(yōu)化系統(tǒng)”
這是一個(gè)非常有意思的話題,僅次于有關(guān)“病毒”的話題羡滑。相信很多 Windows 用戶都有整理硬盤的經(jīng)歷菇爪。在很多 Windows 用戶眼里,“硬盤用久了柒昏,會(huì)出現(xiàn)碎片凳宙,速度會(huì)減慢,需要一個(gè)程序來(lái)整理昙楚,整理硬盤的時(shí)候不要做其它工作”近速,這好像是天經(jīng)地義的事情诈嘿。
我也曾經(jīng)津津有味的看著 Norton Defrag 一點(diǎn)一點(diǎn)的把我的硬盤排序堪旧,調(diào)整削葱,用圖形的方式顯示出來(lái),然后報(bào)告:“100%?沒(méi)有碎片淳梦。你的硬盤現(xiàn)在已經(jīng)達(dá)到最佳狀態(tài)析砸。”?我現(xiàn)在才發(fā)覺(jué)我那時(shí)是多么的幼稚爆袍。
Linux 和 UNIX 用戶似乎從來(lái)沒(méi)有“整理硬盤”這種說(shuō)法呢首繁?你覺(jué)得很奇怪嗎?如果你覺(jué)得很奇怪陨囊,那說(shuō)明你的思想在某種程度上被微軟的垃圾程序禁錮了弦疮。你需要明白,UNIX?的大型主機(jī)很多必須是一天24小時(shí)蜘醋,一年365又1/4天不停運(yùn)轉(zhuǎn)的胁塞,要是每個(gè)星期都要整理一次硬盤,在整理的時(shí)候幾乎不能干任何事情压语,那是絕對(duì)行不通的啸罢!
Linux 機(jī)器根本不用整理硬盤,這就是為什么沒(méi)有看到過(guò) Linux 用戶整理硬盤胎食。Linux?的文件系統(tǒng)是比 Windows 的 FAT, FAT32, NTFS 高明得多的文件系統(tǒng)扰才,它們不但可以對(duì)文件設(shè)置權(quán)限,實(shí)施完全的保護(hù),而且可以“越用越整齊?”醉拓,“越用碎片越少”[10]矛辕!你應(yīng)該把文件大部分放在 Linux 的分區(qū),而不是 Windows 分區(qū)舵揭,因?yàn)樗?Windows 分區(qū)可靠得多。
還有更滑稽的事情就是有很多“Norton System Doctor”躁锡,“Windows 優(yōu)化大師”午绳,“超級(jí)兔仔注冊(cè)表魔法”?之類的程序存在,而且價(jià)格昂貴映之。似乎一個(gè)操作系統(tǒng)本來(lái)應(yīng)該有很多問(wèn)題拦焚,需要?jiǎng)e的廠商做程序來(lái)“優(yōu)化”它,而且為了得到優(yōu)化杠输,你需要付錢赎败!這些問(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 寫的窟绷。你信不信,微軟的人在寫 Windows 本身的時(shí)候也根本不用 IDE咐柜。微軟內(nèi)部程序員最喜歡的編輯器其實(shí)是 VIM兼蜈,用 VIM 的微軟程序員上次向?yàn)醺蛇_(dá)的可憐兒童捐助了1000多美元,這是值得稱贊的拙友。
有一次某雜志采訪一些出名的 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 編譯器完成編譯工作的鲫竞。甚至高級(jí)的 Windows 程序員也不用 IDE辐怕,他們可以從命令行調(diào)用 cl,nmake 來(lái)編譯自己的程序从绘。雖然這樣的 Windows 程序員很少寄疏,但是他們卻是最了解 Windows是牢,最高明的 Windows 程序員。
為什么 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,?... 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姥卢,這樣就更方便了卷要。實(shí)際上 make 在其它方面還能幫你很多忙渣聚,我的每一個(gè)比較大型的 LaTeX 文檔都是用 make 維護(hù)的。
Linux 能干的高精尖的事情 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è)趺茨芊判模?/p>
所以幾乎所有科學(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)畫爆办,那么細(xì)膩逼真,Windows機(jī)器能做出來(lái)嗎课梳?不行距辆。那也是 Linux 機(jī)器做的。
民航總局用來(lái)訓(xùn)練地情人員的虛擬現(xiàn)實(shí)訓(xùn)練設(shè)備暮刃,Windows 當(dāng)然無(wú)能為力跨算。那都是商業(yè)的 IRIX 機(jī)器。
UNIX 是最早支持 TCP/IP 網(wǎng)絡(luò)協(xié)議的系統(tǒng)椭懊。它上面有很多可以互相協(xié)作的網(wǎng)絡(luò)服務(wù)程序诸蚕,它們經(jīng)過(guò)多年的使用和修訂,已經(jīng)達(dá)到比較完善的程度氧猬。而就在1997?年背犯,微軟的比爾蓋茨還在揚(yáng)言:“Internet?是沒(méi)有前途的≈迅В”?微軟的這個(gè)“遠(yuǎn)見(jiàn)卓識(shí)”大家應(yīng)該都已見(jiàn)識(shí)漠魏,它后來(lái)加上的網(wǎng)絡(luò)服務(wù)程序IIS漏洞之多,讓公安部都頻頻發(fā)出警報(bào)妄均,大家也是見(jiàn)識(shí)了的柱锹。
其實(shí)你知道了哪自,Windows 沒(méi)有一樣有用的事情能比 UNIX 干的更好。
Linux 干不了的有用的事情 Windows 照樣干不了
當(dāng)然 Linux 不是萬(wàn)能的禁熏。它也有不能干的事情壤巷,電腦也有干不了的事情。但是 Linux 干不了的事情瞧毙,Windows?肯定也干不了胧华。這些事情就是我們需要探索,需要努力的事情了宙彪。在你探索的過(guò)程中矩动,Linux?必定是你的好伙伴。
不要把Linux和Xwindow掩蓋起來(lái)您访!
不要把我們的用戶當(dāng)成傻瓜铅忿。
什么剪决?你早就知道 Windows 是垃圾灵汪?噢!你怎么不早說(shuō)呢柑潦!害我廢話這么多享言。嘿嘿。
“好了渗鬼。你知道 Windows 是垃圾览露,你現(xiàn)在用什么?”
“Linux + Xwindow”
“那我問(wèn)你譬胎,Xwindow 是什么樣的差牛?”
“不就是跟 Windows 差不多嗎?只不過(guò)?'Start'?按鈕比較方堰乔,而且上面不是一個(gè) Windows 標(biāo)志偏化,而是一個(gè)腳丫子[11]。點(diǎn)擊一下居然還有很漂亮的中文菜單镐侯。我喜歡侦讨!”
“你知道什么是‘根窗口’嗎?”
“不知道苟翻。從來(lái)沒(méi)聽(tīng)說(shuō)過(guò)呢韵卤?”
“根窗口就是遮蓋整個(gè)屏幕的那個(gè)最大的窗口〕缑ǎ”
“哪兒有什么窗口吧蛱酢!我沒(méi)有看到呢诅炉?”
你發(fā)現(xiàn)了問(wèn)題嗎拍鲤?這些 Linux 用戶說(shuō)是在用 Linux 和 Xwindow贴谎,但是他們對(duì) Linux 和 Xwindow 幾乎完全不了解。很多人用了那么久 Xwindow 都不知道根窗口是什么東西季稳,不知道其實(shí)按鈕也是窗口擅这,不知道窗口管理器和其它程序有什么關(guān)系,大家都以為窗口上面的按鈕是程序自己放上去的景鼠,不知道窗口的“class name”仲翎,“resource name”是什么東西。他們也不知道?.Xdefaults 是用來(lái)干什么的铛漓。特別是他們很多人都不知道 Xwindow 的字體是如何命名的溯香,什么是 fontset,有了一個(gè)新的字體也不知道怎么安裝浓恶。
他們被遮在 Linux 之上的一層一層的包裝迷惑了玫坛,他們等待有圖形界面的工具來(lái)幫助完成一切事情,他們認(rèn)為 Linux 跟 Windows 一樣包晰,只是麻煩一點(diǎn)湿镀。他們知道 Linux 內(nèi)核很好,但是他們感覺(jué)不到 Linux 和 Xwindow 在操作層面的天生的先進(jìn)性伐憾,隨后不久就把 Linux 完全刪除掉了勉痴。你發(fā)現(xiàn)沒(méi)有,要用戶理解 UNIX 和 Xwindow 的操作層面的先進(jìn)性树肃,才是留住用戶的最好辦法蒸矛。如果用戶體會(huì)不到操作時(shí)的方便和高效,內(nèi)核再好他們也不會(huì)理會(huì)胸嘴。
但是用摹仿 Windows 的作法來(lái)吸引用戶雏掠,永遠(yuǎn)會(huì)失敗的。因?yàn)?Linux 如果摹仿 Windows 那一套低效率的方式劣像,那么 Linux 的這套“低效率方式”永遠(yuǎn)比不上 Windows 的那一套“低效率方式”乡话。那么用戶就會(huì)說(shuō):“這個(gè) Linux,沒(méi)有一樣比的上 Windows驾讲∥蒙。”
Linux 天生就是繼承了 UNIX 的高效的工作方式,為什么我們要把它掩蓋起來(lái)吮铭?我們?yōu)槭裁粗桓嬖V用戶 KDE 的菜單怎么用时迫?我們?yōu)槭裁床荒芟裨缙诘?Xwindow 書籍那樣第一節(jié)就告訴用戶什么是 X server,?什么是 X client,什么是 Window Manager,?什么是根窗口谓晌。第二章就告訴用戶窗口有哪些屬性掠拳,什么是 classname, resource name, hint,怎樣使用?.Xdefaults, xrdb ……
在這里我又不得不說(shuō)一下那些 Linux 的發(fā)行公司和寫書的人纸肉,他們把 Linux 和 Xwindow 包裝起來(lái)溺欧,卻沒(méi)有從基本上告訴用戶 Xwindow 的工作原理喊熟。很多書籍講授的層次就是在 Gnome, KDE 的菜單操作的層次,靠大量抓圖來(lái)占篇幅姐刁,“繁榮”Linux?書籍市場(chǎng)芥牌。
現(xiàn)在很多人已經(jīng)把能夠利用別人的庫(kù)寫出一個(gè)好看的程序作為自己編程水平的象征。在這個(gè)“圖形化”聂使,“可視化”?的年代壁拉,你如果還在用 troff, LaTeX 寫文檔,你還在用 VIM 自己編輯 HTML柏靶,用 Mutt 處理郵件弃理,你還在用文本模式的 gdb 調(diào)試程序,你還在用 Xlib 寫程序,?你還在用 tin 上 USENET屎蜓,你還在自己寫 Makefile痘昌,寫機(jī)器代碼,你還在玩 Clossal Cave 這樣的字符模式冒險(xiǎn)游戲炬转,那你就是老古董辆苔。
其實(shí)這種思想是錯(cuò)誤的。雖然你是一個(gè)堅(jiān)決的 Linux 支持者返吻,但是你的思想是 Windows 的思想姑子。你認(rèn)為圖形界面乎婿,菜單测僵,按鈕就可以解決一切問(wèn)題,就可以給你高效方便谢翎。你還是沒(méi)能擺脫微軟給你的潛移默化的東西捍靠。你其實(shí)離不開(kāi) Windows 那樣的環(huán)境,你遲早會(huì)刪掉自己的 Linux森逮。
GUI vs. CLI
做一個(gè)堅(jiān)定不移的“兩面派”
大家看到這個(gè)標(biāo)題是不是熱血沸騰榨婆??jī)膳纱笪r都可以圍攻我了:
GUI派用戶:“哇!我一看你這小子就是 CLI 的褒侧。要不然自己寫什么 Makefile良风?用什么 Mutt?”
CLI派用戶:“切~?你還用 X闷供!高手都不用 X烟央。你是 GUI 那邊的⊥嵩啵”
可憐的我:“555~~?你們都不要我~~ GUI 和 CLI 就那么水火不容嗎疑俭?”
計(jì)算機(jī)界這樣的門派之分還很多。很有特點(diǎn)的就是 CLI 和 GUI 了婿失。CLI?(Command LIne[12])?的狂熱份子聲稱永遠(yuǎn)不用 X钞艇。我上次在實(shí)驗(yàn)室看到一個(gè)同學(xué)用一個(gè) SecureCRT[13]登錄到 Sun 機(jī)器啄寡,然后用一個(gè) vanilla vi 編輯程序,我建議他啟動(dòng)一個(gè) GVIM 過(guò)來(lái)顯示在 Exceed 上可以有語(yǔ)法加亮哩照。但是他堅(jiān)決反對(duì)挺物,說(shuō):“高手不用X。你想想飘弧,要是我在一個(gè)很慢的網(wǎng)絡(luò)連接怎么用 X姻乓?而且好多服務(wù)器沒(méi)有裝 X 程序∶心粒”
但是我們實(shí)驗(yàn)室的網(wǎng)速可夠快蹋岩,Windows 機(jī)器都有 Exceed 啊,而且 Sun 機(jī)器有全套 X 客戶程序包括 GVIM学少。他說(shuō)他是 CLI 的堅(jiān)決擁護(hù)者剪个,但是他卻在用 Windows,他后來(lái)打開(kāi)了好幾個(gè) SecureCRT版确,每次從文本框輸入地址扣囊,用戶名和密碼,從下拉菜單選擇?"SSH2"绒疗,然后點(diǎn)擊“Connnect”侵歇。他還不斷的夸SecureCRT是“網(wǎng)絡(luò)管理員投票選出的最受歡迎的登錄方式”。老天吓蘑,SecureCRT 本身就是個(gè) GUI 啊惕虑,他其實(shí)沒(méi)有明白 Xwindow 的好處。
你說(shuō)我是 GUI 的磨镶?我雖然很少在 console 下工作溃蔫。但是我對(duì) bash, VIM 很熟悉,我可以讓 bash 按照我的鍵綁定方式來(lái)工作琳猫。我可以在 rxvt 里使用 Mutt 來(lái)收發(fā) email伟叛。我的每個(gè)桌面上都常常堆放著一打不同大小的 rxvt。我用 VIM 編輯 LaTeX脐嫂。我自己寫 Makefile 來(lái)維護(hù) LaTeX 文檔统刮。我有時(shí)用 mpg321 來(lái)放 mp3。我上BBS用的我自己寫的 expect 腳本账千。?好了侥蒙,CLI?派的朋友可以收我做盟友了?:)
你說(shuō)我是 CLI 的老古董?我的 FVWM 被我配置為可以“手寫操作”蕊爵,我只要畫一個(gè)"r"就可以啟動(dòng) rxvt辉哥,我只要畫一個(gè)?"U"?就可以啟動(dòng) GVIM,……?我用 GVIM 語(yǔ)法加亮模式編輯程序,我用 Mozilla 瀏覽網(wǎng)頁(yè)醋旦,…… GUI 派的現(xiàn)在好像認(rèn)我做朋友了?:)
好了恒水。CLI 派的朋友,雖然我很喜歡命令行饲齐,但是我有時(shí)在屏幕上左右畫一下就可以執(zhí)行:
Module FvwmConsole -terminal rxvt -geometry 45x5-0+0 \?
-bg gold -fg midnightblue ?\?
-fn?"-adobe-courier-medium-r-*-*-14-*-*-*-*-*-*-*??
你是不是現(xiàn)在又想把我逐出師門钉凌?
GUI 派的朋友,雖然我很喜歡窗口捂人。但是我可以在 FvwmConsole 里輸入:
All?(rxvt) MoveToDesk ?
把我所有的 rxvt 移動(dòng)到我現(xiàn)在工作的桌面御雕。“這家伙滥搭,怎么這么快就叛變了酸纲!”
其實(shí)何必分什么 GUI 和 CLI,UNIX 和 Xwindow 都是工業(yè)標(biāo)準(zhǔn)瑟匆,它們從設(shè)計(jì)那天開(kāi)始就有非常靈活的用法闽坡,各個(gè)程序,不管是 GUI 還是命令行的都可以互相協(xié)作愁溜。UNIX?和 X 是一家疾嗅,何必搞的那么偏激,非此即彼冕象?你從我上面的行為可以看出 GUI 和 CLI 的模糊界線嗎代承?我就是堅(jiān)定不移的“兩面派”。
UNIX 是簡(jiǎn)單的
“我相信簡(jiǎn)單就是最好渐扮,如果太復(fù)雜论悴,我是不能理解的∠”?—Seymour Cray
很多第一次用 Linux 的人會(huì)驚奇的發(fā)現(xiàn)意荤,Linux?的程序居然不用“安裝”就可以運(yùn)行啊片,程序拷貝到隨便那個(gè)目錄都可以用只锻,而不是一定要占用你第一個(gè)分區(qū)的空間。程序的設(shè)置只是一些簡(jiǎn)簡(jiǎn)單單的文本文件紫谷。你根本不需要什么“注冊(cè)表修改器?”?就可以改變系統(tǒng)的設(shè)置齐饮。這就叫做簡(jiǎn)單,但是簡(jiǎn)單就是美笤昨。雖然這只是 UNIX 簡(jiǎn)單性的一個(gè)膚淺的認(rèn)識(shí)祖驱,你已經(jīng)體會(huì)到了某些東西。
但是簡(jiǎn)單并不意味著功能弱瞒窒,并不意味著落后捺僻。相反,簡(jiǎn)單意味著強(qiáng)大,意味著生命力匕坯。
我不會(huì)再繼續(xù)闡述我理解到的“UNIX 的簡(jiǎn)單”束昵,因?yàn)檫@個(gè)需要自己去體會(huì)。
UNIX 是永恒的
有人說(shuō):“Plan9 會(huì)取代 UNIX葛峻,Mach 會(huì)取代 Linux 內(nèi)核锹雏。”
但是你如果是一個(gè)深入體會(huì)了 UNIX 的人术奖,你就會(huì)知道:UNIX?的思想是永恒的礁遵,不管時(shí)過(guò)境遷,Plan9?是否代替 UNIX采记,UNIX 的靈魂都會(huì)在 Plan9 身上現(xiàn)形佣耐!
我為同一個(gè)設(shè)備寫過(guò) Linux 內(nèi)核和 Windows VxD 驅(qū)動(dòng)程序。寫 Linux 驅(qū)動(dòng)程序時(shí)唧龄,我對(duì) UNIX 設(shè)計(jì)的完美的一致性晰赞,遠(yuǎn)見(jiàn)性所折服。UNIX?用同樣界面的 read(), write()?系統(tǒng)調(diào)用就可以對(duì)不同的對(duì)象:普通文件选侨,設(shè)備文件掖鱼,管道,管道文件援制,socket戏挡,……?進(jìn)行統(tǒng)一的讀寫操作。我跟本不需要寫一個(gè)測(cè)試用的應(yīng)用程序就可以對(duì)我的設(shè)備驅(qū)動(dòng)進(jìn)行測(cè)試晨仑,因?yàn)?cat, cp, dd,?它們也使用了同樣的 read(), write()褐墅,設(shè)備和普通文件在應(yīng)用程序眼里沒(méi)有區(qū)別。在那個(gè)還沒(méi)有 Smalltalk,?沒(méi)有 C++?的年代洪己,UNIX 的設(shè)計(jì)者已經(jīng)使用了所謂的?“面向?qū)ο蠓椒ā蓖椎省?duì),C?語(yǔ)言也可以實(shí)現(xiàn)面向?qū)ο蟆?/p>
UNIX 的系統(tǒng)調(diào)用幾十年都沒(méi)有很大變化答捕,這非但不是頑固逝钥,不進(jìn)步的象征,反而是 UNIX 的遠(yuǎn)見(jiàn)卓識(shí)的體現(xiàn)拱镐!這就跟 TeX 程序幾十年都不變的情況差不多艘款。這些才是真正的永恒的 master piece!?你應(yīng)該改變所有軟件都必需從 0.1, 1.0, 1.1, 1.2, 2.0,?..., 3.0, 3.1, 95, 98, 2000, XP,?...?不斷升級(jí)的想法。
Windows 就不同了沃琅,它在最開(kāi)頭只是一個(gè) DOS 之上的圖形包裝而已哗咆。后來(lái)為了兼容以前的糟糕設(shè)計(jì),不得不加上很多累贅益眉。我寫 VxD 驅(qū)動(dòng)程序的時(shí)候就深有體會(huì)晌柬,Windows 95 程序?qū)υO(shè)備的操作只有用 DeviceIoControl姥份,我不得不寫了兩個(gè)應(yīng)用程序來(lái)對(duì)設(shè)備驅(qū)動(dòng)進(jìn)行測(cè)試。Windows 內(nèi)核的不一致性和隱密性使我非常惱火年碘。不過(guò) Windows WDM 驅(qū)動(dòng)程序現(xiàn)在也有了 ReadFile, WriteFile殿衰,……?那說(shuō)明什么?那說(shuō)明 Windows 在向 UNIX 學(xué)習(xí)盛泡,或者有可能是某個(gè) UNIX 設(shè)計(jì)人員在微軟打了幾天臨工闷祥,順手加了幾個(gè) UNIX 的東西進(jìn)去。這樣做是沒(méi)有用的傲诵,Windows?從一開(kāi)始就是非常糟糕的設(shè)計(jì)凯砍,它的歷史的包袱太沉重了,縫縫補(bǔ)補(bǔ)有什么用拴竹?它只能永遠(yuǎn)的被 UNIX 甩在身后悟衩!
UNIX 是強(qiáng)大的
讓聰明人干任何他們想干的事情。
UNIX 的一個(gè)特點(diǎn)就是非常高的靈活性栓拜,Xwindow?也具有這種靈活性座泳。這種靈活性體現(xiàn)在哪里呢?
UNIX 的程序一般都有很多參數(shù)幕与,不管你現(xiàn)在用的著用不著挑势,總有人需要某些參數(shù)。它們的行為很多都可以用配置文件來(lái)改變啦鸣。比如 GNU bash,?通常缺省的命令行輸入方式是 Emacs 方式潮饱,但是只要我編輯一個(gè)?.inputrc?文件,就可以把它變成 vi 的輸入方式诫给,而且我還可以自己綁定鍵序列到某些操作香拉。我可以用 shopt 來(lái)設(shè)置它的很多特點(diǎn),比如是否進(jìn)行通配符擴(kuò)展中狂,是否可以把一個(gè)變量當(dāng)作一個(gè)目錄來(lái)cd凫碌,是否可以自動(dòng)糾正某些明顯的目錄名打字錯(cuò)誤?……
UNIX 程序設(shè)計(jì)的思想是提供給用戶“機(jī)制”,而不限制用戶制定“政策”胃榕。這是一個(gè)重要的尊重用戶的作法盛险。
我們?cè)賮?lái)看看 Xwindow。Xwindow 是一個(gè)出色的設(shè)計(jì)勤晚,它把顯示服務(wù)器和客戶程序分開(kāi)枉层。一個(gè)顯示上既可以顯示本機(jī)上的程序,也可以顯示別的機(jī)器上的 X 程序赐写,而它們都遵守你的窗口管理器的統(tǒng)一指揮,它們之間可以方便的傳送剪貼版數(shù)據(jù)膜赃,各種事件?……?比如有時(shí)我的 XFree86 上會(huì)出現(xiàn)四個(gè)不同機(jī)器上的 XTerm挺邀,兩個(gè)不同機(jī)器上的 GVIM,……?它們統(tǒng)一受本機(jī)上的 FVWM 指揮。
Xwindow 程序都具有很多很多命令行參數(shù)和 resource 參數(shù)端铛。你可以隨意的在命令行或者?.Xdefaults?文件設(shè)置所有的顏色泣矛,字體,尺寸……?而且如果你用 xrdb 把?.Xdefaults?導(dǎo)入到根窗口禾蚕,那么其它機(jī)器上沒(méi)有經(jīng)過(guò)配置的同樣的程序您朽,顯示到你的機(jī)器上的時(shí)候也會(huì)遵守同樣的外觀規(guī)定。
Xwindow 的窗口具有 Property,?也就是一些可以自己定義的共享數(shù)據(jù)(原子)换淆。正是因?yàn)檫@些 Property 的存在哗总,使得 Xwindow 具有無(wú)比強(qiáng)大的生命力。X?的窗口管理器和其它客戶程序之間并沒(méi)有統(tǒng)一的協(xié)議倍试,但是后來(lái)出現(xiàn)了 ICCCM(客戶程序間通信規(guī)范)讯屈,這個(gè)規(guī)范就是通過(guò) property 定義的。現(xiàn)在又有人定義了一套“擴(kuò)展的窗口協(xié)議(EWM Hints)”,使得 Xwindow 可以具有某些 Windows 的特征,比如一個(gè)工具條程序可以告訴窗口管理器:“這個(gè)屏幕下面被我占據(jù)了24個(gè)像素的空間矾麻,你最大化程序的時(shí)候不要越過(guò)這個(gè)界線厦瓢。?”
一個(gè)強(qiáng)大的窗口管理程序比如 FVWM,它收到這樣的提示時(shí)芽卿,可以答應(yīng)工具條程序的這個(gè)要求,也可以不答應(yīng)。一切選擇的權(quán)力在于誰(shuí)炮赦?當(dāng)然是用戶了!一切窗口乖乖聽(tīng)話样勃,F(xiàn)VWM 給予用戶最大的尊重吠勘。
你想想,是不是有些 Windows 程序常常彈出一個(gè)窗口要你選擇?"Yes or No"峡眶?你不點(diǎn)擊它它就不下去剧防。你覺(jué)不覺(jué)得你的程序在侵犯你的尊嚴(yán)?你是一個(gè)人辫樱,一個(gè)智慧的生物峭拘,怎能受到一個(gè)程序如此的待遇?
還有就是很多 Windows 程序把人當(dāng)成傻瓜狮暑,而它是“智能程序”鸡挠。比如,有一個(gè)程序就是喜歡把你的每句話第一個(gè)字母都變成大寫搬男,我不說(shuō)它是誰(shuí)了拣展,你遇到的時(shí)候就知道了。如果連“一句話開(kāi)頭一個(gè)字母要大寫”這么明顯的問(wèn)題都需要程序幫你糾正的話缔逛,人腦還用來(lái)干什么备埃?況且如果你故意想要不大寫的話姓惑,那就更麻煩了,我楞是沒(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ī)∮谟危”
看看優(yōu)秀的 UNIX 程序毁葱,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin,?...?沒(méi)有一個(gè)不是用配置文件來(lái)設(shè)置選項(xiàng)的。為什么這些程序沒(méi)有方便的菜單可以用來(lái)配置贰剥?難道它們的設(shè)計(jì)者就那么低能倾剿,連個(gè)圖形配置界面也寫不出來(lái)?
當(dāng)然不是蚌成。因?yàn)閳D形界面配置方式的能力是極其有限的前痘,而配置文件和程序語(yǔ)言的表達(dá)能力卻是無(wú)限的。用圖形界面配置這些程序的話担忧,如果你想達(dá)到配置文件的效果芹缔,你需要成百上千的菜單,checkbox, radio button,?...?到時(shí)候你根本沒(méi)辦法找到你需要修改的地方了瓶盛!而各個(gè)程序的配置文件的語(yǔ)法都有很多相似之處最欠,一般就是一些命令,設(shè)置一些變量惩猫,參數(shù)芝硬,……?一旦用會(huì)了一個(gè),其它的也就容易理解了轧房。如果你用慣了 awk, sed, Perl拌阴,你會(huì)覺(jué)得那才是真正的自動(dòng)化啊。
鼠標(biāo)雖然是很好的工具锯厢,但是它的表達(dá)能力是有限的皮官。你不可能光用鼠標(biāo)就讓電腦完全明白你的意思脯倒,它畢竟只有3個(gè)按鈕实辑∞嗲猓看看我的MetaPost頁(yè)你就能體會(huì)到鼠標(biāo)的這一弱點(diǎn)。所以我們雖然很喜歡鼠標(biāo)剪撬,但是卻不能完全依賴它摄乒。
各個(gè)小程序的完美配合
這就是UNIX最重要的特點(diǎn)了,它就是UNIX設(shè)計(jì)的思想残黑。讓每個(gè)程序只具有一項(xiàng)專門的能力馍佑,然后讓它們合作。Xwindow也繼承了這種好傳統(tǒng)梨水。
這恐怕就是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 窗口里面嵌入 UltraEdit 編輯器莉擒,你別想用一個(gè) expect 腳本來(lái)控制 telnet 到水木清華 BBS。
Windows 的程序都是大而全瘫絮,大而雜涨冀,所有的電子郵件程序都需要自己提供編輯器,自己發(fā)送和收取郵件麦萤,自己顯示郵件的附件鹿鳖。每一個(gè)BBS程序都提供自己的Virtual Terminal,?自己的通訊代碼扁眯。每一個(gè) IDE 都自己提供編輯器,編譯器翅帜,匯編器姻檀,調(diào)試器。人們?yōu)榱耸褂靡环N新的程序涝滴,需要適應(yīng)所有這些它提供的界面绣版,而不能使用自己喜歡的編輯器的鍵綁定,菜單組織……?不能 DIY歼疮!
你要知道杂抽,最高級(jí)的電腦是定做的,自己想要什么什么CPU韩脏,什么主板缩麸,多少內(nèi)存,什么硬盤赡矢,鍵盤杭朱,鼠標(biāo),顯示器都是自己選擇的济竹。最高級(jí)的滑板痕檬,自己想要什么牌子的版面,什么牌子的沙送浊,什么橋梦谜,什么輪子,什么軸承袭景,也都是自己選的唁桩。最高級(jí)的乒乓球拍,木板耸棒,膠皮荒澡,海綿,膠水都是可以自己選擇……?而用 Windows 程序与殃,你得到的是大雜燴单山,就像你去買“品牌機(jī)”,只有那么幾種配置幅疼,而且附帶很多你不需要的軟件和服務(wù)米奸;就像你去買組裝好的滑板,你想要大一點(diǎn)的輪子和窄一點(diǎn)的板子爽篷,但是你沒(méi)有這種選擇余地悴晰!Windows?程序就相當(dāng)于最廉價(jià),最次的滑板。但是它卻會(huì)花你更多的錢铡溪,因?yàn)橐坏┮粋€(gè)部件壞了漂辐,或者你不喜歡了,你不能另外找一個(gè)好的換掉它棕硫,你必需重新買全套配件髓涯!
而 UNIX 和 Xwindow 就是高檔的“組裝貨?”。比如我用 Mutt 的時(shí)候饲帅,我可以用 VIM 也可以用 pico 來(lái)編輯郵件复凳,我可以用 ImageMagick 也可以用 xv 來(lái)顯示附件里的圖片瘤泪,我可以用 lynx 把 HTML 附件轉(zhuǎn)成文本嵌入窗口中灶泵,我也可以把 HTML 附件交給 Mozilla 圖形顯示。我可以讓 GnuPG 幫我把郵件進(jìn)行數(shù)字簽名和加密对途,我也可以用其它 PGP 程序赦邻。我想讓 Postfix 而不是 sendmail 幫我發(fā)出郵件,我想讓 fetchmail 幫我收郵件实檀,轉(zhuǎn)發(fā)給 postfix惶洲,然后被我自己寫的Perl過(guò)濾器處理……?這一切我都可以辦到!我可以選擇我最喜歡的專門的程序來(lái)完成專門的工作膳犹,然后把它們結(jié)合在一起恬吕,我也可以分別得到它們的好處。
學(xué) UNIX 絕對(duì)不是浪費(fèi)時(shí)間
有人告訴我:“你看我用 Windows 什么都不用學(xué)须床。而用 Linux铐料,光是安裝就花了我一個(gè)星期!”
首先豺旬,我要告訴你的是钠惩,你裝 Linux 花了一個(gè)星期,不是因?yàn)?Linux 不好裝族阅,而是因?yàn)槟阋呀?jīng)習(xí)慣了 Windows篓跛,對(duì) Linux 最初難以理解而已。你想一想你最初安裝 Windows 的時(shí)候呢坦刀?你花了多少時(shí)間搞明白什么是硬盤分區(qū)愧沟?什么是盤符?什么是目錄鲤遥?你認(rèn)為 Windows 就是那么容易可以學(xué)會(huì)的嗎沐寺?雖然你覺(jué)得沒(méi)花時(shí)間學(xué),但是你以前在用別人的機(jī)器的時(shí)候已經(jīng)耳濡目染渴频,自然就了解了芽丹。而且由于你想要 Linux 和 Windows 并存于硬盤上,又增加了安裝難度卜朗。而且你肯定沒(méi)有得到有經(jīng)驗(yàn)的 Linux 用戶的幫助拔第,否則他們會(huì)在 20 分種之內(nèi)幫你搞定咕村。一個(gè)星期也太夸張了?:P
如果一開(kāi)始用的就是Linux就沒(méi)有這個(gè)問(wèn)題。你想想如果你沒(méi)有用過(guò) windows蚊俺,你肯定會(huì)很習(xí)慣?/etc,?/usr,?/usr/local ,...?而不是 C:, D:, E:,?...?是不是懈涛?如果你只用過(guò) Linux,你第一次用 windows 時(shí)恐怕也會(huì)問(wèn):“/bin?目錄哪里去了坝锯批钠?”
最重要的是,你用慣了的UNIX工具得封,它們可以伴隨你一生埋心,而不會(huì)那么容易變化或消失。你可以永遠(yuǎn)不用再換另外的工具了忙上。除非那個(gè)工具比你這個(gè)好的太多拷呆,而且可以完全模擬你現(xiàn)在的工具。
我們實(shí)驗(yàn)室一個(gè)60多歲的老師疫粥,用vi, cc, make,?...都幾十年了茬斧,他以前的經(jīng)驗(yàn)絕對(duì)沒(méi)有白費(fèi),而且教會(huì)了我們一批又一批的學(xué)生梗逮。vi 伴隨著 UNIX 的最初發(fā)行而誕生项秉,直到今天還是世界上頭兩號(hào)編輯器之一!有些人的 FVWM 配置文件已經(jīng)用了 10 多年慷彤,現(xiàn)在完全不經(jīng)修改還可以用娄蔼。
看看 Windows 的工具,你從 Borland C++?換到 VC,?就必需適應(yīng)新的環(huán)境:菜單不同了瞬欧,顏色不同了贷屎,按鈕不同了,幫助信息不同了艘虎,熱鍵不同了唉侄,編譯器參數(shù),調(diào)試器功能也不同了野建,……?那個(gè)時(shí)候恐怕花要花你很多時(shí)間去適應(yīng)属划。當(dāng)你剛剛適應(yīng)了 VC,?你又要換成 VJ, PowerBuilder, C++Builder,?...
很多windows程序員都是這樣,開(kāi)頭在dos下用 Turbo C,?然后是 Borland C, VC, C++ Builder,?......不斷追趕微軟的潮流候生。而且微軟的 SDK, MFC,?.NET ……?什么都在不斷變化同眯,不斷出問(wèn)題,又不斷的在修改…… Windows 程序員不得不買又厚又重的 Microsoft Press 的書籍唯鸭,看了才一個(gè)月须蜗,又過(guò)時(shí)了。今天你才學(xué)會(huì)了寫 VxD,明天你就必須用 WDM 了明肮。你不得不注冊(cè) MSDN 才能趕上 Microsoft 的步伐菱农。很多人說(shuō):“計(jì)算機(jī)是貴族的專業(yè)∈凉溃”?這就是微軟一手造成的循未。
這些東西才是沒(méi)完沒(méi)了的浪費(fèi)大家的時(shí)間和金錢的。這是浪費(fèi)生命秫舌!我們?yōu)槭裁床皇褂脧恼Q生就那么一致和完美的 UNIX的妖?你需要理解先進(jìn)工具的設(shè)計(jì)理念。UNIX 的工具就像我們用的汽車足陨,它的離合器嫂粟,油門,剎車钠右,方向盤赋元,后視鏡,永遠(yuǎn)都在同樣的位置飒房。用慣了的話,你對(duì)你的汽車的每一個(gè)部件都會(huì)了如指掌媚值,甚至你自己都可以修車了狠毯。這難道不好嗎?
有人說(shuō):“你說(shuō)我們需要了解 UNIX褥芒,難道你要開(kāi)車還必須了解汽車的結(jié)構(gòu)嗎嚼松?”?你去問(wèn)問(wèn)開(kāi)車的司機(jī),哪一個(gè)不了解汽車的結(jié)構(gòu)的锰扶,那他的駕照就是混來(lái)的献酗。你難道想要傻瓜型的“微軟牌汽車”嗎?我們來(lái)看看:
你買的微軟牌汽車最開(kāi)頭只有一個(gè)座位坷牛,每加一個(gè)座位你得向汽車公司付錢罕偎。車上的防撞氣囊不時(shí)會(huì)冒出來(lái),說(shuō)是為了你的安全京闰。每開(kāi)100英里要大修一次颜及,每過(guò)一年要換一次引擎。附帶的蹂楣,你還必須換用由微軟汽車公司指定的石油公司提供的新型號(hào)的機(jī)油俏站。你的車出了問(wèn)題,但是法律規(guī)定痊土,你不準(zhǔn)私自拆開(kāi)你的汽車來(lái)修理肄扎,你必需到微軟汽車公司指定的維修點(diǎn)去,需要付相當(dāng)多的錢才能修好一個(gè)小毛病。
最可氣的是犯祠,你每換一個(gè)型號(hào)的微軟牌汽車萌丈,它的剎車和離合器都在不同的位置,你需要重新去考駕駛執(zhí)照雷则。如果這輛汽車在途中剎車失靈辆雾,你受了重傷,你也不能狀告微軟汽車公司月劈,因?yàn)槟阗I來(lái)汽車之后必須簽一個(gè)合同度迂,說(shuō)?“由于微軟牌汽車對(duì)你和家人造成的一切死傷,微軟概不負(fù)責(zé)猜揪〔涯梗”
怎樣完全用 GNU/Linux 工作
說(shuō)了這么多 Windows 的不好。我還沒(méi)有告訴你我怎么用 Linux 處理有些必要的事情而姐。
半年以前我由于中文老是配置不好腊凶,一直是雙系統(tǒng),不時(shí)需要重起到 Win2k 來(lái)處理漢字拴念。后來(lái)我找到了 miniChinput, XSIM 和 SCIM 輸入法钧萍。這下可以處理漢字了。而且 VIM 和 Emacs 對(duì)漢字支持越來(lái)越好政鼠。我的大部分文本是用 VIM 編輯的风瘦,包括程序,信件公般,網(wǎng)頁(yè)万搔,LaTeX?論文,MetaPost?繪圖語(yǔ)言官帘。
我不用 Word 這樣的程序?qū)懻撐乃脖ⅲ怯?LaTeX,因?yàn)檫@是世界上效果最好刽虹,最方便的論文工具酗捌,是大多數(shù)學(xué)術(shù)雜志要求的格式∽瓷簦幻燈都是用 ConTeXt 做的意敛,用起來(lái)很簡(jiǎn)單,而且效果非常漂亮膛虫。你可以看看我的TeX介紹草姻。
至于繪圖,你可以用很多可視化的工具稍刀,比如 xfig撩独,dia敞曹。但是對(duì)于我來(lái)說(shuō),任何可視化的工具都不能完成某些任務(wù)综膀,我需要一種可以精確描述圖形的語(yǔ)言澳迫。我找到了MetaPost。它簡(jiǎn)單又好用剧劝,而且效果是世界一流的橄登。我的插圖,如果不是圖像讥此,都是 MetaPost 畫出來(lái)的拢锹。
我曾經(jīng)抱怨 mozilla-mail 經(jīng)常突然消失,損壞我好幾封快要完成的信件萄喳。后來(lái)我發(fā)現(xiàn) mozilla 的郵件處理程序確實(shí)是不穩(wěn)定的卒稳,功能又弱,有經(jīng)驗(yàn)的 UNIX 用戶都不用這樣的程序他巨。Mutt?是一個(gè)非常穩(wěn)定可靠的 UNIX 郵件處理程序充坑,而且功能非常強(qiáng)大。
我曾經(jīng)為 Gnome 和 KDE 的不穩(wěn)定而煩惱∪就唬現(xiàn)在我找到了非常強(qiáng)大的 FVWM捻爷。KDE,Gnome 也能和 FVWM 一起工作觉痛。雖然 Gnome 和 KDE 總體不穩(wěn)定役衡,但是某些部件程序還不錯(cuò),很多 gtk, Qt 的程序也很不錯(cuò)薪棒,它們很多都是可以獨(dú)立于這些桌面環(huán)境運(yùn)行的。
Linux 有很多強(qiáng)大方便的工作方式是 Windows 沒(méi)有的榕莺,或者有類似的東西俐芯,但是很差勁或者用起來(lái)不方便。比如 ssh 服務(wù)钉鸯,rsync吧史,cvs,expect?……
結(jié)論
我寫這么多的目的是什么唠雕?我希望喜歡 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)化扇调。
消除學(xué)計(jì)算機(jī)很難的幻覺(jué)矿咕,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……?這樣強(qiáng)大的程序,勇敢的面對(duì)符號(hào)狼钮。不要再埋怨“Linux?為什么不能像 Windows 那樣”碳柱,不要再浪費(fèi)時(shí)間試用這樣那樣的程序,不要再忙著升級(jí)燃领。你需要理解 UNIX 的工作方式士聪,因?yàn)槟鞘谴蠖鄶?shù)科學(xué)家的工作方式。 Linux 可以成為你的好朋友猛蔽,你需要認(rèn)識(shí)它剥悟,了解它,信任它曼库,才能完全的靠它來(lái)高效的工作区岗。當(dāng)然,在游戲機(jī)毁枯,手機(jī)慈缔,掌上電腦里,或者在用電腦來(lái)娛樂(lè)的時(shí)候种玛,用一些“傻瓜軟件”還是不錯(cuò)的?:)
我希望小學(xué)藐鹤,中學(xué)的計(jì)算機(jī)老師能夠提高自己的素質(zhì),在孩子們的啟蒙教育中充分利用 Linux 神秘的特點(diǎn)赂韵,引起孩子們對(duì)數(shù)學(xué)娱节,對(duì)符號(hào)的好奇心。誘導(dǎo)他們用計(jì)算機(jī)來(lái)解決世界上的有趣問(wèn)題祭示,而不要把教學(xué)的范圍局限于計(jì)算機(jī)的操作和它自身的問(wèn)題肄满。
附錄:?我用來(lái)處理日常事務(wù)的 Linux 程序
好了好了。我知道你發(fā)現(xiàn)自己應(yīng)該轉(zhuǎn)向 Linux质涛,你很后悔當(dāng)初為什么中了微軟的邪稠歉。但是不要著急。因?yàn)檫@些東西本來(lái)只是工具汇陆,它們是用來(lái)完成你的主要任務(wù)的輔助而已怒炸。你以前選錯(cuò)了工具,這不要緊瞬测。你還是擁有你自己原來(lái)的專業(yè)技能横媚,那才是最重要的纠炮。工具的東西只有慢慢適應(yīng)轉(zhuǎn)換,不能一蹴而就灯蝴,否則你會(huì)感到非常沒(méi)意思恢口,甚至放棄。
如果你只想做一個(gè)像我這樣的普通用戶穷躁,主要目的是用 Linux 來(lái)完成自己的任務(wù)耕肩,那就可以不用系統(tǒng)管理員或者網(wǎng)絡(luò)管理員的標(biāo)準(zhǔn)來(lái)要求自己,因?yàn)楫?dāng)一個(gè)系統(tǒng)和網(wǎng)絡(luò)管理員確實(shí)很辛苦问潭。這里我對(duì)實(shí)驗(yàn)室的網(wǎng)管同學(xué)鞠一躬猿诸,謝謝你的指點(diǎn)和幫助?:)?不用把你的機(jī)器當(dāng)成網(wǎng)絡(luò)服務(wù)器,不用開(kāi)放沒(méi)有必要的服務(wù)狡忙,設(shè)置好 ssh, ftp 已經(jīng)足夠了梳虽。這樣會(huì)省去了解很多沒(méi)必要了解的東西的時(shí)間。不用過(guò)度考慮“安全”灾茁,因?yàn)?Linux 缺省已經(jīng)很安全了窜觉。不過(guò)你有興趣了解更多那也無(wú)妨。
下面給出一些推薦使用的可以處理一般事情的程序北专。至于你的專業(yè)上要用到的科學(xué)和工程軟件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler,?……?還有其它物理上的禀挫,化學(xué)上的,生物上的?……?都必然有 Linux 和 UNIX 的版本拓颓。當(dāng)然他們很多不是免費(fèi)的语婴,不要總是覺(jué)得什么都應(yīng)該免費(fèi),自由不等于免費(fèi)驶睦。它們是經(jīng)過(guò)很多人辛勤勞動(dòng)的產(chǎn)物砰左,是可靠的程序,它們物有所值场航。
下面列出我常用的一些 Linux 程序菜职。一個(gè)列表里可能有很多,那是為了方便你來(lái)選擇旗闽,我列出了比較信得過(guò)的。但其實(shí)很多只有第一個(gè)是我真正在用的蜜另,我不喜歡試用程序适室。我不是一個(gè)合格的網(wǎng)絡(luò)管理員,我的服務(wù)器都只設(shè)置了我自己需要的功能举瑰,那樣可以省去我很多麻煩?:P
Shell: bash捣辆。它結(jié)合了 csh 和 ksh 的優(yōu)點(diǎn),并且有 readline 功能此迅,你可以隨意綁定自己的鍵盤汽畴。
編輯器: VIM, Emacs旧巾。
程序開(kāi)發(fā): GCC, make, ld, Scheme48, j2sdk, Perl, Python, Tcl/Tk ...
論文,幻燈工具:LaTeX, ConTeXt
繪圖工具:MetaPost忍些。這個(gè)語(yǔ)言太強(qiáng)了鲁猩,以至于我只用它了。你不熟悉的話可以用 xfig, dia 來(lái)畫一些流程圖之類的圖片罢坝。
圖像處理:ImageMagick廓握。其中的 import 程序可以屏幕抓圖,convert?程序可以轉(zhuǎn)換圖像格式嘁酿,display?可以顯示圖片和簡(jiǎn)單編輯(縮放隙券,換質(zhì)量,轉(zhuǎn)格式闹司,簡(jiǎn)單繪圖娱仔,簡(jiǎn)單慮鏡)。通常我就這么點(diǎn)需要游桩。如果你要更強(qiáng)大的圖像工具可以用 Gimp,?它幾乎和 Photoshop 差不多牲迫。
自動(dòng)管理工具:make。我可以用make來(lái)自動(dòng)編譯程序众弓,自動(dòng)編譯文檔恩溅,自動(dòng)更新插圖……?全自動(dòng),而且不會(huì)重復(fù)勞動(dòng)谓娃。
數(shù)值計(jì)算程序:SciLab脚乡。這個(gè)程序基本上可以代替 Matlab。
代數(shù)計(jì)算程序:MAXIMA滨达。這個(gè)程序基于世界上最老的計(jì)算機(jī)代數(shù)系統(tǒng)之一:?由美國(guó)能源部(DOE)發(fā)行的 MIT Macsyma 系統(tǒng)奶稠。它是用 Common Lisp 實(shí)現(xiàn)的。很多現(xiàn)在的符號(hào)計(jì)算程序比如 Maple 都從 MAXIMA 身上學(xué)到很多東西捡遍。它現(xiàn)在經(jīng)過(guò) DOE 批準(zhǔn)以 GPL發(fā)行锌订,永遠(yuǎn)是一個(gè)自由軟件。
加密程序:GnuPG画株。我的 PGP 密鑰就是它搞出來(lái)的辆飘。
打包,壓縮程序谓传。什么都有: tar, gzip, bzip2, zip, rar,?...
虛擬光驅(qū)程序蜈项。Linux 不需要虛擬光驅(qū)程序,直接 mount 就行了续挟。
ftp 服務(wù)器:proftpd, vsftpd紧卒。proftpd 功能很強(qiáng),但是我只用了最簡(jiǎn)單的一種設(shè)置诗祸。
WWW 服務(wù)器:apache跑芳。(我一般沒(méi)有開(kāi))
ftp 客戶程序:lftp轴总,ncftp。它們都是文本方式操作的博个,但是比起圖形界面的方便的多怀樟。比如 lftp 幾乎具有 bash 的所有方便功能,Tab?補(bǔ)全坡倔,bookmark, queue,?后臺(tái)下載漂佩,鏡像…… Linux 也有圖形界面的 ftp 客戶程序,但是大多不穩(wěn)定罪塔,有很多問(wèn)題投蝉。這就是很多人抱怨 Linux 不如 Windows 的一個(gè)小原因。還有很多人用 Wine 模擬 Windows 的 leapftp征堪,其實(shí) lftp 比 leapftp 好很多瘩缆,你需要的只是適應(yīng)一下。
自動(dòng)下載工具:wget佃蚜。它非常穩(wěn)定庸娱,有一次我下載一個(gè)程序,用 IE 和 Mozilla 下載回來(lái)的文件都是壞的谐算,最后還是 wget 可靠的傳輸了數(shù)據(jù)熟尉。用它甚至可以鏡像整個(gè)網(wǎng)站,比起 WebZip 這樣的 Windows 程序強(qiáng)多了洲脂,而且不會(huì)因?yàn)槟悴桓跺X就在下載回來(lái)的網(wǎng)頁(yè)里強(qiáng)制插入廣告苟耻。
虛擬終端:rxvt, xterm, gnome-terminal, mlterm,?...
X server: XFree86 [14]
窗口管理器:FVWM在刺。編譯加入了 libstroke娄琉。
中文輸入:XSIM役听。被我修改過(guò)以適應(yīng) FVWM 的需要。另外推薦你還可以用 SCIM一铅。
email 處理:Mutt?+ Postfix + fetchmail
看 PDF, PS, DJVU 文件:Acrobat Reader, xpdf, GhostScript, gv, djvu工具包和 netscape 插件陕贮。
看CAJ文檔。我從來(lái)不看CAJ之類的文檔潘飘,如果找不到PDF或PS肮之,直接去圖書館借最好。
看網(wǎng)頁(yè):Mozilla, Phoenix, lynx卜录。Mozilla-Xft 的顯示效果比 IE 好很多局骤。
英漢字典:IBM智能詞典,星際譯王暴凑。
編輯網(wǎng)頁(yè):我用 VIM 直接寫 HTML。你如果想要圖形方式的可以用其它的比如 screem, BlueFish赘来。
登錄其它 UNIX, Linux 機(jī)器:openSSH, telnet现喳。?我喜歡用 openSSH 把其它機(jī)器的 X 程序通過(guò) ssh 加密的隧道傳到我機(jī)器上顯示凯傲。
登錄 Windows2000 server 的 display service: rdesktop,...我有一天試了一下嗦篱,不錯(cuò)冰单。后來(lái)就沒(méi)有用過(guò)了。
同步程序:rsync灸促。我用 rsync 通過(guò) ssh 來(lái)跟某些機(jī)器同步數(shù)據(jù)诫欠,或者做自己機(jī)器上不同目錄間的同步。
上BBS:rxvt(或任何一種終端)?+ telnet + chatbot(helloooo 機(jī)器人的程序)
QQ, ICQ:?我沒(méi)有 QQ[15]?或 ICQ浴栽。不過(guò)你可以用 Gaim,?它同時(shí)支持 QQ, ICQ 和很多其它的即時(shí)通信方式荒叼。ICQ?用戶也可以用 Licq。
放錄像:MPlayer, RealPlayer典鸡。MPlayer 太好了被廓,直接就可以放 VCD, DVD, divx, wma, wmv ...?用 Windows 的同學(xué)都很羨慕我,說(shuō) Windows 要放這個(gè)需要大堆插件萝玷。 rm 最好還是用 realplayer 放嫁乘,它也是免費(fèi)的。
放音樂(lè): xmms(mp3,ogg都可以), mpg321(放mp3), ogg123(放ogg)球碉。mpg321 不如 xmms 管理音樂(lè)文件那么方便蜓斧,但是有時(shí)我還是用 mpg321 放 mp3 作為背景音樂(lè),因?yàn)閼械瞄_(kāi)一個(gè)xmms窗口?:)
游戲:我覺(jué)得 KDE 的那個(gè) ksokoban(推箱子)睁冬,很好玩?:)
看 Word 文檔挎春。請(qǐng) Word 用戶把文檔全部轉(zhuǎn)為 PDF 或 PS 再給我,文檔里沒(méi)有特殊的格式干脆就用文本吧痴突,何必那么麻煩搂蜓。以前很奇怪的是,通知里本來(lái)沒(méi)有什么特殊的格式居然還要發(fā)doc附件的email×勺埃現(xiàn)在好了帮碰,我們系發(fā)通知都用文本,PDF拾积,甚至圖片了?:P
其它程序:還有很多我需要用而你不一定用得著的殉挽。比如,Doctor Scheme, Scheme48, Scsh, kawa...這些程序只有 Doctor Scheme 有 Windows版本拓巧。還有很多幕后工作但是你一般不察覺(jué)的:xinetd, telnetd, sshd, crond, atd, lpd,?...?他們都比 Windows 的對(duì)應(yīng)者強(qiáng)的多斯碌,或者根本沒(méi)有對(duì)應(yīng)者。