類Unix操作系統(tǒng)
Unix
Linux
BSD
GNU
Linux 和 BSD
Linux 和 BSD 都是免費(fèi)的艾少,開源的,類 Unix 系統(tǒng).他們甚至使用很多相同的軟件.他們看上去簡直就像是一個(gè)操作系統(tǒng)猛拴,那么,它們有什么不同嗎?
其實(shí)再菊,兩者之間的不同轧坎,遠(yuǎn)遠(yuǎn)超出了我們下面提到的這些宏邮,尤其是在構(gòu)建完整操作系統(tǒng)和許可授權(quán)的哲學(xué)思想上,更是相差甚遠(yuǎn).許多人所稱的“Linux”實(shí)際上不是 Linux.Linux 從技術(shù)上說只是 Linux 內(nèi)核缸血,典型的 Linux 發(fā)行版則包括了 Linux 內(nèi)核和許多軟件.這是為什么 Linux 有時(shí)被稱為 GNU/Linux.事實(shí)上蜜氨,許多在 Linux 上使用的軟件同樣也在 BSD 上使用.Linux 和 BSD 都是類 UNIX 操作系統(tǒng).我們可以通過閱讀類 UNIX 操作系統(tǒng)歷史發(fā)現(xiàn) Linux 和 BSD 有不同的譜系.Linux 是由 Linus Torvalds 在芬蘭上大學(xué)的時(shí)候開發(fā)的.BSD 則代表“Berkeley Software Distribution,伯克利軟件套件”捎泻,其源于對加州大學(xué)伯克利分校所開發(fā)的貝爾實(shí)驗(yàn)室 UNIX 的一系列修改飒炎,它最終發(fā)展成一個(gè)完整的操作系統(tǒng),現(xiàn)在有多個(gè)不同的 BSD 分支.
1笆豁、內(nèi)核 vs 完整操作系統(tǒng)
嚴(yán)格的說郎汪,Linux 是只是一個(gè)內(nèi)核.制作 Linux 發(fā)行版所要做的工作就是,匯集那些創(chuàng)建一個(gè)完整 Linux 操作系統(tǒng)所需的所有軟件闯狱,將它組合成一個(gè)像 Ubuntu煞赢、Debian、RedHat / CentOS扩氢、Mint 或者是 Arch 這樣的 Linux 發(fā)行版.有許多不同的 Linux 發(fā)行版.
與此相反的是耕驰,BSD 這個(gè)名字則代表其內(nèi)核和操作系統(tǒng).例如,F(xiàn)reeBSD 提供了 FreeBSD 內(nèi)核和 FreeBSD 操作系統(tǒng).它是作為一個(gè)單一的項(xiàng)目維護(hù)的.換句話說,如果你想要安裝 FreeBSD朦肘,就只有一個(gè) FreeBSD 可供你安裝.如果你想要安裝 Linux饭弓,你首先需要在許多 Linux 發(fā)行版之間選擇.
BSD 包括一個(gè)名為 Ports 的系統(tǒng),它提供了一種安裝軟件包的方式.Ports 系統(tǒng)包含了軟件包的源代碼媒抠,所以您的計(jì)算機(jī)如果想安裝軟件的話弟断,則需要先編譯他們.(如果您曾經(jīng)使用過以前流行的 Gentoo,有點(diǎn)類似那樣.)不過趴生,軟件包也可以是預(yù)安裝的二進(jìn)制形式阀趴,以便你不需要花時(shí)間和系統(tǒng)資源編譯他們就能運(yùn)行.
2、許可證
許可證是典型的差異苍匆,雖然它不會對大多數(shù)人產(chǎn)生影響.Linux 使用 GNU 通用公共許可證刘急,即 GPL.如果你修改了 Linux 內(nèi)核,并將其分發(fā)浸踩,你就必須放出您的修改的源代碼.
BSD 使用 BSD 許可證.如果你修改了 BSD 內(nèi)核或發(fā)行版叔汁,并且發(fā)布它,你根本不需要必須發(fā)布其源代碼.你可以自由地對你的 BSD 代碼做任何你想做的事情检碗,你沒有義務(wù)發(fā)布的你修改的源代碼据块,當(dāng)然你想發(fā)布也行.
兩者都是開放源碼的,但是以不同的方式.人們有時(shí)會陷入關(guān)于哪種許可證是“更自由”的辯論.GPL可以幫助用戶以確保他們可以擁有 GPL 軟件的源代碼折剃,并限制開發(fā)人員迫使他們開放代碼.BSD 許可證并不能確保用戶可以擁有源代碼另假,而是給開發(fā)人員選擇是否公布代碼的權(quán)利,即使他們想要把它變成一個(gè)閉源項(xiàng)目.
3怕犁、BSD分支
以下是通常認(rèn)可的三個(gè)“主流” BSD 操作系統(tǒng):
(1)FreeBSD: FreeBSD 是最受歡迎的 BSD边篮,針對高性能和易用性.它支持英特爾和 AMD 的32位和64位處理器.
(2)NetBSD: NetBSD 被設(shè)計(jì)運(yùn)行在幾乎任何架構(gòu)上,支持更多的體系結(jié)構(gòu).在他們的主頁上的格言是”理所當(dāng)然奏甫,我們運(yùn)行在 NetBSD 上”.
(3)OpenBSD:OpenBSD 為最大化的安全性設(shè)計(jì)的 —— 這不僅僅它宣稱的功能节芥,在實(shí)踐中也確實(shí)如此.它是為銀行和其他重要機(jī)構(gòu)的關(guān)鍵系統(tǒng)設(shè)計(jì)的.
還有兩個(gè)其他的重要 BSD 操作系統(tǒng):
(4)DragonFly BSD: DragonFly BSD 的設(shè)計(jì)目標(biāo)是提供一個(gè)運(yùn)行在多線程環(huán)境中的操作系統(tǒng) —— 例如驱闷,計(jì)算機(jī)集群.
(5)Darwin / Mac OS X: Mac OS X (macOS) 實(shí)際上基于 Darwin 操作系統(tǒng)媒咳,而 Darwin 系統(tǒng)基于 BSD.它與其他的 BSD 有點(diǎn)不同瓦糕,雖然底層內(nèi)核和其他的軟件是開源代碼(BSD 代碼)胁艰,但操作系統(tǒng)的大部分是閉源的 Mac OS 代碼).蘋果在 BSD 基礎(chǔ)上開發(fā)了 Mac OS X 和 iOS款筑,這樣蘋果就不必寫操作系統(tǒng)底層,就像 Google 在 Linux 基礎(chǔ)上開發(fā) Android 系統(tǒng)一樣.
4腾么、BSD over Linux??
Linux 顯然比 FreeBSD 更受歡迎.例如奈梳,Linux 往往會比 FreeBSD 更早提供新硬件的支持.BSD 有一個(gè)兼容包可用,使之能像大多數(shù)的其他軟件一樣原生的執(zhí)行 Linux 二進(jìn)制程序.
如果您使用過 Linux解虱, FreeBSD 不會讓你感覺到太大的不同.如果把 FreeBSD 作為桌面操作系統(tǒng)攘须,你也可以使用相同的 GNOME,KDE 或 Xfce 桌面環(huán)境殴泰,你也可以在BSD上使用 Linux 上的大多數(shù)的其他軟件.有一點(diǎn)需要注意于宙,F(xiàn)reeBSD 不會自動安裝的圖形化桌面浮驳,所以你要花相對于 Linux 更多的心思來照顧你的BSD.BSD 更守舊一些.
FreeBSD 的可靠性和穩(wěn)定性也許更適合作為服務(wù)器的操作系統(tǒng).而廠商也會選擇 BSD 而不是 Linux 作為其操作系統(tǒng),因?yàn)檫@樣他們就不必放出他們修改的代碼.
如果你是一個(gè)PC桌面用戶捞魁,你真的不需要太過在意BSD.你可能會喜歡 Linux至会,因?yàn)樗哂懈冗M(jìn)的硬件支持,更容易安裝谱俭,具有現(xiàn)代操作系統(tǒng)的特點(diǎn).如果你關(guān)注服務(wù)器或嵌入式的設(shè)備奉件,你可能會更喜歡FreeBSD.
我們可能會聽到一些人說他們在桌面電腦上使用 FreeBSD,你當(dāng)然也可能是其中之一昆著!但像 Ubuntu 或 Mint 一樣的開源操作系統(tǒng)對于多數(shù)用戶來說更體驗(yàn)良好和更先進(jìn)些.
發(fā)展簡史
Unix是目前還在存活的操作系統(tǒng)的元老了县貌,走過了40年的歷程.
1、Unix 起源
回顧Unix歷史凑懂,我們就要說一下一個(gè)叫MULTICS的項(xiàng)目.上世紀(jì)六十年代時(shí)煤痕,大部份計(jì)算機(jī)都是采用批處理的方式(也就是說,當(dāng)作業(yè)積累一定數(shù)量的時(shí)候征候,計(jì)算機(jī)才會進(jìn)行處理).那時(shí)杭攻,我們熟知的美國電話及電報(bào)公司(AT&T)、通用電器公司(G.E.)及麻省理工學(xué)院(MIT)計(jì)劃合作開發(fā)一個(gè)多用途疤坝、分時(shí)及多用戶的操作系統(tǒng)兆解,也就是這個(gè)MULTICS,其被設(shè)計(jì)運(yùn)行在GE-645大型主機(jī)上.不過跑揉,這個(gè)項(xiàng)目由于太過復(fù)雜锅睛,整個(gè)目標(biāo)過于龐大,糅合了太多的特性历谍,進(jìn)展太慢现拒,幾年下來都沒有任何成果,而且性能都很低.于是到了1969年2月望侈,貝爾實(shí)驗(yàn)室決定退出這個(gè)項(xiàng)目.
熟悉這段歷史的人都知道印蔬,貝爾實(shí)驗(yàn)室中的有個(gè)叫 Ken Thompson 的人,他為 MULTICS 這個(gè)操作系統(tǒng)寫游戲了個(gè)叫“Space Travel”的游戲脱衙,在 MULTICS 上經(jīng)過實(shí)際運(yùn)行后侥猬,他發(fā)現(xiàn)游戲速度很慢而且耗費(fèi)昂貴 —— 每次運(yùn)行會花費(fèi)75美元.退出這個(gè)項(xiàng)目以后.他為了讓這個(gè)游戲能玩,所以他找來Dennis Ritchie為這個(gè)游戲開發(fā)一個(gè)極其簡單的操作系統(tǒng).這就是后來的Unix.(值得一提的是捐韩,當(dāng)時(shí)他們本想在DEC-10上寫退唠,后來沒有申請到,只好在實(shí)驗(yàn)室的土·嗇角邊找了一臺被人遺棄的 Digital PDP-7 的迷你計(jì)算機(jī)進(jìn)行他們的計(jì)劃荤胁,這臺計(jì)算機(jī)上連個(gè)操作系統(tǒng)都沒有瞧预,于是他們用匯編語言僅一個(gè)月的時(shí)間就開發(fā)了一個(gè)操作系統(tǒng)的原型)他們的同事Brian Kernighan非常不喜歡這個(gè)系統(tǒng),嘲笑Ken Thompson說:“你寫的系統(tǒng)好真差勁,干脆叫Unics算了.” Unics 的名字就是相對于 MULTICS 的一種戲稱垢油,后業(yè)改成了Unix.于是盆驹,Unix 就在這樣被游戲和玩笑創(chuàng)造了,當(dāng)時(shí)是1969年8月.也就是這一年秸苗,Linux之父 Linus Torvalds 在芬蘭出生了.
1971年召娜,Ken Thompson 寫了充分長篇的申請報(bào)告,申請到了一臺PDP-11/24的機(jī)器.于是Unix第一版出來了.在一臺PDP-11/24的機(jī)器上完成.這臺電腦只有24KB的物理內(nèi)存和 500K 磁盤空間.Unix占用了12KB的內(nèi)存惊楼,剩下的一半內(nèi)存可以支持兩用戶進(jìn)行Space Travel的游戲.而著名的 fork() 系統(tǒng)調(diào)用也就是在這時(shí)出現(xiàn)的.
到了1973年的時(shí)候玖瘸,Ken Thompson 與 Dennis Ritchie 感到用匯編語言做移植太過于頭痛,他們想用高級語言來完成第三版檀咙,對于當(dāng)時(shí)完全以匯編語言來開發(fā)程序的年代雅倒,他們的想法算是相當(dāng)?shù)寞偪?一開始他們想嘗試用Fortran,可是失敗了.后來他們用一個(gè)叫BCPL的語言開發(fā)弧可,他們整合了BCPL形成B語言蔑匣,后來Dennis Ritchie覺得B語言還是不能滿足要求,就是就改良了B語言棕诵,這就是今天的大名鼎鼎的C語言.于是裁良,Ken Thompson 與 Dennis Ritchie 成功地用C語言重寫了 Unix 的第三版內(nèi)核.至此,Unix這個(gè)操作系統(tǒng)修改校套、移植相當(dāng)便利价脾,為Unix日后的普及打下了堅(jiān)實(shí)的基礎(chǔ).而Unix和C完美地結(jié)合成為一個(gè)統(tǒng)一體,C與Unix很快成為世界的主導(dǎo).
Unix 的第一篇文章 “The UNIX Time Sharing System”由 Ken Thompson 和 Dennis Ritchie 于1974年7月的 the Communications of the ACM 發(fā)表.這是UNIX與外界的首次接觸.結(jié)果引起了學(xué)術(shù)界的廣泛興趣并對其源碼索取笛匙,所以侨把,Unix第五版就以“僅用于教育目的”的協(xié)議,提供給各大學(xué)作為教學(xué)之用妹孙,成為當(dāng)時(shí)操作系統(tǒng)課程中的范例教材.各大學(xué)公司開始通過 Unix 源碼對 Unix 進(jìn)行了各種各樣的改進(jìn)和擴(kuò)展.于是秋柄,Unix 開始廣泛流行.
2、Unix 分裂
1978年蠢正,對 Unix 而言是革命性的一年骇笔;因?yàn)閷W(xué)術(shù)界的老大柏克利大學(xué),推出了一份以第六版為基礎(chǔ)嚣崭,加上一些改進(jìn)和新功能而成的 Unix.這就是著名的“1 BSD(1st Berkeley Software Distribution)”蜘拉,開創(chuàng)了Unix的另一個(gè)分支:BSD 系列. 同時(shí)期,AT&T成立USG有鹿,將 Unix變成商業(yè)化的產(chǎn)品.從此,BSD的 Unix 便和AT&T 的Unix 分庭抗禮谎脯,Unix就分為System IV 和 4.x BSD這兩大主流葱跋,各自蓬勃發(fā)展.
1979年發(fā)布的Unix 第七版被稱為是“最后一個(gè)真正的Unix”,這個(gè)版本的Unix內(nèi)核只有40K bytes.后來這個(gè)版本被移植到VAX機(jī)上.20世紀(jì)80年代相繼發(fā)布的8、9娱俺、10版本只授權(quán)給了少數(shù)大學(xué).
1982年稍味,AT&T基于版本7開發(fā)了UNIX System Ⅲ的第一個(gè)版本,這是一個(gè)商業(yè)版本僅供出售.為了解決混亂的UNIX版本情況荠卷,AT&T綜合了其他大學(xué)和公司開發(fā)的各種UNIX模庐,開發(fā)了UNIX System V Release 1.這個(gè)新的UNIX商業(yè)發(fā)布版本不再包含源代碼,所以加州大學(xué)Berkeley分校繼續(xù)開發(fā)BSD UNIX油宜,作為UNIX System III和V的替代選擇.BSD對UNIX最重要的貢獻(xiàn)之一是TCP/IP.BSD 有8個(gè)主要的發(fā)行版中包含了TCP/IP:4.1c掂碱、4.2、4.3慎冤、4.3-Tahoe疼燥、4.3-Reno、Net2蚁堤、4.4以及 4.4-lite.這些發(fā)布版中的TCP/IP代碼幾乎是現(xiàn)在所有系統(tǒng)中TCP/IP實(shí)現(xiàn)的前輩醉者,包括AT&T System V UNIX 和Microsoft Windows中的TCP/IP都參照了BSD的源碼.
同時(shí),其他一些公司也開始為其自己的小型機(jī)或工作站提供商業(yè)版本的UNIX系統(tǒng)披诗,有些選擇System V作為基礎(chǔ)版本撬即,有些則選擇了BSD.BSD的一名主要開發(fā)者,Bill Joy呈队,在BSD基礎(chǔ)上開發(fā)了SunOS剥槐,并最終創(chuàng)辦了Sun Microsystems.
1991年,一群BSD開發(fā)者(Donn Seeley掂咒、Mike Karels才沧、Bill Jolitz 和 Trent Hein)離開了加州大學(xué),創(chuàng)辦了Berkeley Software Design绍刮, Inc (BSDI).BSDI是第一家在便宜常見的Intel平臺上提供全功能商業(yè)BSD UNIX的廠商.后來Bill Jolitz 離開了BSDI温圆,開始了386BSD的工作.386BSD被認(rèn)為是FreeBSD、OpenBSD 和 NetBSD孩革、DragonFlyBSD的先輩.
這是一個(gè)AT&T妄圖私有化的Unix的時(shí)代.為了私有化Unix岁歉,1986年IEEE指定了一個(gè)委員會制定了一個(gè)一個(gè)開放作業(yè)系統(tǒng)的標(biāo)準(zhǔn),稱為 POSIX (Portable Operating Systems Interface).最后加上個(gè)X膝蜈,不知道是為了好聽锅移,還是因?yàn)檫@本質(zhì)上是UNIX的標(biāo)準(zhǔn).當(dāng)然,AT&T的Unix取得了這個(gè)標(biāo)準(zhǔn)制訂戰(zhàn)爭的勝利饱搏,還取得了Unix這個(gè)注冊商標(biāo).此時(shí)BSD的擁護(hù)者自喻為冷酷無情的公司帝國的反抗軍.就銷售量來說非剃,AT&T UNIX始終趕不上BSD/Sun.到1990年,AT&T與BSD版本已難明顯區(qū)分推沸,因?yàn)楸舜硕加胁捎脤Ψ降男掳l(fā)明.
這段時(shí)期备绽,從實(shí)驗(yàn)室出來的被全世界所分享的Unix券坞,正處于被私有化的關(guān)鍵時(shí)期.
3、Unix 的法律糾紛
BSDI 很快就與AT&T的UNIX Systems Laboratories(USL)附屬公司產(chǎn)生了法律糾紛肺素,USL是AT&T注冊的公司.AT&T為了擁有System V版權(quán)恨锚,以及Unix商標(biāo),為了壟斷Unix倍靡,1992年猴伶,USL正式對BSDI提起訴訟,說BSD剽竊他的源碼.而最終了結(jié)了好評如潮的BSD系統(tǒng).
由于最后判決懸而未決塌西,這樁法律訴訟將BSD后裔的開發(fā)他挎,特別是自由軟件,延遲了兩年雨让,這導(dǎo)致沒有法律問題的Linux內(nèi)核獲得了極大的支持.Linux跟386BSD的開發(fā)幾乎同時(shí)起步雇盖,Linus說,當(dāng)時(shí)如果有自由的基于386的Unix-like操作系統(tǒng)栖忠,他就可能不會創(chuàng)造Linux.盡管無法預(yù)料這給以后的軟件業(yè)究竟造成了什么樣的影響(如果沒有這個(gè)法律糾紛崔挖,很有可能沒有今天的革命性的Linux),但有一點(diǎn)可以肯定庵寞,Linux更加豐富了這塊土壤.
這場官司一直打到 AT&T將自己的Unix系統(tǒng)實(shí)驗(yàn)室賣掉狸相,新接手的Novell公司采取了一種比較開明的做法,允許BSDI自由發(fā)布自己的BSD捐川,但是前提是必須將來自于AT&T的代碼完全刪除脓鹃,于是誕生了4.4 BSD Lite版,由于這個(gè)版本不存在法律問題古沥,4.4BSD Lite成為了現(xiàn)代BSD系統(tǒng)的基礎(chǔ)版本.
這樁訴訟最終在1994年1月了結(jié)瘸右,更多地滿足了BSDI的利益.伯克利套件的18,000個(gè)文件中岩齿,只有3個(gè)文件要求刪除太颤,另有70個(gè)文件要求修改,并顯示USL的版權(quán)說明.這項(xiàng)調(diào)解另外要求盹沈,USL不得對4.4BSD提起訴訟龄章,不管是用戶還是BSDI代碼的分發(fā)者.于是,BSD Unix走上了復(fù)興的道路.BSD的開發(fā)也走向了幾個(gè)不同的方向乞封,并最終導(dǎo)致了FreeBSD做裙、OpenBSD和NetBSD的出現(xiàn).
從AT&T意識到了Unix的商業(yè)價(jià)值,不再將Unix源碼授權(quán)給學(xué)術(shù)機(jī)構(gòu)以來肃晚,到以后的幾十年锚贱,Unix仍在不斷變化,其版權(quán)所有者不斷變更关串,授權(quán)者的數(shù)量也在增加.Unix的版權(quán)曾經(jīng)為AT&T所有拧廊,之后Novell擁有了Unix杂穷,再之后Novell又將版權(quán)出售給了SCO(這一事實(shí)雙方尚存在爭議,這里是最新進(jìn)展).有很多大公司在取得了Unix的授權(quán)之后卦绣,開發(fā)了自己的Unix產(chǎn)品.(幾年前,據(jù)傳聞微軟為了限制Linux飞蚓,微軟讓SCO到法院告Linux剽竊其源碼)
由于Unix是由C語言寫的滤港,所以修改和移植都很容易,因此趴拧,很多商業(yè)公司及學(xué)術(shù)機(jī)構(gòu)均加入這個(gè)操作系統(tǒng)的研發(fā)溅漾,各個(gè)不同版本的Unix也開始蓬勃發(fā)展.這才產(chǎn)生了今天這么多的各式各樣的Unix衍生產(chǎn)品.如AIX、Solaris著榴、HP-UX添履、IRIX、OSF脑又、Ultrix等等.(這些商業(yè)化的Unix基本上都是源于AT&T授權(quán)的Unix System V)
4暮胧、Unix 開源組織
AT&T的這種商業(yè)態(tài)度,讓當(dāng)時(shí)許許多的Unix的愛好者和軟件開發(fā)者們感到相當(dāng)?shù)耐葱暮蛻n慮问麸,他們認(rèn)為商業(yè)化的種種限制并不利于產(chǎn)生的發(fā)展往衷,相反還能導(dǎo)制產(chǎn)品出現(xiàn)諸多的問題.隨著商業(yè)化Unix的版本的種種限制和諸多問題,引起了大眾的不滿和反對.于是严卖,大家開始有組織地結(jié)成“反叛聯(lián)盟”以此對抗欺行罷市的AT&T等商業(yè)化行為.
另一方面席舍,關(guān)于“大教堂”(集權(quán)、封閉哮笆、受控来颤、保密)和“集市”(分權(quán)、公開稠肘、精細(xì)的同僚復(fù)審)兩種開發(fā)模式的對比成為了新思潮的中心思想.這個(gè)新思潮對IT業(yè)產(chǎn)生了非常深遠(yuǎn)影響.為整個(gè)計(jì)算機(jī)世界帶來了革命性的價(jià)值觀.
此時(shí)福铅,一個(gè)名叫Richard Stallman的領(lǐng)袖出現(xiàn)了,他認(rèn)為Unix是一個(gè)相當(dāng)好的操作系統(tǒng)启具,如果大家都能夠?qū)⒆约核鶎W(xué)貢獻(xiàn)出來本讥,那么這個(gè)系統(tǒng)將會更加的優(yōu)異!他倡導(dǎo)的Open Source的概念鲁冯,就是針對Unix這一事實(shí)反對實(shí)驗(yàn)室里的產(chǎn)品商業(yè)化私有化.盡管Stallman既不是拷沸、也從來沒有成為一個(gè)Unix程序員,但在后1980的大環(huán)境下薯演,實(shí)現(xiàn)一個(gè)仿Unix操作系統(tǒng)成了他追求的明確戰(zhàn)略目標(biāo).Richard Stallman早期的捐助者大都是新踏入U(xiǎn)nix土地的老牌ARPANET黑客撞芍,他們對代碼共享的使命感甚至比那些有更多Unix背景的人強(qiáng)烈.
為了這個(gè)理想,Richard Stallman于1984年創(chuàng)業(yè)了GNU跨扮,計(jì)劃開發(fā)一套與Unix相互兼容的的軟件.1985 年 Richard Stallman 又創(chuàng)立了自由軟件基金會(Free Software Foundation)來為 GNU 計(jì)劃提供技術(shù)序无、法律以及財(cái)政支持.盡管 GNU 計(jì)劃大部分時(shí)候是由個(gè)人自愿無償貢獻(xiàn)验毡,但 FSF 有時(shí)還是會聘請程序員幫助編寫.當(dāng) GNU 計(jì)劃開始逐漸獲得成功時(shí),一些商業(yè)公司開始介入開發(fā)和技術(shù)支持.當(dāng)中最著名的就是之后被 Red Hat 兼并的 Cygnus Solutions.
GNU組織的建立帝嗡,延續(xù)了當(dāng)年Unix剛出現(xiàn)時(shí)的情形晶通,并為這種情形建立了可靠的法律和財(cái)務(wù)保障.GNU 工程十幾年以來, 已經(jīng)成為一個(gè)對軟件開發(fā)主要的影響力量哟玷, 創(chuàng)造了無數(shù)的重要的工具.例如:強(qiáng)健的編譯器狮辽,有力的文本編輯器,甚至一個(gè)全功能的操作系統(tǒng).從那時(shí)開始巢寡,許多程序員聚集起來開始開發(fā)一個(gè)自由的喉脖、高質(zhì)量、易理解的軟件抑月,讓這使得Unix社區(qū)生機(jī)勃勃树叽,一派繁榮景象.
自90年代發(fā)起這個(gè)計(jì)劃以來,GNU 開始大量的產(chǎn)生或收集各種系統(tǒng)所必備的組件谦絮,像是——函數(shù)庫题诵、編譯器、調(diào)式工具挨稿、文本編輯器仇轻、網(wǎng)站服務(wù)器,以及一個(gè)Unix的使用者接口(Unix shell)等等奶甘,等等.但由于種種原因篷店,GNU一直沒有開發(fā)操作系統(tǒng)的kernel.正當(dāng)Richard Stallman在為操作系統(tǒng)內(nèi)核傷腦筋的時(shí)候,Linux 出現(xiàn)了.
5臭家、Linux 橫空出世
1990年疲陕,Linus Torvalds 還是芬蘭赫爾辛基大學(xué)的一名學(xué)生,最初是用匯編語言寫了一個(gè)在80386保護(hù)模式下處理多任務(wù)切換的程序钉赁,后來從 Minix(Andy Tanenbaum教授所寫的很小的 Unix 操作系統(tǒng)蹄殃,主要用于操作系統(tǒng)教學(xué))得到靈感,進(jìn)一步產(chǎn)生了自認(rèn)為狂妄的想法——寫一個(gè)比 Minix 更好的Minix你踩,于是開始寫了一些硬件的設(shè)備驅(qū)動程序诅岩,一個(gè)小的文件系統(tǒng).這樣0.0.1版本的 Linux 就出來了,但是它只具有操作系統(tǒng)內(nèi)核的勉強(qiáng)的雛形带膜,甚至不能運(yùn)行吩谦,你必須在有Minix的機(jī)器上編譯以后才能玩.這時(shí)候Linus已經(jīng)完全著迷而不想停止,決定踢開 Minix膝藕,于是在1991年10 月5號發(fā)布Linux 0.0.2版本式廷,在這個(gè)版本中已經(jīng)可以運(yùn)行 bash 和 gcc.
從一開始,Linus就決定自由擴(kuò)散Linux芭挽,包括原代碼滑废,隨即Linux引起黑客們(hacker)的注意蝗肪,通過計(jì)算機(jī)網(wǎng)絡(luò)加入了Linux的內(nèi)核開發(fā).Linux傾向于成為一個(gè)黑客的系統(tǒng)——直到今天,在Linux社區(qū)里內(nèi)核的開發(fā)被認(rèn)為是真正的編程.由于一批高水平黑客的加入蠕趁,使Linux 發(fā)展迅猛薛闪,幾乎一兩個(gè)禮拜就有新版或修正版的出現(xiàn),到1993年底94年初俺陋,Linux 1.0 終于誕生了逛绵!Linux 1.0已經(jīng)是一個(gè)功能完備的操作系統(tǒng),而且內(nèi)核寫得緊湊高效倔韭,可以充分發(fā)揮硬件的性能,在4M內(nèi)存的80386機(jī)器上也表現(xiàn)得非常好瓢对,至今人們還在津津樂道.時(shí)至今日寿酌,kernel的版本已經(jīng)出到2.6.Linux的發(fā)展不像傳統(tǒng)的軟件工程,它完全是透過網(wǎng)絡(luò)硕蛹,集合世界各地的高手而成的一套操作系統(tǒng)醇疼,在這里我們也可以見識到網(wǎng)絡(luò)快速傳播的威力.Linux 初次讓整個(gè)世界感覺到了開源力量和網(wǎng)絡(luò)力量的如此強(qiáng)大.(Linux 的標(biāo)志和吉祥物是一只名字叫做 Tux 的企鵝,標(biāo)志的由來是因?yàn)長inus在澳洲時(shí)曾被一只動物園里的企鵝咬了一口法焰,便選擇了企鵝作為Linux的標(biāo)志.)
Linux 的歷史是和GNU緊密聯(lián)系在一起的.從1983年開始的GNU計(jì)劃致力于開發(fā)一個(gè)自由并且完整的類Unix操作系統(tǒng)秧荆,包括軟件開發(fā)工具和各種應(yīng)用程序.到1991年 Linux 內(nèi)核發(fā)布的時(shí)候,GNU已經(jīng)幾乎完成了除了系統(tǒng)內(nèi)核之外的各種必備軟件的開發(fā).在 Linus Torvalds 和其它開發(fā)人員的努力下埃仪,GNU組件可以運(yùn)行于Linux內(nèi)核之上.整個(gè)內(nèi)核是基于 GNU 通用公共許可乙濒,也就是GPL(GNU General Public License,GNU通用公共許可證)的卵蛉,但是Linux內(nèi)核并不是GNU 計(jì)劃的一部分.1994年3月颁股,Linux1.0版正式發(fā)布,Marc Ewing成立了 Red Hat 軟件公司傻丝,成為最著名的 Linux 分銷商之一.
嚴(yán)格來講甘有,Linux這個(gè)詞本身只表示Linux內(nèi)核,但在實(shí)際上人們已經(jīng)習(xí)慣了用Linux來形容整個(gè)基于Linux內(nèi)核葡缰,并且使用GNU 工程各種工具和應(yīng)用程序的操作系統(tǒng)(也被稱為GNU/Linux).基于這些組件的Linux軟件被稱為Linux發(fā)行版.一般來講亏掀,一個(gè)Linux發(fā)行套件包含大量的軟件,比如軟件開發(fā)工具泛释,數(shù)據(jù)庫滤愕,Web服務(wù)器(例如Apache),X Window胁澳,桌面環(huán)境(比如GNOME和KDE)该互,辦公套件(比如OpenOffice.org),等等.
1991至1995年間韭畸,Linux從概念型的 0.1 版本內(nèi)核原型宇智,發(fā)展成為能夠在性能和特性上均堪媲美專有Unix的操作系統(tǒng)蔓搞,并且在連續(xù)正常工作時(shí)間等重要統(tǒng)計(jì)數(shù)據(jù)上打敗了這些Unix中的絕大部分.1995年,Linux找到了自己的殺手級應(yīng)用——開源的web服務(wù)器Apache.就像Linux随橘,Apache出眾地穩(wěn)定和高效.很快喂分,運(yùn)行 Apache 的 Linux 機(jī)器成了全球ISP平臺的首選.約60%的網(wǎng)站選用Apache,輕松擊敗了另兩個(gè)主要的專有型競爭對手.今天的LAMP(Linux 机蔗, Apache蒲祈, MySQL, PHP)已經(jīng)成為了架構(gòu) Web服務(wù)器的主要首選.
現(xiàn)如今的Linux不但可以裝在幾乎所有的主流服務(wù)器上萝嘁,當(dāng)然也包括桌面的X86系統(tǒng)中.其還常常被用于嵌入式系統(tǒng)梆掸,機(jī)頂盒、手機(jī)牙言、交換機(jī)酸钦、游戲機(jī)、PDA咱枉、網(wǎng)絡(luò)交換機(jī)卑硫、路由器、等等蚕断,都是因?yàn)?Linux 那精彩的內(nèi)核.
Linux 的出現(xiàn)欢伏,不僅僅給世界帶來了一個(gè)免費(fèi)的操作系統(tǒng),也不僅僅是對 Unix 自由亿乳、共享的文化的延續(xù)硝拧,它的出現(xiàn)帶給了計(jì)算機(jī)世界自 Unix、GNU 以來更為成熟的思想和文化.
6葛假、Linux —— 今天的領(lǐng)袖
Linux和GNU關(guān)系是比較微妙的.那時(shí)河爹,自由軟件基金會編寫的用戶軟件工具包鋪平了一條擺脫高成本專有軟件開發(fā)工具的前進(jìn)道路.意識服從經(jīng)濟(jì),而不是領(lǐng)導(dǎo):一些新手加入了RMS的革命運(yùn)動桐款,高舉GPL大旗咸这,另一些人則更認(rèn)同整體意義上的Unix傳統(tǒng),加入了反對GPL的陣營魔眨,但其他大部分人置身事外媳维,一心編碼.
Linus Torvalds 巧妙地跨越了GPL和反GPL的派別之爭.他利用GNU工具包搭起了自創(chuàng)的Linux內(nèi)核,用GPL的傳染性質(zhì)保護(hù)它遏暴,但拒絕認(rèn)同Richard Stallman的許可協(xié)議反映的思想體系計(jì)劃.Linus Torvalds明確表示他認(rèn)為自由軟件一般情況下更好侄刽,但他偶爾也用專有軟件.即使在他自己的事業(yè)中,他也拒絕成為狂熱分子.這一點(diǎn)極大地吸引了大多數(shù)黑客朋凉,他們雖然早就反感Richard Stallman的言辭州丹,但他們的懷疑論一直缺個(gè)有影響力或者令人信服的代言人.而Linus Torvalds正好充當(dāng)了這一角色.
Linus Torvalds 令人愉快的實(shí)用主義及靈活而低調(diào)的行事風(fēng)格,促使黑客文化在1993至1997年間取得了一連串令人驚奇的勝利,不僅僅在技術(shù)上的成功墓毒,還讓圍繞Linux操作系統(tǒng)的發(fā)行吓揪、服務(wù)和支持產(chǎn)業(yè)有了堅(jiān)實(shí)的開端.結(jié)果,他的名望和影響也一飛沖天.Torvalds 成為了互聯(lián)網(wǎng)時(shí)代的英雄所计;到1995年為止柠辞,他只用了四年時(shí)間就在整個(gè)黑客文化界聲名顯赫,而Richard Stallman為此花了十五年主胧,而且他還遠(yuǎn)遠(yuǎn)超過了Stallman向外界販賣“自由軟件”的記錄.與Torvalds相比叭首,Richard Stallman的言辭漸漸顯得既刺耳又無力.(參看《Linus Torvalds 語錄 Top 10》)
今天,我們也說不清楚是GNU Linux還是Linux GNU.Linux既不排斥開源踪栋,也不排斥商業(yè)化焙格,Linus認(rèn)為好的軟件是需要免費(fèi)和商業(yè)化共同推進(jìn)的.正是這種革命性的想法,造就了今天的Linux火紅的局面(參看《誰寫了Linux》夷都、《Linux基金會的廣告》间螟、《Linux Distribution Timeline》).Linux就像一股清泉流入了所有人的心中,引發(fā)了很多的啟迪和思考.
7损肛、Unix與黑客文化
黑客的文化和 Unix 的商業(yè)化存在著必然的聯(lián)系.自從Unix出現(xiàn),黑客文化就與之而來.
1993初荣瑟,一個(gè)悲觀的觀察家撰文指出治拿,已經(jīng)有理由認(rèn)為Unix的傳奇故事連同他帶有黑客文明將一同破產(chǎn).許多人預(yù)測,從那時(shí)起 Unix 將在六月內(nèi)死亡.他們很清楚笆焰,十年的Unix商業(yè)化劫谅,使自由跨平臺的Unix夢以失敗告終.Unix允諾的跨平臺可移植性,在一打大公司專有的Unix版本之間不停地斗嘴中丟失嚷掠,一個(gè)完美的操作系統(tǒng)最終淪為多種版本的一團(tuán)亂麻捏检,這應(yīng)該說是人類文明史上的一個(gè)重大悲劇.
在專有軟件社會中,只有像微軟一樣的“集權(quán)制不皆,大教堂”生產(chǎn)方式才能成功.那個(gè)時(shí)代的人悲觀地相信贯城,技術(shù)世界的個(gè)人英雄主義時(shí)代已經(jīng)結(jié)束,軟件工業(yè)和發(fā)展中的互聯(lián)網(wǎng)絡(luò)將逐漸地由像微軟一樣的巨型企業(yè)支配霹娄,再也沒有“佐羅”能犯,世界是愷撒大帝的世界,計(jì)算機(jī)文明將進(jìn)入黑暗的帝國時(shí)代.黑客已經(jīng)死了犬耻,自由不付存在.
自從 Unix 出現(xiàn)以來踩晶,第一代的Unix黑客似乎垂垂老矣,衣食不飽( Berkeley計(jì)算機(jī)科學(xué)研究組在1994丟失了自己基金).這是一個(gè)抑壓的時(shí)代.專有的商業(yè)Unix的結(jié)果證明那么沉重枕磁、那么盲目渡蜻、那么不適當(dāng),以致微軟能夠用那次等技術(shù)的Windows搶走他們生存的空間,拿走他們的干糧.黑客世界的殘余力量被逼到了世界上的角落里茸苇,茍延殘喘.
就在黑客文化日漸衰落之時(shí)排苍,美國新聞周刊的資深記者Steven Levy完成了著名的《黑客列傳》一書,書中著力介紹了一個(gè)人物:Richard M.Stallman的故事税弃,他是麻省理工學(xué)院(MIT)人工智能實(shí)驗(yàn)室領(lǐng)袖人物纪岁,堅(jiān)決反對實(shí)驗(yàn)室的研究成果商業(yè)化.他是商業(yè)軟件社會中堅(jiān)強(qiáng)的一員,決不隨波逐流则果,建立了全新的黑客文化.
Richard M. Stallman(他的登陸名RMS更為人熟知)早在1970年代晚期就已經(jīng)證明他是當(dāng)時(shí)最有能力的程序員之一.Emacs編輯器就是他眾多發(fā)明中的一項(xiàng).RMS的目標(biāo)是將后1980的松散黑客社群變成一臺有組織的社會化機(jī)器以達(dá)到一個(gè)單純的革命目標(biāo).也許他未意識到幔翰,他的言行與當(dāng)年卡爾·馬克思號召產(chǎn)業(yè)無產(chǎn)階級反抗工作的努力如出一轍.RMS宣言引發(fā)的爭論至今仍存于黑客文化中.他的綱要遠(yuǎn)不止于維護(hù)一個(gè)代碼庫,已經(jīng)暗含了廢除軟件知識產(chǎn)權(quán)主張的精髓.RMS通過“自由軟件(free software)”讓黑客文化更加有自我意識.當(dāng)然西壮,這個(gè)充滿魅力又具爭議的人物本身已經(jīng)成為了一個(gè)黑客文化英雄.
只有癡迷的“黑客”和具有創(chuàng)造力的怪人結(jié)成的反叛聯(lián)盟才能把我們從愚蠢中拯救出來——他們接著教導(dǎo)我們遗增,真正的專業(yè)和奉獻(xiàn)精神,正是我們在屈服于世俗觀念的“合理商業(yè)做法”之前的所作所為. ——《The Art of Unix Programming》
RMS讓世界上所有的人都知道款青,入侵電腦系統(tǒng)只是低級不入流的黑客干的事做修,真正的黑客,是為了自由抡草,為了軟件的自由饰及,為了挑戰(zhàn)計(jì)算機(jī)世界中的霸權(quán)主義而斗爭.他們不是街頭小混混,他們更像是綠林好漢康震,更像是羅賓漢燎含,更像是佐羅.就像渴望民主的人民同專制的政府斗爭一樣.RMS領(lǐng)導(dǎo)著許多的黑客通過互聯(lián)網(wǎng)向?qū)S熊浖l(fā)出宣戰(zhàn).
X Window是首批由服務(wù)于全球各地不同組織的許多個(gè)人以團(tuán)隊(duì)形式開發(fā)的大規(guī)模開源項(xiàng)目之一.電子郵件使創(chuàng)意得以在這個(gè)群體中快速傳播,問題由此得以快速解決腿短,而開發(fā)者可以人盡其才.軟件更新可以在數(shù)小時(shí)之內(nèi)發(fā)送到位屏箍,使得每個(gè)節(jié)點(diǎn)在整個(gè)開發(fā)過程中步調(diào)一致.網(wǎng)絡(luò)改變了軟件的開發(fā)模式.
另一方面,RMS的理論體系有許多東西非常有爭議橘忱,他的GPL被認(rèn)為是一種“病毒式”的協(xié)議赴魁,BSD的fans和老牌Unix黑客們認(rèn)為,他們編寫Unix的年頭都比GPL聲明要長得多钝诚,GPL依然有太多的限制颖御,而BSD協(xié)議則比GPL更加的自由.另一方面,RMS走向了另一個(gè)極端凝颇,他是完全反版權(quán)的郎嫁,反商業(yè)化的.把軟件產(chǎn)品從強(qiáng)制收費(fèi)推向了強(qiáng)制免費(fèi)、共享和開源祈噪,這也為他帶來了許多許多的爭議.
在RMS組織黑客鬧革命的年代里泽铛,沒有多少黑客認(rèn)同于RMS的理論體系,更多的他們參與GNU只是為了體現(xiàn)那種在互聯(lián)網(wǎng)上協(xié)同工作辑鲤,令人激動的工作模式.自從GNU設(shè)立以來盔腔,爭議不斷,而黑客文化卻從未有統(tǒng)一在他的理想體系之下.
自從Linux出現(xiàn)以后,一個(gè)新的黑客領(lǐng)袖出現(xiàn)了弛随,Linus Torvalds的中庸態(tài)度網(wǎng)聚了世界上頂尖的黑客瓢喉,其繞過了GPL和反GPL的派系之爭,他使用GNU的工具從而以GPL的“傳染性”保護(hù)了Linux舀透,但他同時(shí)也不承認(rèn)RMS的理論思想體系栓票,他即開源,又支持商業(yè)化.雖然愕够,他沒有帶給黑客們什么重要的思想體系或統(tǒng)一的價(jià)值觀走贪,但他整合了全世界黑客的陣營,讓所有的黑客的行為都圍繞著Linux這一事物進(jìn)行.他以“用自由軟件是因?yàn)樗\(yùn)行得更好”輕而易舉地蓋過了“用自由軟件是因?yàn)樗熊浖荚撌亲杂傻摹?
1998年初惑芭,這種新思潮促使網(wǎng)景公司(Netscape Communications)公布了其Mozilla瀏覽器的源碼.媒體對此事件的關(guān)注促成了Linux在華爾街的上市坠狡,推動了1999-2001年間科技股的繁榮.事實(shí)證明,此事無論對黑客文化的歷史還是對Unix的歷史都是一個(gè)轉(zhuǎn)折點(diǎn).
8遂跟、Unix 的歷史教訓(xùn)
下面的文字出自《The Art of Unix Programming》(Unix編程藝術(shù)).令今天我們所有人所反思.
在Unix歷史中逃沿,最大的規(guī)律就是:
距開源越近就越繁榮.任何將Unix專有化的企圖,只能陷入停滯和衰敗.
回顧過去幻锁,我們早該認(rèn)識到這一點(diǎn).1984年至今凯亮,我們浪費(fèi)了十年時(shí)間才學(xué)到這個(gè)教訓(xùn).如果我們?nèi)蘸蟛凰蓟诟模赡苓€得大吃苦頭.
雖然我們在軟件設(shè)計(jì)這個(gè)重要但狹窄的領(lǐng)域比其他人聰明哄尔,但這不能使我們擺脫對技術(shù)與經(jīng)濟(jì)相互作用影響的茫然假消,而這些就發(fā)生在我們的眼皮底下.即使Unix社區(qū)中最具洞察力、最具遠(yuǎn)見卓識的思想家究飞,他們的眼光終究有限.對今后的教訓(xùn)就是:過度依賴任何一種技術(shù)或者商業(yè)模式都是錯(cuò)誤的——相反,保持軟件及其設(shè)計(jì)傳統(tǒng)的的靈活性才是長存之道.
另一個(gè)教訓(xùn)是:別和低價(jià)而靈活的方案較勁.或者堂鲤,換句話說亿傅,低檔的硬件只要數(shù)量足夠,就能爬上性能曲線而最終獲勝.
經(jīng)濟(jì)學(xué)家Clayton Christensen稱之為“破壞性技術(shù)”瘟栖,他在《創(chuàng)新者窘境》(The Innovator’s Dilemma)[Christensen]一書中以磁盤驅(qū)動器葵擎、蒸汽挖土機(jī)和摩托車為例闡明了這種現(xiàn)象的發(fā)生.當(dāng)小型機(jī)取代大型機(jī)、工作站和服務(wù)器取代小型機(jī)以及日用Intel機(jī)器又取代工作站和服務(wù)器時(shí)半哟,我們也看到了這種現(xiàn)象.開源運(yùn)動獲得成功正是由于軟件的大眾化.Unix要繁榮酬滤,就必須繼續(xù)采用吸納低價(jià)而靈活的方案的訣竅,而不是去反對它們.
最后寓涨,舊學(xué)派的Unix社區(qū)因采用了傳統(tǒng)的公司組織盯串、財(cái)務(wù)和市場等命令機(jī)制而最終未能實(shí)現(xiàn)“職業(yè)化”.只有癡迷的“黑客”和具有創(chuàng)造力的怪人結(jié)成的反叛聯(lián)盟才能把我們從愚蠢中拯救出來——他們接著教導(dǎo)我們,真正的專業(yè)和奉獻(xiàn)精神戒良,正是我們在屈服于世俗觀念的“合理商業(yè)做法”之前的所作所為.
9体捏、Unix 族譜
Unix 的故事仍舊延續(xù)著……,許多網(wǎng)站也為這段歷史留下記錄.一個(gè)詳細(xì)記錄Unix歷史的網(wǎng)站,這個(gè)網(wǎng)站忠實(shí)記載著1969~2005 年Unix發(fā)展的大事几缭,而且還有 PDF 檔案可供下載河泳,上面有一個(gè)龐大的UNIX家族版本樹,讓人嘆為觀止.網(wǎng)站的首頁陳列每個(gè)時(shí)期Unix的歷史年栓,也代表著無數(shù)工程師的心血與努力.
10拆挥、Unix 的特點(diǎn)
現(xiàn)在的文獻(xiàn)中提到Unix基本上是說,由Ken Thompson和Dennis Ritchie共同開發(fā)的.而通過歷史我們也能發(fā)現(xiàn)某抓,Unix的主要是由Ken Thompson寫下的.但在學(xué)術(shù)界纸兔,Dennis Ritchie的名字往往被排在了Ken Thompson前面的.這就是因?yàn)椋珼ennis Ritchie不但發(fā)明了C語言搪缨,而且當(dāng)時(shí)他設(shè)計(jì)Unix操作系統(tǒng)的設(shè)計(jì)思想食拜,影響了整個(gè)世界,直到今天.
當(dāng)時(shí)副编,他們開發(fā) UNIX负甸,沒有正式立項(xiàng),是 Ken Thompson 和 Dennis Ritchie 等少數(shù)幾個(gè)人偷偷干的痹届,如果一切都要從頭從新設(shè)計(jì)呻待,那幾乎是不可能的.所以,Unix吸取與借鑒了Multics的經(jīng)驗(yàn)队腐,如內(nèi)核蚕捉,進(jìn)程,層次式目錄柴淘,面向流的I/O迫淹,把設(shè)備當(dāng)作文件,……等等.但是Unix在繼承中又有創(chuàng)新为严,比如Unix采用一種無格式的文件結(jié)構(gòu)敛熬,文件由字節(jié)串加組成.這帶來兩大好處:一是在說明文件時(shí)不必加進(jìn)許多無關(guān)的“填充物”,二是任何程序的輸出可直接用作其他任何程序的輸入第股,不必經(jīng)過轉(zhuǎn)換.后面這一點(diǎn)叫做“管道”(piping)应民,這就是Unix首創(chuàng)的.此外,像把設(shè)備當(dāng)作文件夕吻,從而簡化了設(shè)備管理這一操作系統(tǒng)設(shè)計(jì)中的難題诲锹,雖然不是UNIX的發(fā)明,但是實(shí)現(xiàn)上它采用了一些新方法涉馅,比Multics更高明一些.
下面是Unix的特點(diǎn):(30多年過去了归园,這些東西早已變成經(jīng)典)
Everything (including hardware) is a file
所有的事物(甚至硬件本身)都是一個(gè)的文件.
Configuration data stored in text
以文本形式儲存配置數(shù)據(jù).
Small, single-purpose program
程序盡量朝向小而單一的目標(biāo)設(shè)計(jì)
Avoid captive user interfaces
盡量避免令人困惑的用戶接口
Ability to chain program together to perform complex tasks
將幾個(gè)程序連結(jié)起來稚矿,處理大而復(fù)雜的工作.
11蔓倍、Unix的影響和哲學(xué)
Unix是第三次工業(yè)革命中計(jì)算機(jī)軟件領(lǐng)域最具代表性的產(chǎn)物.在這近40年中悬钳,由Unix造成的影響是最有深遠(yuǎn)意義的.就我看來,Unix為軟件領(lǐng)域帶來了至少以下有積極的東西偶翅,由這些東西所引發(fā)的直接或間接的事物更是舉不勝數(shù).
*軟件開發(fā)的若干哲學(xué)和思想.
*全民參與推動軟件默勾,代碼共享的模式.
*開啟了黑客文化和開源項(xiàng)目.
*免費(fèi)和商業(yè)的完美結(jié)合的 Linux.
*C語言,而后發(fā)展的C++聚谁,Java 等等類C的編程語言和腳本.
*TCP/IP母剥,其的Socket編程已成為今天通用的網(wǎng)絡(luò)編程主流.
不能不說,AT&T雖然發(fā)展了Unix,但今天Unix的混亂的局面也和AT&T 有著直接原因.但反過來說,如果沒有AT&T的反面教材骤菠,今天的GNU/Linux很有可能也不會出現(xiàn).AT&T究竟是限制了Unix的發(fā)展瓮顽,還是以反面示例促進(jìn)了Unix社區(qū)乙嘀,已不好評說.今天,軟件是商業(yè)化好還是開源好的爭論還在繼續(xù),縱觀這幾十年來Unix的歷史,Linux的劃時(shí)代地出現(xiàn).相信你會得出自己的結(jié)論.不管怎么樣伪阶,Unix的經(jīng)歷對計(jì)算機(jī)領(lǐng)域貢獻(xiàn)的不單單是技術(shù),他給我們提供了豐富而生動的教材.特別是Unix引發(fā)的哲學(xué)处嫌,讓今天的我們依然受益不淺.
說到Unix為我們所帶來的軟件開發(fā)的哲學(xué)栅贴,我必需要說一說.Unix遵循的原則是KISS(Keep it simple, stupid).在 https://en.wikipedia.org/wiki/Unix_philosophy 上有很多的基本上大同小異的Unix哲學(xué)熏迹,都是很經(jīng)典的.
Doug McIlroy 是認(rèn)為UNIX的哲學(xué)是這樣的:三條哲學(xué)檐薯,簡明扼要,就是這三條哲學(xué)貫穿著整個(gè)Unix世界.尤其是第一條“do one thing and do it well”真是相當(dāng)精彩注暗!
Write programs that do one thing and do it well.
Write programs to work together.
Write programs to handle text streams坛缕, because that is a universal interface.
只要是Unix的程序員,他們會比別的程序員在任何時(shí)候都會不停地強(qiáng)調(diào)著這三條哲學(xué).
而《The Art of Unix Programming》總結(jié)了下面這些哲學(xué)捆昏,都是至理名言啊.
1).Rule of Modularity: Write simple parts connected by clean interfaces.
模塊化準(zhǔn)則:編寫簡單的模塊赚楚,并用清晰的接口連接它們
2).Rule of Clarity: Clarity is better than cleverness.
清晰性準(zhǔn)則:清晰勝于機(jī)巧
3).Rule of Composition: Design programs to be connected to other programs.
組合準(zhǔn)則:設(shè)計(jì)可以相互連接的程序
4).Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
分離準(zhǔn)則:策略同機(jī)制分離屡立;接口同引擎分離
5).Rule of Simplicity: Design for simplicity直晨; add complexity only where you must.
簡單性準(zhǔn)則:設(shè)計(jì)要簡單搀军,必要時(shí)才添加復(fù)雜性
6).Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
吝嗇準(zhǔn)則:除非確無它法膨俐,不要編寫龐大的程序
7).Rule of Transparency: Design for visibility to make inspection and debugging easier.
透明性準(zhǔn)則:設(shè)計(jì)要直白,使檢查和調(diào)試更容易
8).Rule of Robustness: Robustness is the child of transparency and simplicity.
健壯性準(zhǔn)則:健壯性源自于透明性與簡單性
9).Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.
表示準(zhǔn)則:數(shù)據(jù)體現(xiàn)知識罩句,讓邏輯單純而健壯
10).Rule of Least Surprise: In interface design焚刺, always do the least surprising thing.
最小驚奇準(zhǔn)則:在接口設(shè)計(jì)中,避免出乎意料
11).Rule of Silence: When a program has nothing surprising to say门烂, it should say nothing.
沉默準(zhǔn)則:如果程序沒有什么好說的乳愉,就應(yīng)該保持沉默
12).Rule of Repair: When you must fail兄淫, fail noisily and as soon as possible.
修復(fù)準(zhǔn)則:如果注定失敗,要盡早蔓姚,要大聲
13).Rule of Economy: Programmer time is expensive捕虽; conserve it in preference to machine time.
經(jīng)濟(jì)性準(zhǔn)則:和機(jī)器的時(shí)間比較,程序員的時(shí)間是更寶貴的
14).Rule of Generation: Avoid hand-hacking坡脐; write programs to write programs when you can.
生成準(zhǔn)則:避免手工編程泄私,如果可能,編寫程序去生成程序
15).Rule of Optimization: Prototype before polishing. Get it working before you optimize it.
優(yōu)化準(zhǔn)則:打磨前先成型备闲,優(yōu)化前先使它工作
16).Rule of Diversity: Distrust all claims for “one true way”.
多樣性準(zhǔn)則:不相信“唯一正途”
17).Rule of Extensibility: Design for the future晌端, because it will be here sooner than you think.
擴(kuò)展性準(zhǔn)則:為未來設(shè)計(jì),因?yàn)樗鼇淼谋饶阆氲迷?/p>
X Window 的設(shè)計(jì)者 Mike Gancarz 給出了下面九條哲學(xué)思想
1).Small is beautiful.
2).Make each program do one thing well.
3).Build a prototype as soon as possible.
4).Choose portability over efficiency.
5).Store data in flat text files.
6).Use software leverage to your advantage.
7).Use shell scripts to increase leverage and portability.
8).Avoid captive user interfaces.
9).Make every program a filter.
在今天恬砂,這種思想依然被傳承著咧纠,在影響著世界上各個(gè)角落的每一個(gè)程序員.
12、Unix痛恨者手冊
這里還需要值得一提的是一本叫《The Unix-Haters Handbook》,可以在這里下載:http://research.microsoft.com/~daniel/uhh-download.html.其中以調(diào)侃的語氣聲討了Unix的種種不是.雖然這是十年前的一本書了泻骤,但還是值得一讀.這本書指出了許多Unix的設(shè)計(jì)錯(cuò)誤漆羔,指出了種種看起來很合理的設(shè)計(jì)走向了荒謬,還這樣調(diào)侃了C語言——“如果說C語言給足了讓你上吊的繩子瞪讼,那么钧椰,C++在給了你足夠的繩子把你的鄰居全部捆起來之后,還給了你足夠的繩子讓你為一艘小帆船裝上帆符欠,最后你還有足夠的繩子把自己吊死在帆船的桅桿上”.呵呵嫡霞,相當(dāng)?shù)募馑峥瘫“?里面有一句對操作系統(tǒng)的評價(jià)是這樣的:“The fundamental difference between Unix and the Macintosh operating system is that Unix was designed to please programmers, whereas the Mac was designed to please users. (Windows希柿, on the other hand诊沪, was designed to please accountants.”(Windows設(shè)計(jì)給會計(jì)人員?曾撤!連計(jì)算機(jī)用戶都不是了端姚,呵呵)
不過,我可以感覺得到這本書的作者在書中對Unix的感情是比較復(fù)雜的挤悉,愛恨交加渐裸,在書的最后有這樣一句話“would anyone have spent this much time and effort writing about how much they hated Unix if they didn’t secretly love it? I’ll leave that to the readers to judge装悲, but in the end昏鹃, it really doesn’t matter: If this book doesn’t kill Unix, nothing will”.是的诀诊,如果Unix能夠存活這么長的時(shí)間洞渤,那么,不會有什么東西可以把他消滅了.
從《Unix痛恨者手冊》這本書属瓣,再加上Unix的歷史载迄,我們可以感到Unix的經(jīng)歷的風(fēng)風(fēng)雨雨讯柔,在Unix上面出現(xiàn)有種種教訓(xùn),近40年的歷程护昧,Unix歷經(jīng)磨難魂迄,幾近夭折,一路走來的確很不容易惋耙,讓人由衷感嘆.今天的Unix极祸,今天的軟件工業(yè)和以前相比已是不可同日而語.很大程度上,這些都要?dú)w功于這個(gè)充滿蒼桑的Unix.
后記
在中國怠晴,我們被微軟 (Microsoft) 所創(chuàng)造的文化所籠罩里.就在Unix出現(xiàn)革命性的轉(zhuǎn)變遥金,在Unix影響計(jì)算機(jī)世界文化的那幾年里,科班出生專業(yè)開發(fā)人員學(xué)習(xí)的是 MS-DOS 和微軟的文化蒜田,我們猶如一個(gè)井底之蛙一樣稿械,對外面的番·習(xí)天覆地的變化無動于衷.微軟創(chuàng)造的文化在我們這里尤其地根深蒂固,我們幾乎忘記了另外一邊的Unix(參看《Unix 40年:Unix年鑒》冲粤、《Unix 40年:昨天美莫,今天和明天》).
在那充滿激情的 Unix 的歲月里,大伙為了科研目的或個(gè)人興趣在Unix上進(jìn)行各種開發(fā)梯捕,并且不計(jì)較金錢利益厢呵,將這些源碼公開,互相共享.在那里傀顾,開發(fā)和自由成為主題襟铭,正因?yàn)槿绱耍?dāng)今的世界才如此豐富多采.在40年Unix文化和技術(shù)積淀的里面短曾,蘊(yùn)涵著比較純正的計(jì)算機(jī)文化和思想.
縱觀整個(gè) Unix 的歷史過程中寒砖,許許多多的程序員、工程師前輩們在Unix中所摸爬滾打嫉拐,他們的辛勤地哩都、他們嘔心瀝血地跟隨Unix,努力建立一個(gè)繁榮的計(jì)算機(jī)世界的文明.Unix不是一個(gè)簡簡單單的操作系統(tǒng).有人說婉徘,Unix是程序員設(shè)計(jì)給程序員的漠嵌,一點(diǎn)沒錯(cuò).Unix的近40年歷史造就了它的博大精深,它給程序員們帶來的絕不僅僅只是技術(shù)上的知識.它的失誤盖呼,它的無奈儒鹿,它的精神,它的榮耀塌计,它從技術(shù)和思想上都啟迪著我們.對于程序員來說挺身,學(xué)習(xí)Unix就等同于向前輩程序?qū)W習(xí).無論你是什么樣的程序員侯谁,你都應(yīng)該了解Unix锌仅,這是開發(fā)人員的根章钾,前面的開發(fā)者造就了它,而它又在引領(lǐng)后面的開發(fā)人員热芹,它是前輩程序員們交給我們的一份禮物贱傀,一個(gè)接力棒,它是開發(fā)人員賴以生存的土壤伊脓,是上一輩程序員留給我們這一代程序員開啟未來的鑰匙.Unix就像一個(gè)程序員教父一樣府寒,理當(dāng)受到我們的尊敬和崇拜.