1. 程式人生 > >完全用Linux工作(王垠)

完全用Linux工作(王垠)

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

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

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

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

我顯然是反對在大學,特別是理工科專業推廣Windows的。我也反對在對”娃娃”們的計算機啟蒙教育中使用Windows。因為Windows不論從技術上,經濟上,思想風格上都是與我們培養高科技人才的目標格格不入的。Windows的流行屬於歷史遺留問題,爺爺一級的人當然已經不可救藥,但是我們不應該讓下一代繼續走上歧途。
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錯誤觀念的世界,你需要信念和勇氣才能理解它的簡單。” 我下面就告訴你一些我理解到的東西。首先,你要知道的是微軟在國際科學領域是根本沒有地位的。

微軟的地位

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

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

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

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

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還不容易嗎?”……

發達國家的計算機教育

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

嗯,你現在已經是上層階級,白領人士了。你現在可以像這樣”自由”的,”安全”的生活了。
為什麼要反對使用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?你仔細想一想,微軟的程式對人類到底有什麼重大作用?

什麼是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的機器一般沒有足夠的能力執行這樣的程式。你不要以為只有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。
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核心本身就是高度優化的。

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


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



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。

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

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

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

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

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

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

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

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

結論

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

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

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

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

附錄: 我用來處理日常事務的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使用