"UNIX 是簡單的,你不需要成為天才也能理解這種簡單"
由於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 玩。
你支持 Linux,你喜歡 Linux,你能從中感覺到快樂,這非常好。你現在只需要明白的是:Linux 從來就不是一個玩具,它是天才UNIX的後代。UNIX 是自晶體管發明以來最偉大的發明,它從誕生那一天開始就比 Windows 的設計出色。Linux 並不需要追趕 Windows,不需要打垮微軟,它的最終目標是改變整個計算機世界,還人們自由,給人們樂趣和方便。其它UNIX很多都已經敗在Linux腳下,更何況 Windows!
你如果出現了以上的情況,說明你的思想受到了 Windows 的某種潛移默化的影響和誤導。你沒有能夠從本質上理解存在於 Linux 身上的 UNIX 思想。UNIX的設計者 Dennis Ritchie 說:"Unix is simple. It just takes a genius tounderstand its simplicity." 但是我不這麼認為,因為我不是一個天才,但是我卻勇敢的把Windows完全刪除掉,半年之後我體會到了 UNIX 的思想和好處。因為我相信這樣的信念:"Windows 能辦到的事 Linux 一定能辦到,而且辦的更好。"
這小節開頭的話應該改成:"Unix 是簡單的,但是在這個沖斥著 Windows 錯誤觀念的世界,你需要信念和勇氣才能理解它的簡單!" 我下面就告訴你一些我理解到的東西。
# 微軟的地位
微軟的名聲在歐洲和美國的大學裡,特別是在計算機系裡之壞,大家可能有所耳聞。我認識的 MIT,Stanford 的教授,貝爾實驗室的專家,甚至一個歐洲小國的高中計算機老師都絕口不提微軟的名字。在他們眼裡,微軟只是一個沒有真技術,專靠在落後國家商業宣傳和壟斷經營的小公司。這個"小"並不是說它人少,錢少,而是說它先進技術少。
我上次和王益合作寫了一個算法演示程序,那個算法是貝爾實驗室一位科學家Steven Fortune很天才的發明,為了程序能夠被身邊大多數人使用,我們選擇了VC+MFC 作為平台。我在分析算法時還得到 Fortune 很熱情的鼓勵,寄給我一份資料,還多次回信耐心的給我講解了很多細節。但是程序完成之後,我把樣品發給Fortune,他回信說:"對不起。我機器上沒有 MFC." 話說的很客氣,但是我已經感覺到了他對 Windows 的不屑。然後我把MFC 靜態編譯進程序再發給他,他就沒有再回信了。他顯然不是瞧不起我,而是確實有難處。
你能感覺到這位科學家對微軟和 Windows 是什麼態度了吧?不是反感,而是他心裡根本沒有 Windows 這個東西!微軟在高科技領域沒有發展,那麼它怎麼生存呢?到發展中國家去發展一下,他們的人民還對電腦一無所知,我說不定甚至可以打入大學的計算機系呢。我送他們軟件,我捐錢蓋大樓,我找圖靈獎獲得者來演講!
好了,現在全國的大學包括清華,幾乎所有人機器必裝盜版 Win2000, Office XP,學校的選課系統是非IE不能正確浏覽,論文用 Word 編輯,演示用ppt做,連863 項目都用 VC 寫程序了。我很久以前就看到一份報紙說,"微軟為什麼不嚴厲打擊盜版?" 這篇文章說,微軟非但不打擊中國的盜版行為,而且有放任之趨勢。放長線吊大魚,"以後我要你們加倍的來還我!" 確實如此,它的目的快實現了。
# Windows 籠罩下的中國計算機教育
說句丟臉的話,比爾蓋茨很久以前是我的偶像…… //blush
在中國,比爾蓋茨被很多人奉為神聖,"少年電腦天才",甚至有的人提到他的名字就做?quot;抱拳對天"的姿勢。很多人談到微軟的"新技術","高科技" 都是眉飛色舞。各種"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 的論文。他還打包給我寄過來一份 MIT 的 "How to DesignPrograms".他說他在自己的 PC 機上裝的是 Linux,他用 Emacs 編輯,運行Scheme 程序。他對 Emacs 的了解和愛好真是使人驚訝。他大學本科畢業時做的畢業設計是一個 Scheme 解釋器。這對於我來說是望塵莫及了。
他是那麼的不厭其煩,我的每一個問題他都詳細的回答。我有時都覺得過於詳細了,怎麼這麼耐心啊?我覺得他似乎是我的高中老師。他是什麼樣的人呢?我好奇的打聽了他的情況。原來,她是丹麥一所普通高中的計算機老師!注意我換了人稱代詞!
她說她在高中裡講授程序設計和算法,計算機語言文法分析。她說用 Scheme,她的學生不用再為指針越界,內存洩漏等程序語言本身的問題而煩惱,而專注於問題和算法本身。有利於培養學生解決問題的能力,特別是用計算機解決數學問題的能力。
天哪!為什麼歐洲出現那麼多數學家,幾何學家?你看看別人重視的是什麼!我們的計算機教育如果繼續這樣下去,只會沿著彎路越走越遠!
# 微軟和它的朋友們的如意算盤
下面來看看微軟的收入是怎麼來的。首先,Windows 98系列操作系統,一個就是100 多美元,每次升級又是幾乎同樣的價錢。Windows NT 還要貴幾倍,而且有用戶數目限制,5個用戶的,10個用戶的…… 以後如果要增加用戶數目還要按比例付錢。這個奇怪的現象被通用汽車公司的總裁比喻為:"你買的微軟牌汽車最開頭只有一個座位,每加一個座位你得向汽車公司付錢,每開100英裡要大修一次,每過一年要換一次引擎。"
花了如此多錢買來的操作系統就能用了嗎?它竟然連壓縮程序都沒有提供!你裝上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 能干而 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 下開發圖形界面程序極其簡單,很多初中生甚至小學生都可以隨手編出一些漂亮不中用的程序。如果你整天尋找這樣的程序挑來挑去,永遠也找不到你滿意的。
我曾經也犯過這樣的錯誤,優秀的 FVWM, lftp, Mutt, wget 都被我忽略過!當我找回它們的時候,我是那麼的羞愧不已,它們現在都是我的朋友 用這些程序你可以改變它們的一切,我第一次看到 FVWM 覺得它只不過是一個有很厚很難看邊框的東西。可是現在,我的同學看到 FVWM 都說:"哇!真漂亮。"
有另一種完全不同的方式可以達到相同的目的,甚至更好。
很多人很關心 Open Office, Star Office, AbiWord, …… 他們多麼盼望有一天某一個 Linux 程序能夠完全兼容的打開一個復雜的 doc 文檔。但是你永遠也不可能有那一天。為什麼呢?因為微軟為了占有市場,必定不會讓其它系統的程序能夠完全兼容它的文檔格式!它一定會不斷變化 doc 文檔的內部結構,隱藏一些秘密,讓其它公司的程序打開 doc 文檔時總是有某種問題,從而你必需購買Microsoft Office 和 Windows.
你應該想一下,那麼多的高智商的大學教授,科學家,學生,他們用的都是 Linux或者其它類型的 UNIX,他們沒有 Word 可用,怎麼處理文檔呢?這麼多年沒有一個像 Open Office 的程序出現,難道大家沒有辦法寫文檔嗎?
顯然不是這樣。你看看那些高水平的學術雜志,論文,那些大學教授的網頁,那些漂亮的PDF幻燈片,它們是什麼做的?原來 UNIX 用戶早就有非常方便的 troff,LaTeX, SGML 等東西可以處理文檔,而且它們比起 Word 都要高明的多。Word 顯然被這些大拿忽略了,以至於很久以來沒有人想在 Linux 下開發一個類似 Word的程序,除非某些公司想搶微軟的飯碗。
很多人留著 Windows 在硬盤上的原因無非是為了用 Word 和 PowerPoint.你待會兒可以看看我的TeX網頁,你就會知道為什麼我可以完全離開 Windows.
# Windows 能做的那些沒用的事情 Linux 永遠做不好
電腦游戲
有些人說 Linux 下不能玩 Windows 下所能得到的所有游戲。的確,Linux 下雖然也有少量的游戲,比如 Quake.但是它沒有 Counter Strike, 沒有 Star Craft,……
並不是說電腦游戲不該玩,但是應該適可而止。電腦是用來處理事務,幫助你學習,解決問題的工具,而不是一個玩具!整天沉迷於電腦游戲中,而不出去感覺外面的世界,你會變得越來越冷酷,越來越缺乏人情味。你與真實的世界越來越遠。
你可以在 CS 裡殺人,你可以在 Tomb Raider 裡探險,你甚至可以在 TonyHawk'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 內核本身就是高度優化的。