查看單個文章
舊 2003-06-28, 04:12 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 理解 GNU/Linux

轉自LinuxAid
原文位址:
http://www.linuxaid.com.cn/infos/3/7/372795108.shtml

理解 GNU/Linux
「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 to
understand 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

在中國,比爾蓋茨被很多人奉為神聖,「少年電腦天才」,甚至有的人提到他的名
字就做出「抱拳對天」的姿勢。很多人談到微軟的「新技術」,「高科技」 都是
眉飛色舞。各種「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 Design
Programs"。他說他在自己的 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 裡探險,你甚至可以在 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!


有一次某雜誌採訪一些出名的 Linux 內核程序員,包括 Linus 在內,沒有一個人
用 IDE,有的人用 VIM,有的用 Emacs,只有 Linus 說「GNU Emacs is evil」,
但是其實他用的是一種跟 Emacs 有同樣鍵綁定功能的 MicroEmacs。大家都是用編
輯器編輯了程式文件,然後用 make 這樣的自動工具使用 gcc 編譯器完成編譯工
作的。


我以前也編過 Windows 程序:應用程式,驅動程式。但是我沒有用 VC 的 IDE。
Linux 教育了我,我會在指令行使用 CL,我知道 CL 才是 VC 的編譯器。我可以
在 cygwin 的 Makefile 裡使用 CL。我還知道 CL 的參數都有什麼用處。但是這
些不是一個從一開頭就用 IDE 的人能很快理解到的。

我相信: IDE is evil。我有一些用 Windows 的 IDE 寫程序的朋友,他們對那套
東西已經很精通了。但是我卻驚奇的發現,他們竟然把編譯器和彙編器的概念都分
不清楚,甚至有的人連「編輯器」和「編譯器」都搞混淆了!他們只知道在一個窗
口裡輸入了程式碼,點擊一個按鈕就可以編譯程序,但是這裡面到底是怎麼工作的,
他們不知道!他們被蓋在上面的視窗擋住了視線,甚至會以為那個按鈕就是編譯器


他們對那些 IDE 的熱鍵背的滾瓜爛熟,但是我卻看到他們在一個函數一個函數的
把別人的 ANSI 風格的程式碼變成 VC 的風格。想想這件事在 VIM 裡有多麼簡單,
一瞬間就可以搞定。

為什麼 UNIX 程序員不用 IDE?明白了這個道理你就能體會到 UNIX 的設計思想了
。首先,一個 IDE 集成了編輯器,編譯器,彙編器,偵錯器,跟蹤器…… 這個編
輯器功能肯定比不上 VIM 或 Emacs,編譯器比不上 GCC,彙編器比不上 as,偵錯
器比不上 gdb, ddd, 跟蹤器比不上 strace, ltrace, truss。你得到的是一套整
合的很好的低能的程序。如果你對偵錯器的功能不滿意,你只好換用另外一套
IDE,但是這套 IDE 的熱鍵,功能表,編輯器功能,按鈕…… 跟原來那個有很大不
同。你不得不花很多時間來熟悉新的環境,而不能保持原來的某些東西。

而在 UNIX 下就不一樣了。你可以用你最喜歡的 VIM 編輯程序,你在 VIM 裡可以
使用 GNU make,make 可以使用 gcc, ld, ... 實際上 make 能幫你很多忙。make
的出錯資訊可以被 VIM 捕獲,VIM 能幫你在源程序裡定位。你如果喜歡 icc, 你
可以讓 make 用 icc 而不是 gcc。你如果覺得 gdb 跟蹤變量時比較麻煩,你可以
用 ddd 來顯示各種資料結構之間的關係。你還可以在 Emacs 裡使用 gdb,那樣就
可以同步顯示來源碼了。而且 VIM 和 Emacs 還可以編輯很多其它東西,比如郵件
,LaTeX 我的文件,HTML,配置文件…… 你不用另外找一個什麼編輯器來幹這些雜活
了。很多程序比如 Mutt, tin 都可以在內部使用 VIM,這樣就更方便了。

釋放記憶體
我在 Windows 下做過的一件最傻的事情莫過於「釋放記憶體」了。有一天我看到一
個 Windows 程序說:「這個程序可以幫你把大量記憶體釋放出來給一個很大的程序
用。」我試了一下,居然一下把我的 64M 記憶體釋放出來 48M!我高興極了。現在
想一想,那是多麼傻的事情,那麼多的記憶體留著幹什麼?不用白不用啊!一個*作
系統,居然還需要別人寫的程序來釋放記憶體,那是什麼樣的*作系統?


在 Linux 下用 free 指令,你會發現你的記憶體幾乎每時每刻都快要被用完。那是
因為 Linux 把大部分記憶體用來作為磁牒緩衝了。Linux 有比 Windows 先進的磁牒
緩衝技術。你有沒有發現你往硬碟寫資料的時候,很快就完成了?那是因為 Linux
在記憶體裡有很多磁牒緩衝區,你要寫到硬碟上的資料先被寫到了這些記憶體裡,然
後 Linux 就告訴你「拷貝完成」,當你馬上又想刪除剛才寫入的某些資料時,
Linux 只是把資料從記憶體裡移除,然後報告「刪除完成」。在一定的間隔時間後,
Linux 才把資料寫回硬碟,這樣不但高效,避免了多次硬碟*作,而且減少了文件
的不連續,也就是減少了「碎片」。Windows 當然也有磁牒緩衝,但是由於它記憶體
管理的低效率,它不敢把大量記憶體都用來作為磁牒緩衝,因為它沒有能力在用的時
候隨時把記憶體收回來。

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 必定是你的好夥伴。

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,它收到這樣的提示時,可以答應工具條程序
的這個要求,也可以不答應。一切選項的權力在於誰?當然是用戶了!一切視窗乖
乖聽話,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,
這就是為什麼 helloooo 誕生在 Linux 而不是 Windows。我曾經試圖從
Windows + Exceed + SecureCRT ssh 登錄到 Sun 機器,然後通過 ssh 的隧道
(X11 tunnel)把 X 程序傳到 Exceed 上執行,但是搞了兩天都沒有成功!而在
Linux 下這個事情根本就是不用怎麼配置的,OpenSSH 和 XFree86 本來就是完美
結合,只要開啟 ssh 的 "forward X11" 選項就什麼都搞定了。

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


結論
我寫這麼多的目的是什麼?我希望喜歡 Linux 的朋友,完全清除微軟和
Windows 灌輸在你腦子裡的謬論,別再相信它們所謂的「新技術」,別再追趕
Windows,因為追趕 Windows = 倒退。馬克思有一個思想很重要,「新生事物並
不一定是在最近出現的。」 UNIX,Xwindow, TeX 雖然都比 Windows 先出現,但
是它們才是先進生產力的代表。我們要清楚的認識到什麼才是真正的現代化,什麼
才是真正的自動化。

勇敢的拿起像 bash, FVWM, VIM, Emacs, Mutt, lftp …… 這樣強大的程序,不
要再埋怨「Linux 為什麼不能像 Windows 那樣」,不要再浪費時間試用這樣那樣
的程序,不要再忙著昇級。是你需要改變而不是 Linux 和 UNIX,Linux 現在就可
以成為你的好朋友。你需要認識它,瞭解它,信任它,才能完全的靠它來高效的工
作,省出時間來處理世界上更加值得處理的事情。

附錄: 我用來處理日常事務的 Linux 程序
這裡給出一些推薦使用的可以處理一般事情的程序。至於你的專業上要用到的科學
和工程軟體比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, ……
還有其它物理上的,化學上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本
。當然他們很多不是免費的,不要總是覺得什麼都應該免費,它們是經過很多人辛
勤勞動的產物,是可靠的程序,他們物有所值。

下面列出我常用的一些 Linux 程序。一個列表裡可能有很多,那是為了方便你來
選項,我列出了比較信得過的。但其實很多只有第一個是我真正在用的。我不喜歡
試用程序。

Shell: bash。我使用 bash 的 vi 指令行方式。
編輯器: VIM, Emacs
程序開發: GCC, make, ld, Scheme48, j2sdk, Perl, Python, Tcl
論文,幻燈工具:LaTeX, ConTeXt
繪圖工具:MetaPost。這個語言太強了,以至於我只用它了。你不熟
dia 來畫一些流程圖之類的圖片。
圖像處理:ImageMagick。其中的 import 程序可以螢幕抓圖,conve
轉換圖像格式,display 可以顯示圖片和簡單編輯(縮放,換質量,?
繪圖,簡單慮鏡)。通常我就這麼點需要。如果你要更強大的圖像工?
Gimp, 它幾乎和 Photoshop 差不多。
自動管理工具:make。我可以用make來自動編譯程序,自動編譯我的文件
圖…… 全自動,而且不會重複勞動。
加密程序:GnuPG。我的 PGP 密鑰就是它搞出來的,我用了 2048 位
打包,壓縮程序。什麼都有: tar, gzip, bzip2, zip, rar, ...
虛擬光碟程序。Linux 不需要虛擬光碟程序,直接 mount 就行了。
ftp 伺服器:proftpd, vsftpd
WWW 伺服器:apache。(我一般沒有開)
ftp 客戶程序:lftp
自動下載工具:wget
虛擬終端:rxvt, xterm, gnome-terminal, mlterm, ...
X server: XFree86
視窗管理器:FVWM。編譯加入了 libstroke。
中文輸入:XSIM。被我修改過以適應 FVWM 的需要。另外推薦你還可以用 SCIM。

email 處理:Mutt + Postfix + fetchmail
看 PDF, PS, DJVU 文件:Acrobat Reader, xpdf, Ghosts cript, 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 加密的隧道傳到我電腦上顯示。
上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).
看 Word 我的文件。請 Word 用戶把我的文件全部轉為 PDF 或 PS 再給我,我的文件裡沒有特
殊的格式就用文本文件,要不我就不看 :P
其它程序:還有很多我需要用而你不一定用得著的。比如,Doctor Scheme,
Scheme48, Scsh, ...這些程序只有 Doctor Scheme 有Windows版本。還有很多幕
後工作但是你一般不察覺的:xinetd, telnetd, sshd, crond, atd, lpd, ... 他
們都比 Windows 的對應者強的多。

Linux 的好處當然歡迎, 但是不要以為自己瞭解某些東西就說那些東西是好的.

要知道為什麼 Windows 要比 Linux 流行, 都是有其道理的. 而且 Windows 下也有 GNU 的套用, 也可以用 GCC 編譯環境 (如 Mingw , cygwin ) 編寫程序, 操作系統只是個平台罷了, 既然多數客戶都用 Windows, 那我們就有必要開發 Windows 下的套用!!!

Windows之所以流行,我想最重要的一個因素是易用性.....
電腦對大部份人來說,應該只是一個工具,為什麼要花那麼多時間去學習它呢.....
我覺得Windows在易用性方面做得越來越好.....

而Unix/Linux之類的OS, 其設計時,在易用性方面應該考慮不多, 也許主要精力是放在性能上了吧?

前幾天裝了個rh9, 發現要改個設定, 真是無從下手......雖然有GUI,但很多東西找不到在哪裡設定......例如我覺得Mouse移動的距離太長,想設定短一些,找了半天,只好作罷


在rh9上裝了個Kylix, 覺得極不穩定, 有好幾次進去後,功能表都看不到......

總之, 如果Linux在易用性方面有長足進展的話, 還有可能在桌面上與Windows競爭一下, 否則,說不定伺服器上都要輸

說到成本, 更多人考慮的是總擁有成本, 不僅只是首期的採購費用,Linux雖然看似免費, 但後期的費用應該不低吧.....

雖然我感情上不喜歡MS, 但理智上知道應該開發Windows的程序
Windows 能做的那些沒用的事情 Linux 永遠做不好
電腦遊戲
有些人說 Linux 下不能玩 Windows 下所能得到的所有遊戲。的確,Linux 下雖然
也有少量的遊戲,比如 Quake。但是它沒有 Counter Strike, 沒有 Star Craft,
……

並不是說電腦遊戲不該玩,但是應該適可而止。電腦是用來處理事務,說明 你學習
,解決問題的工具,而不是一個玩具!整天沉迷於電腦遊戲中,而不出去感覺外面
的世界,你會變得越來越冷酷,越來越缺乏人情味。你與真實的世界越來越遠。



偏激
誰說的電腦就只能作事務處理了?誰說只能幫人學習了?
按照"解決問題的工具"的解釋..在windwos上玩遊戲..解決了我的娛樂問題...
電腦最終也是就是工具..到最後也就是跟電視機,洗衣機一樣的工具..
對於專業人員.習慣了..無所謂,可能覺得指令行,快捷鍵更方便,但是於一個初級用戶,沒必要為了錄入列印一篇我的文件,他要記一串的指令行,快捷鍵.雙按開啟word...輸入..看看上面的幾個按鈕,就知道如何列印...
電腦大部分時候面對的還是初級用戶.最終的電腦,
並不是每個人都要知道電視機的自動搜台的原理是什麼,但是90%以上的人都會用遙控器
並不是每個人都要知道洗衣機所謂的模糊技術是什麼,只在乎它是否能洗乾淨衣服,大部分人也還都會用洗衣機..
電腦,僅僅是工具...而工具最終的目的是給人使用,而不是只給一幫"高人"擺酷...工具的最終目的是給人方便..

linux/unix的確不錯
但是windows的存在,是肯定尤其合理性,因為他的方便



unix/Linux是好東西..
windows的存在也有他的合理性

IBM看上Linux決不是因為什麼開放,IBM是跟微軟一樣的一台商業機器,他真正看上的是Linux是在市場上Windows的有力的競爭者,有可能通過Linux擊敗微軟。

樓主轉的這篇文章的作者真是愚的要命,如果今天電腦技術還是大學裡電腦系玩弄的高深伎倆,他說的沒錯,Windows對他們沒有任何意義,但今天使用電腦的人都是普通勞苦大眾,今天Windows下的程序員做的程序都是給勞苦大眾們解決問題的,讓這些勞苦大眾去乞求那些電腦高手們幫他們解決點實際問題是何其難也!

自從微軟問世,自從Bill發表了那篇著名的公開信,自從Windows問世,實際上一個新的時代已經來臨,就像我今天也很難理解那些哈韓哈日的小朋友,但我有辦法逆轉時代潮流嗎?

反過來問一句,這些年來Linux做的紅紅火火,又何嘗不是在易用性,在GUI上作足文章,否則你讓一個普通的用戶如何接受?
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
回覆時引用此帖