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 籠罩下的中國計算機教育

說句丟臉的話,比爾蓋茨很久以前是我的偶像……

在中國,比爾蓋茨被很多人奉為神聖,"少年電腦天才",甚至有的人提到他的名字就做出"抱拳對天"的姿勢。很多人談到微軟的"新技術","高科技" 都是眉飛色舞。各種"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 是老百姓用的,要求別那麼","微軟那麼有錢,以後想超過 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