完全用Linux工作,擯棄Windows

文章轉載自:http://www.douban.com/group/topic/6540710/

作者王垠


我已經半年沒有使用Windows的方式工作了。Linux高效的完成了我所有的工作。 


GNU/Linux不是每個人都想用的。如果你只需要處理一般的事務,打遊戲,那麼你不需要了解下面這些了。 

我不是一個狂熱的自由軟件份子,雖然我很喜歡自由軟件。這篇文章也不是用來推行自由軟件運動的,雖然我覺得自由軟件運動是非常好的。 

這篇文章也不是用來比較Linux和Windows內核效率,文件系統,網絡服務的。我現在是作爲一個用戶而不是一個開發者來說話的,我們的討論是基於操作,應用層面的。是爲了告訴大學裏還不瞭解,或者不 理解UNIX的科學工作者和大學生,UNIX比Windows更適合用於科學研究工作,請大家理解UNIX的工作方式,不要用Windows的標準來要求Linux,而要用一個科學工作者的標準來要求自己,用UNIX的思想來武裝自己。 

我顯然是反對在大學,特別是理工科專業推廣Windows的。我也反對在對”娃娃”們的計算機啓蒙教育中使用Windows。因爲Windows不論從技術上,經濟上,思想風格上都是與我們培養高科技人才的目標格格不入的。Windows的流行屬於歷史遺留問題,爺爺一級的人當然已經不可救藥,但是我們不應該讓下一代繼續走上歧途。

 

1、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錯誤觀念的世界,你需要信念和勇氣才能理解它的簡單。” 我下面就告訴你一些我理解到的東西。首先,你要知道的是微軟在國際科學領域是根本沒有地位的。

2、微軟的地位 

微軟的名聲在歐洲和美國的大學裏,特別是在計算機系裏之壞,大家可能有所耳聞。我認識的MIT,Stanford的教授,貝爾實驗室的專家,甚至一個歐洲小國的高中計算機老師都絕口不提微軟的名字。在他們眼裏,微軟只是一個沒有真技術,專靠在落後國家商業宣傳和壟斷 經營的小公司。這個”小”並不是說它人少,錢少,而是說它先進技術少。 

我上次和王益合作寫了一個算法演示程序,那個算法是貝爾實驗室一位科學家Steven Fortune很天才的發明,爲了程序能夠被身邊大多數人使用,我們選擇了VC+MFC作爲平臺。我在分析算法時還得到Fortune很熱情的鼓勵,寄給我一份資料,還多次回信耐心的給我講解了很多細節。但是程序完成之後,我把樣品發給Fortune,他回信說:”對不起。我機器上沒有MFC。” 話說的很客氣,但是我已經感覺到了他對Windows的不屑。然後我把MFC靜態編譯進程序再發給他,他就沒有再回信了。他顯然不是瞧不起我,而是確實有難處。 

你能感覺到這位科學家對微軟和Windows是什麼態度了吧?不是反感,而是他心裏根本沒有Windows這個東西!微軟在高科技領域沒有發展,那麼它怎麼生存呢?到發展中國家去發展一下,他們的人民還對電腦一無所知,我說不定甚至可以打入大學的計算機系呢。 我送他們軟件,我捐錢蓋大樓,我出錢找圖靈獎獲得者來演講,讓他們覺得我們都是科學家!

好了,現在全國的大學包括清華,幾乎所有人機器必裝盜版Win2000,Office XP,學校的選課系統是非IE不能正確瀏覽,論文用Word編輯,演示用ppt做,email的通知附件是doc文件,你不用Word打不開,連863項目都用VC寫程序了。我很久以前就看到一份報紙說,”微軟爲什麼不嚴厲打擊盜版?” 這篇文章說,微軟非但不打擊中國的盜版行爲,而且有放任之趨勢。放長線吊大魚,”以後我要你們加倍的來還我!” 確實如此,它的目的快實現了。 

3、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是老百姓用的,要求別那麼?quot;,”微軟那麼有錢,以後想超過UNIX還不容易嗎?”…… 

4、發達國家的計算機教育 

我前段時間在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。 

嗯,你現在已經是上層階級,白領人士了。你現在可以像這樣”自由”的,”安全”的生活了。 


5、爲什麼要反對使用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?你仔細想一想,微軟的程序對人類到底有什麼重大作用? 

6、什麼是Windows能幹而Linux幹不了的事情?--- 


”Windows能幹而Linux幹不了的事情,那就是不需要乾的事情。” 


有個朋友看我半年沒有用Windows,有時就會問我:”你只用Linux,有沒有發現有些Windows能處理的事情Linux幹不了?”--- 
我回答說:”Windows能幹而Linux幹不了的事情,那就是不需要乾的事情。” 


7、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。 


8、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內核本身就是高度優化的。 

9、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維護的。 


10、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乾的更好。 


11、Linux幹不了的有用的事情Windows照樣幹不了 


當然Linux不是萬能的。它也有不能幹的事情,電腦也有幹不了的事情。但是Linux幹不了的事情,Windows肯定也幹不了。這些事情就是我們需要探索,需要努力的事情了。在你探索的過程中,Linux必定是你的好夥伴。 


不要把Linux和Xwindow掩蓋起來! 

不要把我們的用戶當成傻瓜。 

什麼?你早就知道Windows是垃圾?噢!你怎麼不早說呢!害我廢話這麼多。嘿嘿。 

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

“Linux + Xwindow” 

“那我問你,Xwindow是什麼樣的?” 

“不就是跟Windows差不多嗎?只不過 ‘Start’ 按鈕比較方,而且上面不是一個Windows標誌,而是一個腳丫子。點擊一下居然還有很漂亮的中文菜單。我喜歡!” 

“你知道什麼是’根窗口’嗎?” 

“不知道。從來沒聽說過呢?” 

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

“哪兒有什麼窗口啊!我沒有看到呢?” 

你發現了問題嗎?這些Linux用戶說是在用Linux和Xwindow,但是他們對Linux和Xwindow幾乎完全不瞭解。很多人用了那麼久Xwindow都不知道根窗口是什麼東西,不知道其實按鈕也是窗口,不知道窗口管理器和其它程序有什麼關係,大家都以爲窗口上面的按鈕是程序自己放上去的,不知道窗口? quot;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書籍市場。 

現在很多人已經把能夠利用別人的庫寫出一個好看的程序作爲自己編程水平的象徵。在這?quot;圖形化”,”可視化” 的年代,你如果還在用troff, LaTeX寫文檔,你還在用VIM自己編輯HTML,用Mutt處理郵件,你還在用文本模式的gdb調試程序,你還在用Xlib寫程序, 你還在用tin上USENET,你還在自己寫Makefile,寫機器代碼,你還在玩Clossal Cave這樣的字符模式冒險遊戲,那你就是老古董。 

其實這種思想是錯誤的。雖然你是一個堅決的Linux支持者,但是你的思想是Windows的思想。你認爲圖形界面,菜單,按鈕就可以解決一切問題,就可以給你高效方便。你還是沒能擺脫微軟給你的潛移默化的東西。你其實離不開Windows那樣的環境,你遲早會刪掉自己的Linux。 

12、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的模糊界線嗎?我就是堅定不移的”兩面派”。 

13、UNIX是簡單的 


”我相信簡單就是最好,如果太複雜,我是不能理解的。” -Seymour Cray 

很多第一次用Linux的人會驚奇的發現,Linux的程序居然不?quot;安裝”就可以運行,程序拷貝到隨便那個目錄都可以用,而不是一定要佔用你第一個分區的空間。程序的設置只是一些簡簡單單的文本文 件。你根本不需要什麼”註冊表修改器” 就可以改變系統的設置。這就叫做簡單,但是簡單就是美。雖然這只是UNIX簡單性的一個膚淺的認識,你已經體會到了某些東西。 

但是簡單並不意味着功能弱,並不意味着落後。相反,簡單意味着強大,意味着生命力。 

我不會再繼續闡述我理解到的”UNIX的簡單”,因爲這個需要自己去體會。 

14、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甩在身後! 

15、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,它收到這樣的提示時,可以答應工具條程序的這個要求,也可以不答應。一切選擇的權力在於誰?當然是用戶了! 

你想想,是不是有些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過濾器處理…… 這一切我都可以辦到!我可以選擇我最喜歡的專門的程序來完成專門的工作,然後把它們結合在一起,我也可以分別得到它們的好處。 

16、學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 …… 

17、結論 

我寫這麼多的目的是什麼?我希望喜歡Linux的朋友,完全清除微軟和Windows灌輸在你腦子裏的謬論,別再相信它們所謂的”新技術”,別再追趕Windows,因爲追趕Windows = 倒退。馬克思有一個思想很重要,”新生事物並不一定是在最近出現的。” 

UNIX,Xwindow, TeX雖然都比Windows先出現,但是它們纔是先進生產力的代表。我們要清楚的認識到什麼纔是真正的現代化,什麼纔是真正的自動化。 

消除學計算機很難的幻覺,勇敢的拿起像bash, FVWM, TeX, VIM, Emacs, Mutt ……這樣強大的程序,勇敢的面對符號。不要再埋怨”Linux爲什麼不能像Windows那樣”,不要再浪費時間試用這樣那樣的程序,不要再忙着升級。你需要理解UNIX的工作方式,因爲那是大多數科學家的工作方式。Linux可以成爲你的好朋友,你需要認識它,瞭解它,信任它,才能完全的靠它來高效的工作。當然,在遊戲機,手機,掌上電腦裏,或者在用電腦來娛樂的時候,用一些 “傻瓜軟件”還是不錯的. 

我希望小學,中學的計算機老師能夠提高自己的素質,在孩子們的啓蒙教育中充分利用Linux神祕的特點,引起孩子們對數學,對符號的好奇心。誘導他們用計算機來解決世界上的有趣問題,而不要把教學的範圍侷限於計算機的操作和它自身的問題。 

18、附錄: 我用來處理日常事務的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的對應者強的多,或者根本沒有對應者。 


19、附: 

寫給支持和反對《完全用Linux工作》的人們 
作者:王垠 

在一陣陣唾罵和歡呼聲中,《完全用linux工作》被轉載到了天涯海角。很多人支持我,也有很多人唾罵我。我不知道它是怎樣流傳到那麼多地方,其實 我不知道它都被轉到哪裏去了…… 我知道現在這篇文章又會羅裏羅索寫很長(因爲我計劃寫這樣一個東西已經很久了,坐在Emacs前面總是有一種巫師在煉丹的感覺……),所以先提出中心思想 吧。中心思想就是: 

我只是一個傻瓜。看《完全用Linux工作》的時候請用你們自己的判斷力。 

幾乎所有人都承認,那篇文章很偏激。當時的情況是這樣,我用Linux的時候被一個同學鄙視了,說:”你怎麼用像DOS一樣落後的東西,真土!看我漂亮的Win2000...” 這跟當面嘲笑別人老婆或者媽媽有什麼區別?我義憤填膺啊,就幾乎跟他吵起來。然後就寫出了這篇文章放在主頁上,叫了幾個人來看。接着我珍愛的TeX又受到衆人鄙視,於是我又寫了一篇文章打擊Word,然後把TeX捧上了天。道理很簡單,鄙視我喜歡的東西的人就是敵人—邪教徒或者恐怖分子—他支持的我就反對,他反對的我就支持。爲了使人信服,舉例必用大科學家,世界一流大學,一流實驗室的名號,雖然我不跟其中任何 一種沾邊。還好那時候我還不認識上帝,要不就打他的名字了。論據不管是實際經歷還是自己推測的,先寫上去再說。揚眉吐氣啊!隔壁微軟研究院的哥們居然都被 我打動了,開始寫Linux程序,學用LaTeX和Emacs。不過幾天之後我就把它刪掉了,因爲我自己都感覺到偏激。 

於是就沒管那篇文章了。可是沒想到它竟然已經被轉載到那麼多地方,似乎引起不小的波瀾。有段時間每天都收到十幾封email,國內的,國外的,問技 術問題的,誇我的,罵我的,講道理的,鄙視我的,想交朋友的,語重心長的,號稱要刪掉機器上的Windows的…… 我的主頁居然也佔據了”王垠”在Google上的首選位置,把那個日本的什麼王公貴族”李王垠殿下”都擠下去了。大家似乎都知道我天花亂墜的本事了,有人就想找我寫文章向別人推薦商業軟件,我很後悔 沒有趁機狠狠賺一筆。走到圖書館,亮出借書證,管理員張大了嘴說:”哇!你就是那個Linux牛人啊!”,也不知道他是褒是貶。甚至有人把他的BBS暱稱都改成了”堅決擁護精神領袖花生” (花生是我的外號)。爲此還騙到了好幾頓報告?quot;報告”是清華專用動詞,意思是請客吃飯)。雖然我覺得自己身上沒有什麼值得自豪的東西,但是又有 點爲自己興風作浪的本事感到驚訝。雖然我一再告誡自己要謙虛,但是不由的有一種毛澤東,甘地,甚至摩西的感覺。我更加體會到”網絡上沒有人知道你是一頭豬 “的真理性。其實,不但網絡上沒有人知道我是一頭豬,實際生活中也沒有人知道,其實我是一頭笨豬。 

這麼長的時間之後,還有人寫信給我說”深受鼓舞”,”提壺灌頂”,”對不起我還在用Windows給你寫信”,”真想刪掉Windows啊” …… 我很好奇,我的文章真的有那麼大的威力?我再看這篇文章,覺得有點慘不忍睹,看了開頭就不忍心再看下去。我告訴同學我很後悔寫了一篇這麼偏激的文章,可是 他?quot;徼枉必須過正,你沒有錯”,所以我也搞不清楚自己這樣寫對不對,這樣自責對不對。就像我從來不敢看自己照片,卻有時被人稱爲帥哥,就讓我無 法判斷自己是否帥一樣。所以現在我就開始懷疑我自己是否真是一頭笨豬。也許多年以後,我會正確的評價我的想法。就像我現在覺得我15歲的照片挺養眼一樣, 也許我會發現自己其實是一頭聰明豬? 

寫這篇文章不是爲了讓自己免得被罵,也不是爲了顯示高深的豬的哲理。只是因爲我深深的感到人應該有自己的判斷力,不要簡單的接受別人說的DO’s和DONT’s。懷疑一切,同時又敞開心扉去了解一切。 

看過《完全用Linux工作》的朋友,請仔細檢查裏面的DO’s和DONT’s。 2004.8.26
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章