狼愛上貍

          我胡漢三又回來了

          什么是Windows能干而Linux干不了的事情

          有個(gè)朋友看我半年沒有用 Windows,有時(shí)就會問我:"你只用 Linux,有沒有發(fā)現(xiàn)有些 Windows 能處理的事情 Linux 干不了?"

          我回答說:"Windows 能干而 Linux 干不了的事情,那就是不需要干的事情。"

          # Windows 能做的有益的事情 Linux 都能做

          Windows   下的某些功能確實(shí)是我們需要的,那么 Linux 的開發(fā)者們和用戶也需要這種功能,他們就會去實(shí)現(xiàn)這種功能,而且比 Windows 的方式好得多。由于大多數(shù)科學(xué)家,工程師用的都是 Linux 或者某種商業(yè) UNIX, 所以幾乎所有商業(yè)的科學(xué)工程程序,比如 Matlab,  Mathematica, AutoCAD, Candence的,Synopsys的,Avant! 的......全都是先有 UNIX 的版本 (包括Linux),然后再考慮移植給Windows,甚至根本不移植給 Windows,因?yàn)?Windows 的機(jī)器一般沒有足夠的能力運(yùn)行這樣的程序。你不要以為只有 Windows 才有 PSpice, UNIX 的 HSpice 要好得多,而且可以運(yùn)行在大型主機(jī)上。當(dāng)然它們不是免費(fèi)的,但是它們值那個(gè)價(jià)錢。

          但是 Windows 下有些東西在 Linux 下沒有很相似的,或者你找到很多類似的,但是它們每一個(gè)比起 Windows 的那個(gè)程序都要差很多,那么原因有兩種可能性:

          有 一個(gè)完全類似的程序,但是由于它乍一看不漂亮,被你忽略了。而其它程序雖然看起來很漂亮,但是它們是一些初學(xué)編程的人寫的。現(xiàn)在由于 Gtk+, Qt  的誕生,Linux 下開發(fā)圖形界面程序極其簡單,很多初中生甚至小學(xué)生都可以隨手編出一些漂亮不中用的程序。如果你整天尋找這樣的程序挑來挑去,永遠(yuǎn)也找不到你滿意的。

          我 曾經(jīng)也犯過這樣的錯(cuò)誤,優(yōu)秀的 FVWM, lftp, Mutt, wget 都被我忽略過!當(dāng)我找回它們的時(shí)候,我是那么的羞愧不已,它們現(xiàn)在都是我的朋友 用這些程序你可以改變它們的一切,我第一次看到 FVWM 覺得它只不過是一個(gè)有很厚很難看邊框的東西。可是現(xiàn)在,我的同學(xué)看到 FVWM 都說:"哇!真漂亮。"

          有另一種完全不同的方式可以達(dá)到相同的目的,甚至更好。

          很 多人很關(guān)心 Open Office, Star Office, AbiWord, ... 他們多么盼望有一天某一個(gè) Linux 程序能夠完全兼容的打開一個(gè)復(fù)雜的 doc 文檔。但是你永遠(yuǎn)也不可能有那一天。為什么呢?因?yàn)槲④洖榱苏加惺袌觯囟ú粫屍渌到y(tǒng)的程序能夠完全兼容它的文檔格式!它一定會不斷變化 doc 文檔的內(nèi)部結(jié)構(gòu),隱藏一些秘密,讓其它公司的程序打開 doc 文檔時(shí)總是有某種問題,從而你必需購買 Microsoft Office 和 Windows。

          你應(yīng)該想一下,那么多的高智商的大學(xué)教授,科學(xué)家,學(xué)生,他們用的都是 Linux或者其它類型的 UNIX,他們沒有 Word 可用,怎么處理文檔呢?這么多年沒有一個(gè)像 Open Office 的程序出現(xiàn),難道大家沒有辦法寫文檔嗎?

          顯 然不是這樣。你看看那些高水平的學(xué)術(shù)雜志,論文,那些大學(xué)教授的網(wǎng)頁,那些漂亮的P DF幻燈片,它們是什么做的?原來 UNIX 用戶早就有非常方便的  troff,LaTeX, SGML 等東西可以處理文檔,而且它們比起 Word 都要高明的多。Word 顯然被這些大拿忽略了,以至于很久以來沒有人想在 Linux 下開發(fā)一個(gè)類似 Word的程序,除非某些公司想搶微軟的飯碗。

          很多人留著 Windows 在硬盤上的原因無非是為了用 Word 和 PowerPoint。你待會兒可以看看我的TeX網(wǎng)頁,你就會知道為什么我可以完全離開 Windows.
          # Windows 能做的那些沒用的事情 Linux 永遠(yuǎn)做不好

          電腦游戲

          有些人說 Linux 下不能玩 Windows 下所能得到的所有游戲。的確,Linux 下雖然也有少量的游戲,比如 Quake。但是它沒有 Counter Strike, 沒有 Star Craft,......

          并不是說電腦游戲不該玩,但是應(yīng)該適可而止。電腦是用來處理事務(wù),幫助你學(xué)習(xí),解決問題的工具,而不是一個(gè)玩具!整天沉迷于電腦游戲中,而不出去感覺外面的世界,你會變得越來越冷酷,越來越缺乏人情味。你與真實(shí)的世界越來越遠(yuǎn)。

          你 可以在 CS 里殺人,你可以在 Tomb Raider 里探險(xiǎn),你甚至可以在 TonyHawk's Pro Skaters 里滑板......  但是 It's not real!你雖然有很高的"反恐技巧",但是遇到歹徒的時(shí)候,你是那么的怯懦;你雖然控制 Laura 伸手敏捷,但是你打籃球的時(shí)候怎么總是被人斷球?你雖然可以輕易的在 THPS 里作出一個(gè) "360 kickflip to hangten grind to fakie",但是你踩在自己的滑板上的時(shí)候還不會 ollie!

          說回來,如果你偶爾玩一下電腦游戲未嘗不可。但是世 界上有遠(yuǎn)比 Windows +PC 更好的游戲方式。Sony 的 PlayStation2,  SEGA 的 DreamCast, Nintendo 的N64,Namco 的街機(jī).. ....每一個(gè)都比 Windows 游戲精彩,每一個(gè)都有如此高的3D性能,以至于 Pentium4, Itanium + GForce4 都無法與它們比美!

          Linux 的用戶們都是關(guān)心解決世界的關(guān)鍵問題的份子,他們哪里有時(shí)間用自己的機(jī)器來玩游戲啊?他們每天用Linux高效的做完自己的工作就到陽光下享受自然去了。 要玩游戲也是玩一些類似推箱子,貪吃蛇之類的智力小游戲。所以,你知道為什么 Linux 幾乎沒有游戲了吧?

          "整理硬盤,優(yōu)化系統(tǒng)"

          這是一個(gè)非常有意思的話題,僅次于有關(guān)"病毒"的話題。相信很多 Windows 用戶都有整理硬盤的經(jīng)歷。在很多 Windows 用戶眼里,"硬盤用久了,會出現(xiàn)碎片,速度會減慢,需要一個(gè)程序來整理,整理硬盤的時(shí)候不要做其它工作",這好像是天經(jīng)地義的事情。

          我也曾經(jīng)津津有味的看著 Norton Defrag 一點(diǎn)一點(diǎn)的把我的硬盤排序,調(diào)整,用圖形的方式顯示出來,然后報(bào)告:"100% 沒有碎片。你的硬盤現(xiàn)在已經(jīng)達(dá)到最佳狀態(tài)。" 我現(xiàn)在才發(fā)覺我那時(shí)是多么的幼稚。

          Linux   和 UNIX 用戶似乎從來沒有"整理硬盤"這種說法呢?你覺得很奇怪嗎?如果你覺得很奇怪,那說明你的思想在某種程度上被微軟的垃圾程序禁錮了。你需要明白,UNIX 的大型主機(jī)很多必須是一天24小時(shí),一年365又1/4天不停運(yùn)轉(zhuǎn)的,要是每個(gè)星期都要整理一次硬盤,在整理的時(shí)候幾乎不能干任何事情,那是絕對行不通 的!

          Linux 機(jī)器根本不用整理硬盤,這就是為什么沒有看到過 Linux 用戶整理硬盤。Linux 的文件系統(tǒng)是比  Windows 的 FAT, FAT32, NTFS 高明得多的文件系統(tǒng),它們不但可以對文件設(shè)置權(quán)限,實(shí)施完全的保護(hù),而且可以"越用越整齊", "越用碎片越少"!你應(yīng)該把文件大部分放在 Linux 的分區(qū),而不是 Windows 分區(qū),因?yàn)樗?Windows 分區(qū)可靠得多。

          還有更滑稽的事情就是有很多"Norton System Doctor","Windows 化大師","超級兔仔注冊表魔法" 之類的程序存在,而且價(jià)格昂貴。似乎一個(gè)操作系統(tǒng)本來應(yīng)該有很多問題,需要?jiǎng)e的廠商做程序來"優(yōu)化"它,而且為了得到優(yōu)化,你需要付錢!這些問題 Linux 根本就沒有,所以不需要什么優(yōu)化。Linux 內(nèi)核本身就是高度優(yōu)化的。

          IDE

          有些人在抱怨為什么 Linux 沒有一個(gè)良好的  IDE 開發(fā)環(huán)境。Linux 現(xiàn)在已經(jīng)有一些 IDE 了,但是總是有很多問題。你是不是正在尋找,正在期望 Linux 某一天可以有一個(gè)VC 那樣的開發(fā)環(huán)境?你有沒有發(fā)現(xiàn)你正在進(jìn)入微軟給你設(shè)下的怪圈?你為什么一定要用 IDE ?你說:"IDE 開發(fā)迅速,調(diào)試方便,適合大型程序...... " 那說明微軟的程序在你腦子里已經(jīng)比較根深蒂固,你需要好好清醒一下了,看看我來告訴你。

          高明的 UNIX 程序員不用 IDE,IDE 從來就是給初級 Windows 程序員用的。

          你 看看大型的 UNIX 程序,包括 Linux 內(nèi)核,各種網(wǎng)絡(luò)服務(wù)程序,Xwindow 程序在內(nèi),哪一個(gè)是 IDE 搞出來的?我們實(shí)驗(yàn)室的  EDA 程序也沒有一個(gè)是 IDE 弄的,我還知道 Candence, Synopsys,Mentor 的高性能的圖形界面 EDA 程序也都不是  IDE 寫的。你信不信,微軟的人在寫 Windows 本身的時(shí)候也根本不用 IDE!

          有 一次某雜志采訪一些出名的 Linux 內(nèi)核程序員,包括 Linus 在內(nèi),沒有一個(gè)人用 IDE ,有的人用 VIM,有的用 Emacs,只有 Linus 說 "GNU Emacs is evil",但是其實(shí)他用的是一種跟 Emacs 有同樣鍵綁定功能的 MicroEmacs。大家都是用編輯器編輯了程序文件,然后用 make 這樣的自動工具調(diào)用 gcc 編譯器完成編譯工作的。

          我以前 也編過 Windows 程序:應(yīng)用程序,驅(qū)動程序。但是我沒有用 VC 的 IDE。Linux 教育了我,我會在命令行調(diào)用 CL,我知道 CL 才是 VC 的編譯器。我可以在 cygwin 的  Makefile 里使用 CL。我還知道 CL 的參數(shù)都有什么用處。但是這些不是一個(gè)從一開頭就用 IDE 的人能很快理解到的。

          我相信: IDE is evil。我有一些用 Windows 的 IDE 寫程序的朋友,他們對那套東西已經(jīng)很精通了。但是我卻驚奇的發(fā)現(xiàn),他們竟然把編譯器和匯編器的概念都分不清楚,甚至有的人連"編輯器"和"編譯器"都搞混 淆了!他們只知道在一個(gè)窗口里輸入了代碼,點(diǎn)擊一個(gè)按鈕就可以編譯程序,但是這里面到底是怎么工作的,他們不知道!他們被蓋在上面的窗口擋住了視線,甚至 會以為那個(gè)按鈕就是編譯器!

          他們對那些 IDE 的熱鍵背的滾瓜爛熟,但是我卻看到他們在一個(gè)函數(shù)一個(gè)函數(shù)的把別人的 ANSI 風(fēng)格的代碼變成 VC 的風(fēng)格。想想這件事在 VIM 里有多么簡單,一瞬間就可以搞定。

          為 什么 UNIX 程序員不用 IDE?明白了這個(gè)道理你就能體會到 UNIX 的設(shè)計(jì)思想了。首先,一個(gè) IDE 集成了編輯器,編譯器,匯編器,調(diào)試器,跟蹤器...... 這個(gè)編輯器功能肯定比不上 VIM 或 Emacs,編譯器比不上 GCC,匯編器比不上 as,調(diào)試器比不上 gdb,  ddd, 跟蹤器比不上 strace, ltrace, truss。你得到的是一套整合的很好的低能的程序。如果你對調(diào)試器的功能不滿意,你只好換用另外一套IDE,但是這套 IDE 的熱鍵,菜單,編輯器功能,按鈕...... 跟原來那個(gè)有很大不同。你不得不花很多時(shí)間來熟悉新的環(huán)境,而不能保持原來的某些東西。

          而 在 UNIX 下就不一樣了。你可以用你最喜歡的 VIM 編輯程序,你在 VIM 里可以調(diào)用  GNU make,make 可以調(diào)用 gcc, ld, ... 實(shí)際上 make 能幫你很多忙。make的出錯(cuò)信息可以被 VIM 捕獲, VIM 能幫你在源程序里定位。你如果喜歡 icc, 你可以讓 make 用 icc 而不是 gcc。你如果覺得 gdb 跟蹤變量時(shí)比較麻煩,你可以用 ddd 來顯示各種數(shù)據(jù)結(jié)構(gòu)之間的關(guān)系。你還可以在 Emacs 里調(diào)用 gdb,那樣就可以同步顯示源代碼了。而且 VIM 和 Emacs 還可以編輯很多其它東西,比如信件,LaTeX 文檔,HTML,配置文件...... 你不用另外找一個(gè)什么編輯器來干這些雜活了。很多程序比如  Mutt, tin 都可以在內(nèi)部使用 VIM,這樣就更方便了。

          釋放內(nèi)存

          我 在 Windows 下做過的一件最傻的事情莫過于"釋放內(nèi)存"了。有一天我看到一個(gè) Windows 程序說:"這個(gè)程序可以幫你把大量內(nèi)存釋放出來給一個(gè)很大的程序用。"我試了一下,居然一下把我的 64M 內(nèi)存釋放出來 48M!我高興極了。現(xiàn)在想一想,那是多么傻的事情,那么多的內(nèi)存留著干什么?不用白不用啊!一操作系統(tǒng),居然還需要?jiǎng)e人寫的程序來釋放內(nèi)存,那是什么樣 的操作系統(tǒng)?

          在 Linux 下用 free 命令,你會發(fā)現(xiàn)你的內(nèi)存幾乎每時(shí)每刻都快要被用完。那是因?yàn)?Linux 把大部分內(nèi)存用來作為磁盤緩沖了。Linux 有比 Windows 先進(jìn)的磁盤緩沖技術(shù)。你有沒有發(fā)現(xiàn)你往硬盤寫數(shù)據(jù)的時(shí)候,很快就完成了?那是因?yàn)? Linux在內(nèi)存里有很多磁盤緩沖區(qū),你要寫到硬盤上的數(shù)據(jù)先被寫到了這些內(nèi)存里,然后 Linux 就告訴你"拷貝完成" ,當(dāng)你馬上又想刪除剛才寫入的某些數(shù)據(jù)時(shí),Linux 只是把數(shù)據(jù)從內(nèi)存里移除,然后報(bào)告" 刪除完成"。在一定的間隔時(shí)間后,Linux 才把數(shù)據(jù)寫回硬盤,這樣不但高效,避免了多次硬盤操作,而且減少了文件的不連續(xù),也就是減少了"碎片"。Windows 當(dāng)然也有磁盤緩沖,但是由于它內(nèi)存管理的低效率,它不敢把大量內(nèi)存都用來作為磁盤緩沖,因?yàn)樗鼪]有能力在用的時(shí)候隨時(shí)把內(nèi)存收回來。

          # Linux 能干的高級的事情 Windows 都干不了

          當(dāng) 然有很多事情是Linux/UNIX的專利了。因?yàn)?Windows 只能裝在 PC 機(jī)上,好像以前也有 Alpha 可以使用 Windows NT,但是就是沒見到有人用。PC 機(jī)的能力是很低的,像我們編程序處理 NP-Hard 問題的人,用 Windows 的機(jī)器顯然速度不夠,而且有時(shí)一個(gè)問題算上幾天甚至幾個(gè)星期,Windows 機(jī)器是以"死機(jī)"著稱的,我們怎么能放心?

          所以幾乎所有科學(xué)計(jì)算程序,EDA 程序,高性能圖像處理程序都不是 Windows 的。他們有時(shí)也會移植一些給 Windows,但是常常降低那些程序的能力。你比較過Windows 版本的 Mathematica 和 Linux 的有什么區(qū)別嗎?

          IBM 制造的最大的并行計(jì)算機(jī)有 8000 多個(gè)處理器,Windows 不可能有能力管理這么多處理器,它用的是什么操作系統(tǒng)?答案是 Linux。

          《泰坦尼克號》電影里的三維動畫,那么細(xì)膩逼真,Windows機(jī)器能做出來嗎?不行。那也是 Linux 機(jī)器做的。

          民航總局用來訓(xùn)練地情人員的虛擬現(xiàn)實(shí)訓(xùn)練設(shè)備,Windows 當(dāng)然無能為力。那都是商業(yè)的 IRIX 機(jī)器。

          UNIX   是最早支持 TCP/IP 網(wǎng)絡(luò)協(xié)議的系統(tǒng)。它上面有很多可以互相協(xié)作的網(wǎng)絡(luò)服務(wù)程序,它們經(jīng)過多年的使用和修訂,已經(jīng)達(dá)到比較完善的程度。而就在 1997年,微軟的比爾蓋茨還在揚(yáng)言:"Internet 是沒有前途的。" 微軟的這個(gè)"遠(yuǎn)見卓識"大家應(yīng)該都已見識,它后來加上的網(wǎng)絡(luò)服務(wù)程序IIS 漏洞之多,讓公安部都頻頻發(fā)出警報(bào),大家也是見識了的。

          其實(shí)你知道了,Windows 沒有一樣有用的事情能比 UNIX 干的更好。

          # Linux 干不了的有用的事情 Windows 照樣干不了

          當(dāng)然 Linux 不是萬能的。它也有不能干的事情,電腦也有干不了的事情。但是Linux 干不了的事情,Windows 肯定也干不了。這些事情就是我們需要探索,需要努力的事情了。在你探索的過程中,Linux 必定是你的好伙伴。

          # UNIX 的真諦何在?

          讓聰明人干任何他們想干的事情

          UNIX 的一個(gè)特點(diǎn)就是非常高的靈活性,Xwindow 也具有這種靈活性。這種靈活性體現(xiàn)在哪里呢?

          UNIX   的程序一般都有很多參數(shù),不管你現(xiàn)在用的著用不著,總有人需要某些參數(shù)。它們的行為很多都可以用配置文件來改變。比如 GNU bash, 通常缺省的命令行輸入方式是 Emacs 方式,但是只要我編輯一個(gè) .inputrc 文件,就可以把它變成vi 的輸入方式,而且我還可以自己綁定鍵序列到某些操作。我可以用 shopt 來設(shè)置它的很多特點(diǎn),比如是否進(jìn)行通配符擴(kuò)展,是否可以把一個(gè)變量當(dāng)作一個(gè)目錄來cd,是否可以自動糾正某些明顯的目錄名打字錯(cuò)誤 ......

          UNIX 程序設(shè)計(jì)的思想是提供給用戶"機(jī)制",而不限制用戶制定"政策"。這是一個(gè)重要的尊重用戶的作法。

          我 們再來看看 Xwindow。Xwindow 是一個(gè)出色的設(shè)計(jì),它把顯示服務(wù)器和客戶程序分開。一個(gè)顯示上既可以顯示本機(jī)上的程序,也可以顯示別的機(jī)器上的 X 程序,而它們都遵守你的窗口管理器的統(tǒng)一指揮,它們之間可以方便的傳送剪貼版數(shù)據(jù),各種事件 ...... 比如有時(shí)我的 XFree86 上會出現(xiàn)四個(gè)不同機(jī)器上的 XTerm,兩個(gè)不同機(jī)器上的 GVIM,...... 它們統(tǒng)一受本機(jī)上的 FVWM 指揮。

          Xwindow   程序都具有很多很多命令行參數(shù)和 resource 參數(shù)。你可以隨意的在命令行或者 .Xdefaults 文件設(shè)置所有的顏色,字體,尺寸...... 而且如果你用 xrdb把 .Xdefaults 導(dǎo)入到根窗口,那么其它機(jī)器上沒有經(jīng)過配置的同樣的程序,顯示到你的機(jī)器上的時(shí)候也會遵守同樣的外觀規(guī)定。

          Xwindow 的窗口具有 Property, 也就是一些可以自己定義的共享數(shù)據(jù)(原子)。正是因?yàn)檫@些  Property 的存在,使得 Xwindow 具有無比強(qiáng)大的生命力。X 的窗口管理器和其它客戶程序之間并沒有統(tǒng)一的協(xié)議,但是后來出現(xiàn)了  ICCCM(客戶程序間通信規(guī)范),這個(gè)規(guī)范就是通過 property 定義的。現(xiàn)在又有人定義了一套"擴(kuò)展的窗口協(xié)議(EWM Hints)",使得 Xwindow 可以具有某些 Windows 的特征,比如一個(gè)工具條程序可以告訴窗口管理器:"這個(gè)屏幕下面被我占據(jù)了24個(gè)像素的空間,你最大化程序的時(shí)候不要越過這個(gè)界線。"

          一個(gè)強(qiáng)大的窗口管理程序比如 FVWM,它收到這樣的提示時(shí),可以答應(yīng)工具條程序的這個(gè)要求,也可以不答應(yīng)。一切選擇的權(quán)力在于誰?當(dāng)然是用戶了!一切窗口乖乖聽話,F(xiàn)VWM 給予戶最大的尊重。

          你 想想,是不是有些 Windows 程序常常彈出一個(gè)窗口要你選擇 "Yes or No"?你不點(diǎn)擊它它就不下去。你覺不覺得你的程序在侵犯你的尊嚴(yán)?你是一個(gè)人!還有就是很多 Windows 程序把人當(dāng)成傻瓜,而它是"智能程序"。比如,有一個(gè)程序就是喜歡把你的每句話第一個(gè)字母都變成大寫,我不說它是誰了,你遇到的時(shí)候就知道了。如果連"一 句話開頭一個(gè)字母要大寫"這么明顯的問題都需要程序幫你糾正的話,人腦還用來干什么?況且如果你故意想要不大寫的話,那就更麻煩了,我楞是沒有從它那一大 堆菜單里找到怎么關(guān)閉這個(gè)愚蠢的選項(xiàng)。

          # 只有符號才能完全操縱計(jì)算機(jī)

          我 們來說說很多初學(xué) Linux 的用戶。雖然他們在用 Linux,但是他們打心眼兒里是覺得 Windows 的工作方式好,他們希望 Linux 有一天能"像Windows那樣"。你說:" 我鼠標(biāo)一點(diǎn),我菜單一拉,...... 就可以完成我的操作。" 但是我要告訴你:"Linux 從來沒有摹仿 Windows,將來也不會。 Linux 從誕生之日起,它的工作方式就比 Windows 的先進(jìn)。Linux 屬于能勇敢面對符號的人。只有符號才能完全操縱計(jì)算機(jī)。"

          看看優(yōu)秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget,tin, ... 沒有一個(gè)不是用配置文件來設(shè)置選項(xiàng)的。為什么這些程序沒有方便的菜單可以用來配置?難道它們的設(shè)計(jì)者就那么低能,連個(gè)圖形配置界面也寫不出來?

          當(dāng) 然不是。因?yàn)閳D形界面配置方式的能力是極其有限的,而配置文件和程序語言的表達(dá)能力卻是無限的。用圖形界面配置這些程序的話,如果你想達(dá)到配置文件的效 果,你需要成百上千的菜單,checkbox, radio button, ... 到時(shí)候你根本沒辦法找到你需要修改的地方了!而各個(gè)程序的配置文件的語法都有很多相似之處,一般就是一些命令,設(shè)置一些變量,參數(shù),...... 一旦用會了一個(gè),其它的也就容易理解了。如果你用慣了 awk,  sed, Perl,你會覺得那才是真正的自動化啊。

          鼠標(biāo)雖然是很好的工具,但是它的表達(dá)能力是有限的。你不可能光用鼠標(biāo)就讓電腦完全明白你的意思,它畢竟只有3個(gè)按鈕。看看我的MetaPost頁你就能體會到鼠標(biāo)的這一弱點(diǎn)。所以我們雖然很喜歡鼠標(biāo),但是卻不能完全依賴它。

          # 各個(gè)小程序的完美配合

          這就是UNIX最重要的特點(diǎn)了,它就是UNIX設(shè)計(jì)的思想。讓每個(gè)程序只具有一項(xiàng)專門的能力,然后讓它們合作。Xwindow也繼承了這種好傳統(tǒng)。

          這 恐怕就是Windows和其它操作系統(tǒng)望塵莫及的地方了。UNIX 程序設(shè)計(jì)之統(tǒng)一,配合之完美,真使我難以置信!shell, grep, find,  awk, sed, make, Perl,Emacs, vi, tin, Mutt, ... 它們是那么的具有一致性!你一旦學(xué)會了 sed 的正則表達(dá)式,其它程序基本上都能用了。你一旦學(xué)會了 vi 和 VIM, 你會發(fā)現(xiàn)它的操作是那么的有規(guī)律性,似乎vi的設(shè)計(jì)者在幾十年前就已經(jīng)設(shè)計(jì)好了  VIM 在今天的完美而統(tǒng)一的操作方式!而且vi的操作還體現(xiàn)在 Mutt, tin 等很多程序中。你甚至可以把 bash 設(shè)置為 vi 的輸入方式來輸入命令行,我就是這么做的。一個(gè)程序可以調(diào)用另外一個(gè)程序來得到數(shù)據(jù),可以把數(shù)據(jù)交給它處理后返回來,可以在自己的窗口里"嵌入"另外一個(gè) 程序。

          在 Windows  和其它非 UNIX 操作系統(tǒng)中,這種合作是非常困難的。我曾經(jīng)在Windows 下使用 Perl來進(jìn)行一些自動工作。但是 Windows 的文件操作,管道是如此的不穩(wěn)定,程序之間基本不能合作。你別想在 Visual Studio 窗口里面嵌入U(xiǎn)ltraEdit 編輯器,你別想用一個(gè)  expect 腳本來控制 telnet 到水木清華BBS,這就是為什么 helloooo 誕生在 Linux 而不是 Windows。我曾經(jīng)試圖從Windows + Exceed + SecureCRT ssh 登錄到 Sun 機(jī)器,然后通過 ssh 的隧道(X11 tunnel)把  X 程序傳到 Exceed 上運(yùn)行,但是搞了兩天都沒有成功!而在Linux 下這個(gè)事情根本就是不用怎么配置的,OpenSSH 和  XFree86 本來就是完美結(jié)合,只要打開 ssh 的 "forward X11" 選項(xiàng)就什么都搞定了。

          Windows 的程序都是大而全,大而雜,所有的電子郵件程序都需要自己提供編輯器,自己發(fā)送和收取郵件,自己顯示郵件的附件。每一個(gè)BBS程序都提供自己的   Virtual Terminal, 自己的通訊代碼。每一個(gè) IDE 都自己提供編輯器,編譯器,匯編器,調(diào)試器。人們?yōu)榱耸褂靡环N新的程序,需要適應(yīng)所有這些它提供的界面,而不能使用自己喜歡的編輯器的鍵綁定,菜單組 織...... 不能 DIY!

          你要知道,最高級的電腦是定做的,自己想要什么什么CPU,什么主板,多少內(nèi)存,什么硬盤,鍵盤,鼠標(biāo), 顯示器都是自己選擇的。最高級的滑板,自己想要什么牌子的版面,什么牌子的沙,什么橋,什么輪子,什么軸承,也都是自己選的。最高級的乒乓球拍,木板,膠 皮,海綿,膠水都是可以自己選擇...... 而用Windows 程序,你得到的是大雜燴,就像你去買"品牌機(jī)",只有那么幾種配置,而且附帶很多你不需要的軟件和服務(wù);就像你去買組裝好的滑板,你想要大一點(diǎn)的輪子和窄 一點(diǎn)的板子,但是你沒有這種選擇余地!Windo ws 程序就相當(dāng)于最廉價(jià),最次的滑板。但是它卻會花你更多的錢,因?yàn)橐坏┮粋€(gè)部件壞了,或者你不喜歡了,你不能另外找一個(gè)好的換掉它,你必需重新買全套配件!

          而 UNIX 和 Xwindow 就是高檔的"組裝貨"。比如我用 Mutt 的時(shí)候,我可以用VIM 也可以用 pico 來編輯郵件,我可以用 ImageMagick 也可以用 xv 來顯示附件里的圖片,我可以用 lynx 把  HTML 附件轉(zhuǎn)成文本嵌入窗口中,我也可以把HTML 附件交給 Mozilla 圖形顯示。我可以讓 GnuPG 幫我把郵件進(jìn)行數(shù)字簽名和加密,我也可以用其它 PGP 程序。我想讓 Postfix 而不是 sendmail 幫我發(fā)出郵件,我想讓 fetchmail 幫我收郵件,轉(zhuǎn)發(fā)給  postfix,然后被我自己寫的Perl過濾器處理...... 這一切我都可以辦到!我可以選擇我最喜歡的專門的程序來完成專門的工作,然后把它們結(jié)合在一起,我也可以分別得到它們的好處。

           


          # 結(jié)論

          我 寫這么多的目的是什么?我希望喜歡 Linux 的朋友,完全清除微軟和Windows 灌輸在你腦子里的謬論,別再相信它們所謂的"新技術(shù)",別再追趕Windows,因?yàn)樽汾s Windows =倒退。馬克思有一個(gè)思想很重要,"新生事物并不一定是在最近出現(xiàn)的。" UNIX,Xwindow, TeX 雖然都比 Windows 先出現(xiàn),但是它們才是先進(jìn)生產(chǎn)力的代表。我們要清楚的認(rèn)識到什么才是真正的現(xiàn)代化,什么才是真正的自動化。

          勇敢的拿起像 bash, FVWM, VIM, Emacs,  Mutt, lftp ...... 這樣強(qiáng)大的程序,不要再埋怨"Linux 為什么不能像 Windows 那樣",不要再浪費(fèi)時(shí)間試用這樣那樣的程序,不要再忙著升級。是你需要改變而不是 Linux 和 UNIX,Linux 現(xiàn)在就可以成為你的好朋友。你需要認(rèn)識它,了解它,信任它,才能完全的靠它來高效的工作,省出時(shí)間來處理世界上更加值得處理的事情。

          來自:http://inus.bokee.com/6300579.html

          posted on 2007-07-05 06:30 狼愛上貍 閱讀(227) 評論(0)  編輯  收藏 所屬分類: LINUX

          主站蜘蛛池模板: 老河口市| 邯郸市| 科技| 敦化市| 韶关市| 剑川县| 阿拉尔市| 福海县| 建德市| 黄平县| 赤城县| 沂水县| 定安县| 禄丰县| 冕宁县| 达尔| 甘肃省| 楚雄市| 普定县| 嘉鱼县| 登封市| 怀来县| 南投市| 河西区| 琼结县| 余江县| 马公市| 云阳县| 兴城市| 阿坝县| 永吉县| 平远县| 阜新| 温州市| 大冶市| 开远市| 阿克陶县| 五大连池市| 青冈县| 丽水市| 安阳市|