完全用GNU/Linux工作
# 理解 GNU/Linux
"UNIX 是簡單的,你不需要成為天才也能理解這種簡單"
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
由于GNU/Linux這個詞太長,下面如果沒有特別指明,“Linux”就是指“GNU/Linux”
。
在這個年代,恐怕沒有人需要我來介紹 Linux 是什么了吧?如果你覺得“Linux只不過
是跟 DOS 差不多的東西”,那你恐怕很久在山洞里沒見天日了吧?請問問你旁邊的 Linux
用戶,Linux 到底是個什么地位?
那為什么我還要寫一篇這樣的文章?因為,我發(fā)現(xiàn)還有很多人不不理解 Linux 和UNIX
,雖然他們也在用它,但是他們有時會問:“為什么 Linux 不能像 Windows那樣 ……?”,“怎么Redhat Linux不能 mount NTFS 分區(qū)!”,“Linux 下用什么整理硬盤?”,“什
么時候OpenOffice才能完全兼容Word文件啊?”,“現(xiàn)在還有什么Windows能干的事情Linu
x干不了的?”……
他們有40G的硬盤,卻只為 Linux 分配了2G空間,有時還抱怨“這個東西怎么占這么多硬盤!” 似乎 Windows 該占用大部分硬盤。他們把重要的數(shù)據(jù)裝在Windows的分區(qū),似乎信不過Linux。他們總是到處尋找新奇的,好看的GUI程序,對命令行的東西一概不屑一顧。他們對Drag&Drop,菜單配置,自動升級非常感興趣。他們?nèi)绻业揭粋€很像 Windows 程序的 Linux 程序,一定會很高興的說:“哈哈!Linux 也能……了!” 如果Linux在某種測試中勝過Windows,他們會高興得跳起來。他們沒有辦法用Linux解決問題的時候,甚至用Wine來運行Windows程序。有時實在沒辦法,只好重起到 Windows,或者干脆省得麻煩,在 Windows 下裝一個VMWare 虛擬一個 Linux 玩。
你支持 Linux,你喜歡 Linux,你能從中感覺到快樂,這非常好。你現(xiàn)在只需要明白的
是:Linux 從來就不是一個玩具,它是天才UNIX的后代。UNIX 是自晶體管發(fā)明以來最偉大
的發(fā)明,它從誕生那一天開始就比 Windows 的設計出色。Linux 并不需要追趕 Windows,
不需要打垮微軟,它的最終目標是改變整個計算機世界,還人們自由,給人們樂趣和方便。
其它UNIX很多都已經(jīng)敗在Linux腳下,更何況Windows!
你如果出現(xiàn)了以上的情況,說明你的思想受到了 Windows 的某種潛移默化的影響和誤
導。你沒有能夠從本質(zhì)上理解存在于 Linux 身上的 UNIX 思想。UNIX的設計者 Dennis Rit
chie 說:“Unix is simple. It just takes a genius tounderstand its simplicity.”
但是我不這么認為,因為我不是一個天才,但是我卻勇敢的把Windows完全刪除掉,半年之
后我體會到了 UNIX 的思想和好處。因為我相信這樣的信念:“Windows 能辦到的事 Linux
一定能辦到,而且辦的更好?!?
這小節(jié)開頭的話應該改成:“Unix 是簡單的,但是在這個沖斥著 Windows 錯誤觀念的世界,你需要信念和勇氣才能理解它的簡單!” 我下面就告訴你一些我理解到的東西。
# 微軟的地位
微軟的名聲在歐洲和美國的大學里,特別是在計算機系里之壞,大家可能有所耳聞。我
認識的 MIT,Stanford 的教授,貝爾實驗室的專家,甚至一個歐洲小國的高中計算機老師
都絕口不提微軟的名字。在他們眼里,微軟只是一個沒有真技術,??吭诼浜髧疑虡I(yè)宣傳
和壟斷經(jīng)營的小公司。這個“小”并不是說它人少,錢少,而是說它先進技術少。
我上次和王益合作寫了一個算法演示程序,那個算法是貝爾實驗室一位科學家Steven F
ortune很天才的發(fā)明,為了程序能夠被身邊大多數(shù)人使用,我們選擇了VC+MFC 作為平臺。
我在分析算法時還得到 Fortune 很熱情的鼓勵,寄給我一份資料,還多次回信耐心的給我
講解了很多細節(jié)。但是程序完成之后,我把樣品發(fā)給Fortune,他回信說:“對不起。我機
器上沒有 MFC?!?話說的很客氣,但是我已經(jīng)感覺到了他對 Windows 的不屑。然后我把 M
FC 靜態(tài)編譯進程序再發(fā)給他,他就沒有再回信了。他顯然不是瞧不起我,而是確實有難處
。
你能感覺到這位科學家對微軟和 Windows 是什么態(tài)度了吧?不是反感,而是他心里根
本沒有 Windows 這個東西!微軟在高科技領域沒有發(fā)展,那么它怎么生存呢?到發(fā)展中國
家去發(fā)展一下,他們的人民還對電腦一無所知,我說不定甚至可以打入大學的計算機系呢。
我送他們軟件,我捐錢蓋大樓,我找圖靈獎獲得者來演講!
好了,現(xiàn)在全國的大學包括清華,幾乎所有人機器必裝盜版 Win2000, Office XP,學
校的選課系統(tǒng)是非IE不能正確瀏覽,論文用 Word 編輯,演示用ppt做,連863 項目都用 VC
寫程序了。我很久以前就看到一份報紙說,“微軟為什么不嚴厲打擊盜版?” 這篇文章說
,微軟非但不打擊中國的盜版行為,而且有放任之趨勢。放長線吊大魚,“以后我要你們加
倍的來還我!” 確實如此,它的目的快實現(xiàn)了。
# Windows 籠罩下的中國計算機教育
說句丟臉的話,比爾蓋茨很久以前是我的偶像…… //blush
在中國,比爾蓋茨被很多人奉為神圣,“少年電腦天才”,甚至有的人提到他的名字就
做出“抱拳對天”的姿勢。很多人談到微軟的“新技術”,“高科技” 都是眉飛色舞。各
種“VC編程圣經(jīng)”,“深入了解 Visual C++”之類的書,在開頭幾頁都會出現(xiàn)非常肉麻的
字眼,“在那團團的混沌中,一個開天辟地的精靈,Windows 1.0,誕生了……”
微軟的軟件被這么多人盜用,那么人們是怎樣使用這些盜版程序的呢?先看看電腦培訓
班,教的都是一些 DOS 命令,打字,Windows 基本操作,Word 文檔處理,PowerPoint,高
級班可能有 Excel,Access…… 參加各種微軟認證考試,MCSE,MSDE 的人絡繹不絕,考試
輔導班都貼出了“280元??歼^為止”之類的字樣,考試參考資料更是昂貴,有些電腦書店
整整兩書架都是“Microsoft Press”的東西。我有個同學參加認證考試,每門考試都要200多元,而且你一次考不過再考,又要交錢。他后來還津津樂道跟我說,看我,花了XXXX(一
個四位數(shù))元考過了微軟認證,得到一張比爾蓋茨親筆簽名的證書和價值6000元的 Windows
XP 內(nèi)部發(fā)行版。
“電腦要從娃娃抓起”,我們再來看看娃娃們學的是什么。大部分家長給孩子買了電腦
之后,他們首先就會裝一個盜版的 Windows,然后買來盜版的游戲開始玩。如果哪個孩子會
用 Delphi 編程序,那可不得了。報社記者,電視臺爭相報導,說,某某學校的初中生某某
,在別人都還在玩電腦游戲這種“初級階段”的時候就已經(jīng)用 Delphi 寫程序了。鏡頭還瞄
準了他顯示器上面的像框中的比爾蓋茨頭像!
我剛進入大學計算機系時還不懂得什么是操作系統(tǒng),因為我以前只用過“中華學習機”
??吹叫氯雽W的同學們各個談論的都是 “Windows 95”,“VC”…… 我簡直覺得我落后了
好幾十年一樣,整個一土人,根本跟他們答不上話。好不容易找到一個比較熟的同學問了一
下:“你們天天談論的瘟95是什么???”答:“win95就是一個操作系統(tǒng),跟DOS是一類?!?
“朵死是什么?” “你連DOS都不知道是什么?別在計算機系混了?!?學校上課當然不講V
C編程之類的東西,但是上 Pascal 的老師有一次就說:“嗨,我們學校真是落后?,F(xiàn)在別
人都用 C, C++,甚至 VC 了,我們還在講 Pascal。不知道什么時候才能有VC課啊。你們出
去也是要用VC的,只好自學了?!?有些同學很多時候上課都捧著一本很重的“Windows 編
程大全”之類的書,根本沒有聽課,吃飯時就念念有詞的跟我說,“代碼的優(yōu)化是無止境的
”,“匈牙利命名法真是偉大的發(fā)明” …… 這就是中國很多大學計算機系的情況。
感覺到無知了?這不是偶然的,而是微軟長久以來的如意算盤。它要讓無知的大家都把它奉為神圣,它要讓支持UNIX, Xwindow的人一旦說 UNIX 好,Xwindow 好的時候,都被一
群人圍著說教:“這個 Windows 也能做到”,“你對 Windows 有偏見”,“微軟才是主流
啊”,“你敢瞧不起 win2k?”,“.NET 就是世界潮流”,“微軟的畢竟是新技術”,“
有錢就是有技術”…… 甚至在一番論戰(zhàn)比較后敗下來還是要說:“Windows 性能差點,但
是易用性強”,“Windows 是老百姓用的,要求別那么高”,“微軟那么有錢,以后想超過
UNIX 還不容易嗎?”……
# 發(fā)達國家的計算機教育
我前段時間在 USENET 發(fā)文問有關 Scheme 語言的問題時,認識了一位丹麥人。他解決
了我所有的問題,并且建議我閱讀一些很“深奧”的有關程序語言語法,文法的書,他告訴
我很多網(wǎng)站可以學習 LISP,Scheme,人工智能,算法。他叫我看Jonathan Rees 的論文。
他還打包給我寄過來一份 MIT 的 "How to DesignPrograms"。他說他在自己的 PC 機上裝
的是 Linux,他用 Emacs 編輯,運行Scheme 程序。他對 Emacs 的了解和愛好真是使人驚
訝。他大學本科畢業(yè)時做的畢業(yè)設計是一個 Scheme 解釋器。這對于我來說是望塵莫及了。
他是那么的不厭其煩,我的每一個問題他都詳細的回答。我有時都覺得過于詳細了,怎
么這么耐心???我覺得他似乎是我的高中老師。他是什么樣的人呢?我好奇的打聽了他的情
況。原來,她是丹麥一所普通高中的計算機老師!注意我換了人稱代詞!
她說她在高中里講授程序設計和算法,計算機語言文法分析。她說用 Scheme,她的學生不用再為指針越界,內(nèi)存泄漏等程序語言本身的問題而煩惱,而專注于問題和算法本身。
有利于培養(yǎng)學生解決問題的能力,特別是用計算機解決數(shù)學問題的能力。
天哪!為什么歐洲出現(xiàn)那么多數(shù)學家,幾何學家?你看看別人重視的是什么!我們的計
算機教育如果繼續(xù)這樣下去,只會沿著彎路越走越遠!{{分頁}}
# 微軟和它的朋友們的如意算盤
下面來看看微軟的收入是怎么來的。首先,Windows 98系列操作系統(tǒng),一個就是100 多
美元,每次升級又是幾乎同樣的價錢。Windows NT 還要貴幾倍,而且有用戶數(shù)目限制,5個
用戶的,10個用戶的…… 以后如果要增加用戶數(shù)目還要按比例付錢。這個奇怪的現(xiàn)象被通
用汽車公司的總裁比喻為:“你買的微軟牌汽車最開頭只有一個座位,每加一個座位你得向
汽車公司付錢,每開100英里要大修一次,每過一年要換一次引擎?!?
花了如此多錢買來的操作系統(tǒng)就能用了嗎?它竟然連壓縮程序都沒有提供!你裝上Wind
ows 之后一般第一件事就是去下載一個 WinZip 吧,“只要 29 美元”。Windows 會中病毒
啊,馬上花 70 美元買一個 Norton AntiVirus 吧。還有黑客呢?再買一個 Norton Intern
et Security 好了,100 美元。系統(tǒng)需要優(yōu)化,磁盤需要整理,買一個 Norton System Wor
ks 是你最佳的解決方案,100美元。
可是你現(xiàn)在還是不能干正事??!你想要一個 Word, PowerPoint?那就買一套Office XP 吧,一起買便宜些,$459.90。
那些程序不會用??!那些菜單怎么設置,到底有什么功能?。靠础皫椭币矊W不會。買
本書看看吧,我推薦“Special Edition Using Microsoft Office XP”,不貴,$27.99。
這本書里面大部分是屏幕抓圖,還是買一本舊的比較劃算,$17.85。
你如果只是當個秘書,上面的差不多還湊合了??墒悄阌懈叩淖非?,你想成為Window
s 程序員。首先買一個 Visual Studio.NET 吧,要不然怎么編譯程序。$494.95。
為了緊跟微軟動向,世界潮流,不能不注冊個 MSDN 什么的吧?這個貴一點,不過物有
所值啊,$2,799。
嗯,你現(xiàn)在已經(jīng)是上層階級,白領人士了。你現(xiàn)在可以像這樣“自由”的,“安全”的
生活了:
# 什么是 Windows 能干而 Linux 干不了的事情?
“Windows 能干而 Linux 干不了的事情,那就是不需要干的事情?!?
有個朋友看我半年沒有用 Windows,有時就會問我:“你只用 Linux,有沒有發(fā)現(xiàn)有些
Windows 能處理的事情 Linux 干不了?”
我回答說:“Windows 能干而 Linux 干不了的事情,那就是不需要干的事情。”
# Windows 能做的有益的事情 Linux 都能做
Windows 下的某些功能確實是我們需要的,那么 Linux 的開發(fā)者們和用戶也需要這種
功能,他們就會去實現(xiàn)這種功能,而且比 Windows 的方式好得多。由于大多數(shù)科學家,工
程師用的都是 Linux 或者某種商業(yè) UNIX, 所以幾乎所有商業(yè)的科學工程程序,比如 Matla
b, Mathematica, AutoCAD, Candence的,Synopsys的,Avant! 的……全都是先有 UNIX 的
版本(包括Linux),然后再考慮移植給Windows,甚至根本不移植給 Windows,因為 Windows
的機器一般沒有足夠的能力運行這樣的程序。你不要以為只有 Windows 才有 PSpice, UNI
X 的 HSpice 要好得多,而且可以運行在大型主機上。當然它們不是免費的,但是它們值那
個價錢。
但是 Windows 下有些東西在 Linux 下沒有很相似的,或者你找到很多類似的,但是它
們每一個比起 Windows 的那個程序都要差很多,那么原因有兩種可能性:
有一個完全類似的程序,但是由于它乍一看不漂亮,被你忽略了。而其它程序雖然看起
來很漂亮,但是它們是一些初學編程的人寫的?,F(xiàn)在由于Gtk+, Qt 的誕生,Linux 下開發(fā)
圖形界面程序極其簡單,很多初中生甚至小學生都可以隨手編出一些漂亮不中用的程序。如
果你整天尋找這樣的程序挑來挑去,永遠也找不到你滿意的。
我曾經(jīng)也犯過這樣的錯誤,優(yōu)秀的 FVWM, lftp, Mutt, wget 都被我忽略過!當我找回
它們的時候,我是那么的羞愧不已,它們現(xiàn)在都是我的朋友 :) 用這些程序你可以改變它們
的一切,我第一次看到 FVWM 覺得它只不過是一個有很厚很難看邊框的東西??墒乾F(xiàn)在,我
的同學看到 FVWM 都說:“哇!真漂亮?!?
有另一種完全不同的方式可以達到相同的目的,甚至更好。
很多人很關心 Open Office, Star Office, AbiWord, ... 他們多么盼望有一天某一個
Linux 程序能夠完全兼容的打開一個復雜的 doc 文檔。但是你永遠也不可能有那一天。為
什么呢?因為微軟為了占有市場,必定不會讓其它系統(tǒng)的程序能夠完全兼容它的文檔格式!
它一定會不斷變化 doc 文檔的內(nèi)部結構,隱藏一些秘密,讓其它公司的程序打開 doc 文檔
時總是有某種問題,從而你必需購買Microsoft Office 和 Windows。
你應該想一下,那么多的高智商的大學教授,科學家,學生,他們用的都是 Linux或者
其它類型的 UNIX,他們沒有 Word 可用,怎么處理文檔呢?這么多年沒有一個像 Open Off
ice 的程序出現(xiàn),難道大家沒有辦法寫文檔嗎?
顯然不是這樣。你看看那些高水平的學術雜志,論文,那些大學教授的網(wǎng)頁,那些漂亮
的PDF幻燈片,它們是什么做的?原來 UNIX 用戶早就有非常方便的 troff,LaTeX, SGML 等
東西可以處理文檔,而且它們比起 Word 都要高明的多。Word 顯然被這些大拿忽略了,以
至于很久以來沒有人想在 Linux 下開發(fā)一個類似 Word的程序,除非某些公司想搶微軟的飯碗。
很多人留著 Windows 在硬盤上的原因無非是為了用 Word 和 PowerPoint。你待會兒可
以看看我的TeX網(wǎng)頁,你就會知道為什么我可以完全離開 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 faki
e",但是你踩在自己的滑板上的時候還不會 ollie!
說回來,如果你偶爾玩一下電腦游戲未嘗不可。但是世界上有遠比 Windows +PC 更好
的游戲方式。Sony 的 PlayStation2, SEGA 的 DreamCast, Nintendo 的N64,Namco 的街
機……每一個都比 Windows 游戲精彩,每一個都有如此高的3D性能,以至于 Pentium4, It
anium + GForce4 都無法與它們比美!
Linux 的用戶們都是關心解決世界的關鍵問題的份子,他們哪里有時間用自己的機器來
玩游戲啊?他們每天用Linux高效的做完自己的工作就到陽光下享受自然去了。要玩游戲也
是玩一些類似推箱子,貪吃蛇之類的智力小游戲。所以,你知道為什么 Linux 幾乎沒有游
戲了吧?:)
“整理硬盤,優(yōu)化系統(tǒng)”
這是一個非常有意思的話題,僅次于有關“病毒”的話題。相信很多 Windows 用戶都
有整理硬盤的經(jīng)歷。在很多 Windows 用戶眼里,“硬盤用久了,會出現(xiàn)碎片,速度會減慢
,需要一個程序來整理,整理硬盤的時候不要做其它工作”,這好像是天經(jīng)地義的事情。
我也曾經(jīng)津津有味的看著 Norton Defrag 一點一點的把我的硬盤排序,調(diào)整,用圖形
的方式顯示出來,然后報告:“100% 沒有碎片。你的硬盤現(xiàn)在已經(jīng)達到最佳狀態(tài)。” 我現(xiàn)
在才發(fā)覺我那時是多么的幼稚。
Linux 和 UNIX 用戶似乎從來沒有“整理硬盤”這種說法呢?你覺得很奇怪嗎?如果你 覺得很奇怪,那說明你的思想在某種程度上被微軟的垃圾程序禁錮了。你需要明白,UNIX
的大型主機很多必須是一天24小時,一年365又1/4天不停運轉的,要是每個星期都要整理一
次硬盤,在整理的時候幾乎不能干任何事情,那是絕對行不通的!
Linux 機器根本不用整理硬盤,這就是為什么沒有看到過 Linux 用戶整理硬盤。Linux
的文件系統(tǒng)是比 Windows 的 FAT, FAT32, NTFS 高明得多的文件系統(tǒng),它們不但可以對文
件設置權限,實施完全的保護,而且可以“越用越整齊”,“越用碎片越少”!你應該把文
件大部分放在 Linux 的分區(qū),而不是 Windows 分區(qū),因為它比 Windows 分區(qū)可靠得多。
還有更滑稽的事情就是有很多“Norton System Doctor”,“Windows 優(yōu)化大師”,“
超級兔仔注冊表魔法” 之類的程序存在,而且價格昂貴。似乎一個操作系統(tǒng)本來應該有很
多問題,需要別的廠商做程序來“優(yōu)化”它,而且為了得到優(yōu)化,你需要付錢!這些問題 L
inux 根本就沒有,所以不需要什么優(yōu)化。Linux 內(nèi)核本身就是高度優(yōu)化的。
IDE
有些人在抱怨為什么 Linux 沒有一個良好的 IDE 開發(fā)環(huán)境。Linux 現(xiàn)在已經(jīng)有一些 I
DE 了,但是總是有很多問題。你是不是正在尋找,正在期望 Linux 某一天可以有一個VC那
樣的開發(fā)環(huán)境?你有沒有發(fā)現(xiàn)你正在進入微軟給你設下的怪圈?你為什么一定要用 IDE?你
說:“IDE 開發(fā)迅速,調(diào)試方便,適合大型程序……” 那說明微軟的程序在你腦子里已經(jīng)
比較根深蒂固,你需要好好清醒一下了,看看我來告訴你。
高明的 UNIX 程序員不用 IDE,IDE 從來就是給初級 Windows 程序員用的。
你看看大型的 UNIX 程序,包括 Linux 內(nèi)核,各種網(wǎng)絡服務程序,Xwindow 程序在內(nèi)
,哪一個是 IDE 搞出來的?我們實驗室的 EDA 程序也沒有一個是 IDE 弄的,我還知道 Ca
ndence, Synopsys,Mentor 的高性能的圖形界面 EDA 程序也都不是 IDE 寫的。你信不信
,微軟的人在寫 Windows 本身的時候也根本不用 IDE!
有一次某雜志采訪一些出名的 Linux 內(nèi)核程序員,包括 Linus 在內(nèi),沒有一個人用 I
DE,有的人用 VIM,有的用 Emacs,只有 Linus 說“GNU Emacs is evil”,但是其實他用
的是一種跟 Emacs 有同樣鍵綁定功能的 MicroEmacs。大家都是用編輯器編輯了程序文件,
然后用 make 這樣的自動工具調(diào)用 gcc 編譯器完成編譯工作的。
我以前也編過 Windows 程序:應用程序,驅動程序。但是我沒有用 VC 的 IDE。Linux
教育了我,我會在命令行調(diào)用 CL,我知道 CL 才是 VC 的編譯器。我可以在 cygwin 的 M
akefile 里使用 CL。我還知道 CL 的參數(shù)都有什么用處。但是這些不是一個從一開頭就用
IDE 的人能很快理解到的。
我相信: IDE is evil。我有一些用 Windows 的 IDE 寫程序的朋友,他們對那套東西
已經(jīng)很精通了。但是我卻驚奇的發(fā)現(xiàn),他們竟然把編譯器和匯編器的概念都分不清楚,甚至
有的人連“編輯器”和“編譯器”都搞混淆了!他們只知道在一個窗口里輸入了代碼,點擊
一個按鈕就可以編譯程序,但是這里面到底是怎么工作的,他們不知道!他們被蓋在上面的
窗口擋住了視線,甚至會以為那個按鈕就是編譯器!
他們對那些 IDE 的熱鍵背的滾瓜爛熟,但是我卻看到他們在一個函數(shù)一個函數(shù)的把別
人的 ANSI 風格的代碼變成 VC 的風格。想想這件事在 VIM 里有多么簡單,一瞬間就可以
搞定。
為什么 UNIX 程序員不用 IDE?明白了這個道理你就能體會到 UNIX 的設計思想了。首
先,一個 IDE 集成了編輯器,編譯器,匯編器,調(diào)試器,跟蹤器…… 這個編輯器功能肯定
比不上 VIM 或 Emacs,編譯器比不上 GCC,匯編器比不上 as,調(diào)試器比不上 gdb, ddd,
跟蹤器比不上 strace, ltrace, truss。你得到的是一套整合的很好的低能的程序。如果你
對調(diào)試器的功能不滿意,你只好換用另外一套IDE,但是這套 IDE 的熱鍵,菜單,編輯器功
能,按鈕…… 跟原來那個有很大不同。你不得不花很多時間來熟悉新的環(huán)境,而不能保持
原來的某些東西。
而在 UNIX 下就不一樣了。你可以用你最喜歡的 VIM 編輯程序,你在 VIM 里可以調(diào)用
GNU make,make 可以調(diào)用 gcc, ld, ... 實際上 make 能幫你很多忙。make的出錯信息可
以被 VIM 捕獲,VIM 能幫你在源程序里定位。你如果喜歡 icc, 你可以讓 make 用 icc 而
不是 gcc。你如果覺得 gdb 跟蹤變量時比較麻煩,你可以用 ddd 來顯示各種數(shù)據(jù)結構之間
的關系。你還可以在 Emacs 里調(diào)用 gdb,那樣就可以同步顯示源代碼了。而且 VIM 和 Ema
cs 還可以編輯很多其它東西,比如信件,LaTeX 文檔,HTML,配置文件…… 你不用另外找
一個什么編輯器來干這些雜活了。很多程序比如 Mutt, tin 都可以在內(nèi)部使用 VIM,這樣
就更方便了。
釋放內(nèi)存
我在 Windows 下做過的一件最傻的事情莫過于“釋放內(nèi)存”了。有一天我看到一個 Wi
ndows 程序說:“這個程序可以幫你把大量內(nèi)存釋放出來給一個很大的程序用?!蔽以嚵艘?
下,居然一下把我的 64M 內(nèi)存釋放出來 48M!我高興極了。現(xiàn)在想一想,那是多么傻的事
情,那么多的內(nèi)存留著干什么?不用白不用??!一操作系統(tǒng),居然還需要別人寫的程序來釋
放內(nèi)存,那是什么樣的操作系統(tǒng)?
在 Linux 下用 free 命令,你會發(fā)現(xiàn)你的內(nèi)存幾乎每時每刻都快要被用完。那是因為
Linux 把大部分內(nèi)存用來作為磁盤緩沖了。Linux 有比 Windows 先進的磁盤緩沖技術。你
有沒有發(fā)現(xiàn)你往硬盤寫數(shù)據(jù)的時候,很快就完成了?那是因為 Linux在內(nèi)存里有很多磁盤緩
沖區(qū),你要寫到硬盤上的數(shù)據(jù)先被寫到了這些內(nèi)存里,然后 Linux 就告訴你“拷貝完成”
,當你馬上又想刪除剛才寫入的某些數(shù)據(jù)時,Linux 只是把數(shù)據(jù)從內(nèi)存里移除,然后報告“
刪除完成”。在一定的間隔時間后,Linux 才把數(shù)據(jù)寫回硬盤,這樣不但高效,避免了多次
硬盤操作,而且減少了文件的不連續(xù),也就是減少了“碎片”。Windows 當然也有磁盤緩沖
,但是由于它內(nèi)存管理的低效率,它不敢把大量內(nèi)存都用來作為磁盤緩沖,因為它沒有能力
在用的時候隨時把內(nèi)存收回來。 {{分頁}}
# Linux 能干的高級的事情 Windows 都干不了
當然有很多事情是Linux/UNIX的專利了。因為 Windows 只能裝在 PC 機上,好像以前也有 Alpha 可以使用 Windows NT,但是就是沒見到有人用。PC 機的能力是很低的,像我
們編程序處理 NP-Hard 問題的人,用 Windows 的機器顯然速度不夠,而且有時一個問題算
上幾天甚至幾個星期,Windows 機器是以“死機”著稱的,我們怎么能放心?
所以幾乎所有科學計算程序,EDA 程序,高性能圖像處理程序都不是 Windows 的。他
們有時也會移植一些給 Windows,但是常常降低那些程序的能力。你比較過Windows 版本的
Mathematica 和 Linux 的有什么區(qū)別嗎?
IBM 制造的最大的并行計算機有 8000 多個處理器,Windows 不可能有能力管理這么多
處理器,它用的是什么操作系統(tǒng)?答案是 Linux。
《泰坦尼克號》電影里的三維動畫,那么細膩逼真,Windows機器能做出來嗎?不行。
那也是 Linux 機器做的。
民航總局用來訓練地情人員的虛擬現(xiàn)實訓練設備,Windows 當然無能為力。那都是商業(yè)
的 IRIX 機器。
UNIX 是最早支持 TCP/IP 網(wǎng)絡協(xié)議的系統(tǒng)。它上面有很多可以互相協(xié)作的網(wǎng)絡服務程
序,它們經(jīng)過多年的使用和修訂,已經(jīng)達到比較完善的程度。而就在1997年,微軟的比爾蓋
茨還在揚言:“Internet 是沒有前途的?!?微軟的這個“遠見卓識”大家應該都已見識,
它后來加上的網(wǎng)絡服務程序IIS漏洞之多,讓公安部都頻頻發(fā)出警報,大家也是見識了的。
其實你知道了,Windows 沒有一樣有用的事情能比 UNIX 干的更好。
# Linux 干不了的有用的事情 Windows 照樣干不了
當然 Linux 不是萬能的。它也有不能干的事情,電腦也有干不了的事情。但是Linux
干不了的事情,Windows 肯定也干不了。這些事情就是我們需要探索,需要努力的事情了。
在你探索的過程中,Linux 必定是你的好伙伴。
# UNIX 的真諦何在?
讓聰明人干任何他們想干的事情
UNIX 的一個特點就是非常高的靈活性,Xwindow 也具有這種靈活性。這種靈活性體現(xiàn)
在哪里呢?
UNIX 的程序一般都有很多參數(shù),不管你現(xiàn)在用的著用不著,總有人需要某些參數(shù)。它
們的行為很多都可以用配置文件來改變。比如 GNU bash, 通常缺省的命令行輸入方式是 Em
acs 方式,但是只要我編輯一個 .inputrc 文件,就可以把它變成vi 的輸入方式,而且我
還可以自己綁定鍵序列到某些操作。我可以用 shopt 來設置它的很多特點,比如是否進行
通配符擴展,是否可以把一個變量當作一個目錄來cd,是否可以自動糾正某些明顯的目錄名
打字錯誤 ……
UNIX 程序設計的思想是提供給用戶“機制”,而不限制用戶制定“政策”。這是一個
重要的尊重用戶的作法。
我們再來看看 Xwindow。Xwindow 是一個出色的設計,它把顯示服務器和客戶程序分開
。一個顯示上既可以顯示本機上的程序,也可以顯示別的機器上的 X 程序,而它們都遵守
你的窗口管理器的統(tǒng)一指揮,它們之間可以方便的傳送剪貼版數(shù)據(jù),各種事件 …… 比如有
時我的 XFree86 上會出現(xiàn)四個不同機器上的 XTerm,兩個不同機器上的 GVIM,…… 它們
統(tǒng)一受本機上的 FVWM 指揮。
Xwindow 程序都具有很多很多命令行參數(shù)和 resource 參數(shù)。你可以隨意的在命令行或
者 .Xdefaults 文件設置所有的顏色,字體,尺寸…… 而且如果你用 xrdb把 .Xdefaults
導入到根窗口,那么其它機器上沒有經(jīng)過配置的同樣的程序,顯示到你的機器上的時候也
會遵守同樣的外觀規(guī)定。
Xwindow 的窗口具有 Property, 也就是一些可以自己定義的共享數(shù)據(jù)(原子)。正是因
為這些 Property 的存在,使得 Xwindow 具有無比強大的生命力。X 的窗口管理器和其它
客戶程序之間并沒有統(tǒng)一的協(xié)議,但是后來出現(xiàn)了 ICCCM(客戶程序間通信規(guī)范),這個規(guī)范
就是通過 property 定義的?,F(xiàn)在又有人定義了一套“擴展的窗口協(xié)議(EWM Hints)”,使
得 Xwindow 可以具有某些 Windows 的特征,比如一個工具條程序可以告訴窗口管理器:“
這個屏幕下面被我占據(jù)了24個像素的空間,你最大化程序的時候不要越過這個界線?!?
一個強大的窗口管理程序比如 FVWM,它收到這樣的提示時,可以答應工具條程序的這
個要求,也可以不答應。一切選擇的權力在于誰?當然是用戶了!一切窗口乖乖聽話,F(xiàn)VWM
給予用戶最大的尊重。
你想想,是不是有些 Windows 程序常常彈出一個窗口要你選擇 "Yes or No"?你不點
擊它它就不下去。你覺不覺得你的程序在侵犯你的尊嚴?你是一個人!還有就是很多 Windo
ws 程序把人當成傻瓜,而它是“智能程序”。比如,有一個程序就是喜歡把你的每句話第
一個字母都變成大寫,我不說它是誰了,你遇到的時候就知道了。如果連“一句話開頭一個
字母要大寫”這么明顯的問題都需要程序幫你糾正的話,人腦還用來干什么?況且如果你故
意想要不大寫的話,那就更麻煩了,我楞是沒有從它那一大堆菜單里找到怎么關閉這個愚蠢
的選項。
# 只有符號才能完全操縱計算機
我們來說說很多初學 Linux 的用戶。雖然他們在用 Linux,但是他們打心眼兒里是覺
得 Windows 的工作方式好,他們希望 Linux 有一天能“像Windows那樣”。你說:“我鼠
標一點,我菜單一拉,…… 就可以完成我的操作?!?但是我要告訴你:“Linux 從來沒有
摹仿 Windows,將來也不會。Linux 從誕生之日起,它的工作方式就比 Windows 的先進。L
inux 屬于能勇敢面對符號的人。只有符號才能完全操縱計算機。”
看看優(yōu)秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget,tin, ..
. 沒有一個不是用配置文件來設置選項的。為什么這些程序沒有方便的菜單可以用來配置?
難道它們的設計者就那么低能,連個圖形配置界面也寫不出來?
當然不是。因為圖形界面配置方式的能力是極其有限的,而配置文件和程序語言的表達
能力卻是無限的。用圖形界面配置這些程序的話,如果你想達到配置文件的效果,你需要成
百上千的菜單,checkbox, radio button, ... 到時候你根本沒辦法找到你需要修改的地方
了!而各個程序的配置文件的語法都有很多相似之處,一般就是一些命令,設置一些變量,
參數(shù),…… 一旦用會了一個,其它的也就容易理解了。如果你用慣了 awk, sed, Perl,你
會覺得那才是真正的自動化啊。
鼠標雖然是很好的工具,但是它的表達能力是有限的。你不可能光用鼠標就讓電腦完全
明白你的意思,它畢竟只有3個按鈕??纯次业腗etaPost頁你就能體會到鼠標的這一弱點。
所以我們雖然很喜歡鼠標,但是卻不能完全依賴它。
# 各個小程序的完美配合
這就是UNIX最重要的特點了,它就是UNIX設計的思想。讓每個程序只具有一項專門的能
力,然后讓它們合作。Xwindow也繼承了這種好傳統(tǒng)。
這恐怕就是Windows和其它操作系統(tǒng)望塵莫及的地方了。UNIX 程序設計之統(tǒng)一,配合之
完美,真使我難以置信!shell, grep, find, awk, sed, make, Perl,Emacs, vi, tin, Mu
tt, ... 它們是那么的具有一致性!你一旦學會了 sed 的正則表達式,其它程序基本上都
能用了。你一旦學會了 vi 和 VIM, 你會發(fā)現(xiàn)它的操作是那么的有規(guī)律性,似乎vi的設計者
在幾十年前就已經(jīng)設計好了 VIM 在今天的完美而統(tǒng)一的操作方式!而且vi的操作還體現(xiàn)在
Mutt, tin 等很多程序中。你甚至可以把 bash 設置為 vi 的輸入方式來輸入命令行,我就
是這么做的。一個程序可以調(diào)用另外一個程序來得到數(shù)據(jù),可以把數(shù)據(jù)交給它處理后返回來
,可以在自己的窗口里“嵌入”另外一個程序。
在 Windows 和其它非 UNIX 操作系統(tǒng)中,這種合作是非常困難的。我曾經(jīng)在Windows
下使用 Perl來進行一些自動工作。但是 Windows 的文件操作,管道是如此的不穩(wěn)定,程序
之間基本不能合作。你別想在 Visual Studio 窗口里面嵌入UltraEdit 編輯器,你別想用
一個 expect 腳本來控制 telnet 到水木清華BBS,這就是為什么 helloooo 誕生在 Linux
而不是 Windows。我曾經(jīng)試圖從Windows + Exceed + SecureCRT ssh 登錄到 Sun 機器,
然后通過 ssh 的隧道(X11 tunnel)把 X 程序傳到 Exceed 上運行,但是搞了兩天都沒有成
功!而在Linux 下這個事情根本就是不用怎么配置的,OpenSSH 和 XFree86 本來就是完美
結合,只要打開 ssh 的 "forward X11" 選項就什么都搞定了。
Windows 的程序都是大而全,大而雜,所有的電子郵件程序都需要自己提供編輯器,自
己發(fā)送和收取郵件,自己顯示郵件的附件。每一個BBS程序都提供自己的Virtual Terminal,
自己的通訊代碼。每一個 IDE 都自己提供編輯器,編譯器,匯編器,調(diào)試器。人們?yōu)榱耸?
用一種新的程序,需要適應所有這些它提供的界面,而不能使用自己喜歡的編輯器的鍵綁定
,菜單組織…… 不能 DIY!
你要知道,最高級的電腦是定做的,自己想要什么什么CPU,什么主板,多少內(nèi)存,什
么硬盤,鍵盤,鼠標,顯示器都是自己選擇的。最高級的滑板,自己想要什么牌子的版面,
什么牌子的沙,什么橋,什么輪子,什么軸承,也都是自己選的。最高級的乒乓球拍,木板
,膠皮,海綿,膠水都是可以自己選擇…… 而用Windows 程序,你得到的是大雜燴,就像
你去買“品牌機”,只有那么幾種配置,而且附帶很多你不需要的軟件和服務;就像你去買
組裝好的滑板,你想要大一點的輪子和窄一點的板子,但是你沒有這種選擇余地!Windows
程序就相當于最廉價,最次的滑板。但是它卻會花你更多的錢,因為一旦一個部件壞了,
或者你不喜歡了,你不能另外找一個好的換掉它,你必需重新買全套配件!
而 UNIX 和 Xwindow 就是高檔的“組裝貨”。比如我用 Mutt 的時候,我可以用VIM
也可以用 pico 來編輯郵件,我可以用 ImageMagick 也可以用 xv 來顯示附件里的圖片,
我可以用 lynx 把 HTML 附件轉成文本嵌入窗口中,我也可以把HTML 附件交給 Mozilla 圖
形顯示。我可以讓 GnuPG 幫我把郵件進行數(shù)字簽名和加密,我也可以用其它 PGP 程序。我
想讓 Postfix 而不是 sendmail 幫我發(fā)出郵件,我想讓 fetchmail 幫我收郵件,轉發(fā)給 p
ostfix,然后被我自己寫的Perl過濾器處理…… 這一切我都可以辦到!我可以選擇我最喜
歡的專門的程序來完成專門的工作,然后把它們結合在一起,我也可以分別得到它們的好處
。
# 結論
在你腦子里的謬論,別再相信它們所謂的“新技術”,別再追趕Windows,因為追趕 Window
s =倒退。馬克思有一個思想很重要,“新生事物并不一定是在最近出現(xiàn)的?!?UNIX,Xwi
ndow, TeX 雖然都比 Windows 先出現(xiàn),但是它們才是先進生產(chǎn)力的代表。我們要清楚的認
識到什么才是真正的現(xiàn)代化,什么才是真正的自動化。
勇敢的拿起像 bash, FVWM, VIM, Emacs, Mutt, lftp …… 這樣強大的程序,不要再
埋怨“Linux 為什么不能像 Windows 那樣”,不要再浪費時間試用這樣那樣的程序,不要
再忙著升級。是你需要改變而不是 Linux 和 UNIX,Linux 現(xiàn)在就可以成為你的好朋友。你
需要認識它,了解它,信任它,才能完全的靠它來高效的工作。
linux相關文章:linux教程
c++相關文章:c++教程
評論