Unix傳奇

                                                      《Unix 傳奇》                html

                                                                                                         做者: 陳皓git

        瞭解過去,咱們才能知其然,更知因此然。總結過去,咱們纔會知道咱們明天該如何去規劃,該如何去走。在時間的滾輪中,許許多的東西就像流星同樣一閃而逝,而有些東西卻能經受着時間的考驗散發着經久的魅力,讓人津津樂道,流傳至今。要知道明天怎麼去選擇,怎麼去作,不是盲目地跟從今天各類各樣琳琅滿目前沿技術,而應該是去 —— 認認真真地瞭解和回顧歷史。程序員

Unix是目前還在存活的操做系統的元老了,走過了近乎40年的歷程。在技術更新如此迅速的計算機世界的今天,Unix始終保持它那神聖的光環,它那曲折和使人嘆息的歷史,以及由它引起的思想變革,對當今計算機文化形成的深遠影響,近40年所產生的人和事,讓它成爲了一個傳奇,不能不讓人爲之驚歎。web

這是一段全部從事計算機行業人員尤爲是軟件開發人員須要瞭解的歷史。Unix的傳奇歷史是整個計算機世界文化最具表明性的,它對整個計算機世界文化的影響也是最巨大,最深遠的。他給人帶來的不僅僅的對過去的回味,更爲咱們帶來了計算機世界的新思潮。shell

瞭解這段的歷史的人,才能體會計算機世界變遷過程當中的是是非非,才能瞭解計算機世界中的文化,從而才能參與到整個計算機革命的大潮中。但願這段歷史,這篇文章能讓你感覺到計算機世界那強力的脈搏,從而讓你踏上這條使人充滿激情的道路。數據庫

下面是本文的大綱:編程

Unix起源瀏覽器

Unix分裂bash

Unix的法律糾紛服務器

GNU開源組織

Linux橫空出世

Linux今天的領袖

Unix與黑客文化

Unix的歷史教訓

Unix 家族譜

Unix的特色

Unix的影響和哲學

Unix痛恨者手冊

Unix 起源

回顧Unix歷史,咱們就要說一下一個叫MULTICS(Multiplexed Information and Computing Service)的項目。上世紀六十年代時,大部份計算機都是採用批處理(Batch Processing)的方式(也就是說,看成業積累必定數量的時候,計算機纔會進行處理)。那時,咱們熟知的美國電話及電報公司(American Telephone and Telegraph Inc.;AT&T)、通用電器公司(General Electrics;G.E.)及麻省理工學院(Massachusetts Institute of Technology;MIT)計劃合做開發一個多用途(General-Purpose)、分時(Time-Sharing)及多用戶(Multi-User)的操做系統,也就是這個MULTICS,其被設計運行在GE-645大型主機上。不過,這個項目因爲太過複雜,整個目標過於龐大,糅合了太多的特性,進展太慢,幾年下來都沒有任何成果,並且性能都很低。因而到了1969年2月,貝爾實驗室(Bell Labs)決定退出這個項目。

熟悉這段歷史的人都知道,貝爾實驗室中的有個叫Ken Thompson的人,他爲MULTICS這個操做系統寫遊戲了個叫「Space Travel」的遊戲,在MULTICS上通過實際運行後,他發現遊戲速度很慢並且耗費昂貴 —— 每次運行會花費75美圓。退出這個項目之後。他爲了讓這個遊戲能玩,因此他找來Dennis Ritchie爲這個遊戲開發一個極其簡單的操做系統。這就是後來的Unix。(值得一提的是,當時他們本想在DEC-10上寫,後來沒有申請到,只好在實驗室的牆角邊找了一臺被人遺棄的Digital PDP-7的迷你計算機進行他們的計劃,這臺計算機上連個操做系統都沒有,因而他們用匯編語言僅一個月的時間就開發了一個操做系統的原型)他們的同事Brian Kernighan很是不喜歡這個系統,嘲笑Ken Thompson說:「你寫的系統好真差勁,乾脆叫Unics算了。」Unics的名字就是相對於MULTICS的一種戲稱,後業改爲了Unix。因而,Unix就在這樣被遊戲和玩笑創造了,當時是1969年8月。也就是這一年,Linux之父Linus Torvalds在芬蘭出生了。

1971年,Ken Thompson寫了充分長篇的申請報告,申請到了一臺PDP-11/24的機器。因而Unix初版出來了。在一臺PDP-11/24的機器上完成。這臺電腦只有24KB的物理內存和500K磁盤空間。Unix佔用了12KB的內存,剩下的一半內存能夠支持兩用戶進行Space Travel的遊戲。而著名的fork()系統調用也就是在這時出現的。

到了1973年的時候,Ken Thompson 與Dennis Ritchie感到用匯編語言作移植太過於頭痛,他們想用高級語言來完成第三版,對於當時徹底以彙編語言來開發程序的年代,他們的想法算是至關的瘋狂。一開始他們想嘗試用Fortran,但是失敗了。後來他們用一個叫BCPL(Basic Combined Programming Language)的語言開發,他們整合了BCPL造成B語言,後來Dennis Ritchie以爲B語言仍是不能知足要求,就是就改良了B語言,這就是今天的大名鼎鼎的C語言。因而,Ken Thompson 與Dennis Ritchie成功地用C語言重寫了Unix的第三版內核。至此,Unix這個操做系統修改、移植至關便利,爲Unix往後的普及打下了堅實的基礎。而Unix和C完美地結合成爲一個統一體,C與Unix很快成爲世界的主導。

Unix的第一篇文章 「The UNIX Time Sharing System」由Ken Thompson和Dennis

Ritchie於1974年7月的 the Communications of the ACM發表。這是UNIX與外界的首次接觸。結果引發了學術界的普遍興趣並對其源碼索取,因此,Unix第五版就以「僅用於教育目的」的協議,提供給各大學做爲教學之用,成爲當時操做系統課程中的範例教材。各大學公司開始經過Unix源碼對Unix進行了各類各樣的改進和擴展。因而,Unix開始普遍流行。


Ken Thompson & Dennis Ritchie,

 

Unix分裂

1978年,對 Unix而言是革命性的一年;由於學術界的老大柏克利大學(UC Berkeley),推出了一份以第六版爲基礎,加上一些改進和新功能而成的 Unix。這就是著名的「1 BSD(1st Berkeley Software Distribution)」,開創了Unix的另外一個分支:BSD 系列。 同時期,AT&T成立USG(Unix Support Group),將 Unix變成商業化的產品。今後,BSD的 Unix 便和AT&T 的Unix 平起平坐,Unix就分爲System IV和4.x BSD這兩大主流,各自蓬勃發展。

1979年發佈的Unix 第七版被稱爲是「最後一個真正的Unix」,這個版本的Unix內核只有40K bytes。後來這個版本被移植到VAX機上(我在大學時學習C語言時用過這個VAX機,我還記得那時上VAX機最大的愛好就是使用talk命令和別人聊天,呵呵)。20世紀80年代相繼發佈的八、九、10版本只受權給了少數大學。

1982年,AT&T基於版本7開發了UNIX System Ⅲ的第一個版本,這是一個商業版本僅供出售。爲了解決混亂的UNIX版本狀況,AT&T綜合了其餘大學和公司開發的各類UNIX,開發了UNIX System V Release 1。這個新的UNIX商業發佈版本再也不包含源代碼,因此加州大學Berkeley分校繼續開發BSD UNIX,做爲UNIX System III和V的替代選擇。BSD對UNIX最重要的貢獻之一是TCP/IP。BSD 有8個主要的發行版中包含了TCP/IP:4.1c、4.二、4.三、4.3-Tahoe、4.3-Reno、Net二、4.4以及 4.4-lite。這些發佈版中的TCP/IP代碼幾乎是如今全部系統中TCP/IP實現的前輩,包括AT&T System V UNIX 和Microsoft Windows中的TCP/IP都參照了BSD的源碼。

同時,其餘一些公司也開始爲其本身的小型機或工做站提供商業版本的UNIX系統,有些選擇System V做爲基礎版本,有些則選擇了BSD。BSD的一名主要開發者,Bill Joy,在BSD基礎上開發了SunOS,並最終創辦了Sun Microsystems。

 

 

Bill Joy

1991年,一羣BSD開發者(Donn Seeley、Mike Karels、Bill Jolitz 和 Trent Hein)離開了加州大學,創辦了Berkeley Software Design, Inc (BSDI)。BSDI是第一家在便宜常見的Intel平臺上提供全功能商業BSD UNIX的廠商。後來Bill Jolitz 離開了BSDI,開始了386BSD的工做。386BSD被認爲是FreeBSD、OpenBSD 和 NetBSD、DragonFlyBSD的先輩。

這是一個AT&T妄圖私有化的Unix的時代。爲了私有化Unix,1986年IEEE指定了一個委員會制定了一個一個開放做業系統的標準,稱爲 POSIX (Portable Operating Systems Interface)。最後加上個X,不知道是爲了好聽,仍是由於這本質上是UNIX的標準。固然,AT&T的Unix取得了這個標準制訂戰爭的勝利,還取得了Unix這個註冊商標。此時BSD的擁護者自喻爲冷酷無情的公司帝國的反抗軍。就銷售量來講,AT&T UNIX始終趕不上BSD/Sun。到1990年,AT&T與BSD版本已難明顯區分,由於彼此都有采用對方的新發明。

       這段時期,從實驗室出來的被全世界所分享的Unix,正處於被私有化的關鍵時期。

Unix的法律糾紛

Berkeley Software Design, Inc(BSDI)很快就與AT&T的UNIX Systems Laboratories(USL)附屬公司產生了法律糾紛,USL是AT&T註冊的公司。AT&T爲了擁有System V版權,以及Unix商標,爲了壟斷Unix,1992年,USL正式對BSDI提起訴訟,說BSD剽竊他的源碼。而最終告終了好評如潮的BSD系統。

因爲最後判決懸而未決,這樁法律訴訟將BSD後裔的開發,特別是自由軟件,延遲了兩年,這致使沒有法律問題的Linux內核得到了極大的支持。Linux跟386BSD的開發幾乎同時起步,Linus說,當時若是有自由的基於386的Unix-like操做系統,他就可能不會創造Linux。儘管沒法預料這給之後的軟件業究竟形成了什麼樣的影響(若是沒有這個法律糾紛,頗有可能沒有今天的革命性的Linux),但有一點能夠確定,Linux更加豐富了這塊土壤。

這場官司一直打到 AT&T將本身的Unix系統實驗室賣掉,新接手的Novell公司採起了一種比較開明的作法,容許BSDI自由發佈本身的BSD,可是前提是必須未來自於AT&T的代碼徹底刪除,因而誕生了4.4 BSD Lite版,因爲這個版本不存在法律問題,4.4BSD Lite成爲了現代BSD系統的基礎版本。

這樁訴訟最終在1994年1月告終,更多地知足了BSDI的利益。伯克利套件的18,000個文件中,只有3個文件要求刪除,另有70個文件要求修改,並顯示USL的版權說明。這項調解另外要求,USL不得對4.4BSD提起訴訟,無論是用戶仍是BSDI代碼的分發者。因而,BSD Unix走上了復興的道路。BSD的開發也走向了幾個不一樣的方向,並最終致使了FreeBSD、OpenBSD和NetBSD的出現。

從AT&T意識到了Unix的商業價值,再也不將Unix源碼受權給學術機構以來,到之後的幾十年,Unix仍在不斷變化,其版權全部者不斷變動,受權者的數量也在增長。Unix的版權曾經爲AT&T全部,以後Novell擁有了Unix,再以後Novell又將版權出售給了SCO(這一事實雙方尚存在爭議)。有不少大公司在取得了Unix的受權以後,開發了本身的Unix產品。(幾年前,據傳聞微軟爲了限制Linux,微軟讓SCO到法院告Linux剽竊其源碼)

因爲Unix是由C語言寫的,因此修改和移植都很容易,所以,不少商業公司及學術機構均加入這個操做系統的研發,各個不一樣版本的Unix也開始蓬勃發展。這才產生了今天這麼多的各式各樣的Unix衍生產品。如AIX、Solaris、HP-UX、IRIX、OSF、Ultrix等等。(這些商業化的Unix基本上都是源於AT&T受權的Unix System V)

Unix開源組織

AT&T的這種商業態度,讓當時許許多的Unix的愛好者和軟件開發者們感到至關的痛心和憂慮,他們認爲商業化的種種限制並不利於產生的發展,相反還能導制產品出現諸多的問題。隨着商業化Unix的版本的種種限制和諸多問題,引發了大衆的不滿和反對。因而,你們開始有組織地結成「反叛聯盟」以此對抗欺行罷市的AT&T等商業化行爲。

另外一方面,關於「大教堂」(集權、封閉、受控、保密)和「集市」(分權、公開、精細的同僚複審)兩種開發模式的對比成爲了新思潮的中心思想。這個新思潮對IT業產生了很是深遠影響。爲整個計算機世界帶來了革命性的價值觀。

此時,一個名叫Richard Stallman的領袖出現了,他認爲Unix是一個至關好的操做系統,若是你們都可以將本身所學貢獻出來,那麼這個系統將會更加的優異!他倡導的Open Source的概念,就是針對Unix這一事實反對實驗室裏的產品商業化私有化。儘管Stallman既不是、也歷來沒有成爲一個Unix程序員,但在後1980的大環境下,實現一個仿Unix操做系統成了他追求的明確戰略目標。Richard Stallman早期的捐助者大都是新踏入Unix土地的老牌ARPANET黑客,他們對代碼共享的使命感甚至比那些有更多Unix背景的人強烈。

爲了這個理想,Richard Stallman於1984年創立了GNU,計劃開發一套與Unix相互兼容的的軟件。1985 年 Richard Stallman 又創立了自由軟件基金會(Free Software Foundation)來爲 GNU 計劃提供技術、法律以及財政支持。儘管 GNU 計劃大部分時候是由我的自願無償貢獻,但 FSF 有時仍是會聘請程序員幫助編寫。當 GNU 計劃開始逐漸得到成功時,一些商業公司開始介入開發和技術支持。當中最著名的就是以後被 Red Hat 兼併的 Cygnus Solutions。

GNU組織的創建,延續了當年Unix剛出現時的情形,併爲這種情形創建了可靠的法律和財務保障。GNU 工程十幾年以來, 已經成爲一個對軟件開發主要的影響力量, 創造了無數的重要的工具。例如:強健的編譯器,有力的文本編輯器,甚至一個全功能的操做系統。從那時開始,許多程序員彙集起來開始開發一個自由的、高質量、易理解的軟件,讓這使得Unix社區生機勃勃,一派繁榮景象。

自90年代發起這個計劃以來,GNU 開始大量的產生或收集各類系統所必備的組件,像是——函數庫(libraries)、編譯器(compilers)、調式工具(debugs)、文本編輯器(text editors)、網站服務器(web server),以及一個Unix的使用者接口(Unix shell)等等,等等。但因爲種種緣由,GNU一直沒有開發操做系統的kernel。正當Richard Stallman在爲操做系統內核傷腦筋的時候,Linux出現了。

 

 

Linux橫空出世

1990年,Linus Torvalds仍是芬蘭赫爾辛基大學的一名學生,最初是用匯編語言寫了一個在80386保護模式下處理多任務切換的程序,後來從Minix(Andy Tanenbaum教授所寫的很小 的Unix操做系統,主要用於操做系統教學)獲得靈感,進一步產生了自認爲狂妄的想法——寫一個比Minix更好的Minix,因而開始寫了一些硬件的設備驅動程序,一個小的文件系統。這樣0.0.1版本的Linux就出來了,可是它只具備操做系統內核的勉強的雛形,甚至不能運行,你必須在有Minix的機器上編譯之後才能玩。這時候Linus已經徹底着迷而不想中止,決定踢開Minix,因而在1991年10 月5號發佈Linux 0.0.2版本,在這個版本中已經能夠運行bash 和gcc。

從一開始,Linus就決定自由擴散Linux,包括原代碼,隨即Linux引發黑客們(hacker)的注意,經過計算機網絡加入了Linux的內核開發。Linux傾向於成爲一個黑客的系統——直到今天,在Linux社區裏內核的開發被認爲是真正的編程。因爲一批高水平黑客的加入,使Linux 發展迅猛,幾乎一兩個禮拜就有新版或修正版的出現,到1993年末94年初,Linux 1.0終於誕生了!Linux 1.0已是一個功能完備的操做系統,並且內核寫得緊湊高效,能夠充分發揮硬件的性能,在4M內存的80386機器上也表現得很是好,至今人們還在津津樂道。時至今日,kernel的版本已經出到2.6。Linux的發展不像傳統的軟件工程,它徹底是透過網絡,集合世界各地的高手而成的一套操做系統,在這裏咱們也能夠見識到網絡快速傳播的威力。Linux初次讓整個世界感受到了開源力量和網絡力量的如此強大。(Linux 的標誌和吉祥物是一隻名字叫作 Tux 的 企鵝,標誌的由來是由於Linus在澳洲時曾被一隻動物園裏的企鵝咬了一口,便選擇了企鵝做爲Linux的標誌。)

Linux 的歷史是和GNU緊密聯繫在一塊兒的。從1983年開始的GNU計劃致力於開發一個自由而且完整的類Unix操做系統,包括軟件開發工具和各類應用程序。到1991年 Linux 內核發佈的時候,GNU已經幾乎完成了除了系統內核以外的各類必備軟件的開發。在 Linus Torvalds 和其它開發人員的努力下,GNU組件能夠運行於Linux內核之上。整個內核是基於 GNU 通用公共許可,也就是GPL(GNU General Public License,GNU通用公共許可證)的,可是Linux內核並非GNU 計劃的一部分。1994年3月,Linux1.0版正式發佈,Marc Ewing成立了 Red Hat 軟件公司,成爲最著名的 Linux 分銷商之一。

嚴格來說,Linux這個詞自己只表示Linux內核,但在實際上人們已經習慣了用Linux來形容整個基於Linux內核,而且使用GNU 工程各類工具和應用程序的操做系統(也被稱爲GNU/Linux)。基於這些組件的Linux軟件被稱爲Linux發行版。通常來說,一個Linux發行套件包含大量的軟件,好比軟件開發工具,數據庫,Web服務器(例如Apache),X Window,桌面環境(好比GNOME和KDE),辦公套件(好比OpenOffice.org),等等。

1991至1995年間,Linux從概念型的0.1版本內核原型,發展成爲可以在性能和特性上均堪媲美專有Unix的操做系統,而且在連續正常工做時間等重要統計數據上戰勝了這些Unix中的絕大部分。1995年,Linux找到了本身的殺手級應用——開源的web服務器Apache。就像Linux,Apache出衆地穩定和高效。很快,運行Apache的Linux機器成了全球ISP平臺的首選。約60%的網站選用Apache,輕鬆擊敗了另兩個主要的專有型競爭對手。今天的LAMP(Linux , Apache, MySQL, PHP)已經成爲了架構Web服務器的主要首選。

現現在的Linux不但能夠裝在幾乎全部的主流服務器上,固然也包括桌面的X86系統中。其還經常被用於嵌入式系統,機頂盒、手機、交換機、遊戲機、PDA、網絡交換機、路由器、等等,都是由於Linux那精彩的內核。

Linux的出現,不只僅給世界帶來了一個免費的操做系統,也不只僅是對Unix自由、共享的文化的延續,它的出現帶給了計算機世界自Unix、GNU以來更爲成熟的思想和文化。

Linux今天的領袖

 

Linux和GNU關係是比較微妙的。那時,自由軟件基金會編寫的用戶軟件工具包鋪平了一條擺脫高成本專有軟件開發工具的前進道路。意識服從經濟,而不是領導:一些新手加入了RMS的革命運動,高舉GPL大旗,另外一些人則更認同總體意義上的Unix傳統,加入了反對GPL的陣營,但其餘大部分人置身事外,一心編碼。

Linus Torvalds巧妙地跨越了GPL和反GPL的派別之爭。他利用GNU工具包搭起了自創的Linux內核,用GPL的傳染性質保護它,但拒絕認同Richard Stallman的許可協議反映的思想體系計劃。Linus Torvalds明確表示他認爲自由軟件通常狀況下更好,但他偶爾也用專有軟件。即便在他本身的事業中,他也拒絕成爲狂熱分子。這一點極大地吸引了大多數黑客,他們雖然早就反感Richard Stallman的言辭,但他們的懷疑論一直缺個有影響力或者使人信服的代言人。而Linus Torvalds正好充當了這一角色。

Linus Torvalds使人愉快的實用主義及靈活而低調的行事風格,促使黑客文化在1993至1997年間取得了一連串使人驚奇的勝利,不只僅在技術上的成功,還讓圍繞Linux操做系統的發行、服務和支持產業有了堅實的開端。結果,他的名望和影響也一飛沖天。Torvalds成爲了互聯網時代的英雄;到1995年爲止,他只用了四年時間就在整個黑客文化界聲名顯赫,而Richard Stallman爲此花了十五年,並且他還遠遠超過了Stallman向外界販賣「自由軟件」的記錄。與Torvalds相比,Richard Stallman的言辭漸漸顯得既刺耳又無力。

今天,咱們也說不清楚是GNU Linux仍是Linux GNU。Linux既不排斥開源,也不排斥商業化,Linus認爲好的軟件是須要免費和商業化共同推動的。正是這種革命性的想法,造就了今天的Linux火紅的局面。Linux就像一股清泉流入了全部人的心中,引起了不少的啓迪和思考。

Unix與黑客文化

黑客的文化和Unix的商業化存在着必然的聯繫。自從Unix出現,黑客文化就與之而來。

1993初,一個悲觀的觀察家撰文指出,已經有理由認爲Unix的傳奇故事連同他帶有黑客文明將一同破產。許多人預測,從那時起Unix將在六月內死亡。他們很清楚,十年的Unix商業化,使自由跨平臺的Unix夢以失敗了結。Unix允諾的跨平臺可移植性,在一打大公司專有的Unix版本之間不停地鬥嘴中丟失,一個完美的操做系統最終淪爲多種版本的一團亂麻,這應該說是人類文明史上的一個重大悲劇。

在專有軟件社會中,只有像微軟同樣的「集權制,大教堂」生產方式才能成功。那個時代的人悲觀地相信,技術世界的我的英雄主義時代已經結束,軟件工業和發展中的互聯網絡將逐漸地由像微軟同樣的巨型企業支配,再也沒有「佐羅」,世界是愷撒大帝的世界,計算機文明將進入黑暗的帝國時代。黑客已經死了,自由不付存在。

自從Unix出現以來,第一代的Unix黑客彷佛垂垂老矣,衣食不飽( Berkeley計算機科學研究組在1994丟失了本身基金)。這是一個抑壓的時代。專有的商業Unix的結果證實那麼沉重、那麼盲目、那麼不適當,以至微軟可以用那次等技術的Windows搶走他們生存的空間,拿走他們的乾糧。黑客世界的殘餘力量被逼到了世界上的角落裏,苟延殘喘。

就在黑客文化日漸衰落之時,美國新聞週刊的資深記者Steven Levy完成了著名的《黑客列傳》一書,書中着力介紹了一我的物:Richard M. Stallman的故事,他是麻省理工學院(MIT)人工智能實驗室領袖人物,堅定反對實驗室的研究成果商業化。他是商業軟件社會中堅強的一員,決不隨波逐流,創建了全新的黑客文化。

Richard M. Stallman(他的登錄名RMS更爲人熟知)早在1970年代晚期就已經證實他是當時最有能力的程序員之一。Emacs編輯器就是他衆多發明中的一項。RMS的目標是將後1980的鬆散黑客社羣變成一臺有組織的社會化機器以達到一個單純的革命目標。也許他未意識到,他的言行與當年卡爾·馬克思號召產業無產階級反抗工做的努力一模一樣。RMS宣言引起的爭論至今仍存於黑客文化中。他的綱要遠不止於維護一個代碼庫,已經暗含了廢除軟件知識產權主張的精髓。RMS經過「自由軟件(free software)」讓黑客文化更加有自我意識。固然,這個充滿魅力又具爭議的人物自己已經成爲了一個黑客文化英雄。

只有癡迷的「黑客」和具備創造力的怪人結成的反叛聯盟才能把咱們從愚蠢中拯救出來——他們接着教導咱們,真正的專業和奉獻精神,正是咱們在屈服於世俗觀念的「合理商業作法」以前的所做所爲。 ——《The Art of Unix Programming》

RMS讓世界上全部的人都知道,入侵電腦系統只是低級不入流的黑客乾的事,真正的黑客,是爲了自由,爲了軟件的自由,爲了挑戰計算機世界中的霸權主義而鬥爭。他們不是街頭小混混,他們更像是綠林好漢,更像是羅賓漢,更像是佐羅。就像渴望民主的人民同專制的政府鬥爭同樣。RMS領導着許多的黑客經過互聯網向專有軟件發出宣戰。

X Windows是首批由服務於全球各地不一樣組織的許多我的以團隊形式開發的大規模開源項目之一。電子郵件使創意得以在這個羣體中快速傳播,問題由此得以快速解決,而開發者能夠人盡其才。軟件更新能夠在數小時以內發送到位,使得每一個節點在整個開發過程當中步調一致。網絡改變了軟件的開發模式。

另外一方面,RMS的理論體系有許多東西很是有爭議,他的GPL被認爲是一種「病毒式」的協議,BSD的fans和老牌Unix黑客們認爲,他們編寫Unix的年頭都比GPL聲明要長得多,GPL依然有太多的限制,而BSD協議則比GPL更加的自由。另外一方面,RMS走向了另外一個極端,他是徹底反版權的,反商業化的。把軟件產品從強制收費推向了強制免費、共享和開源,這也爲他帶來了許多許多的爭議。

在RMS組織黑客鬧革命的年代裏,沒有多少黑客認同於RMS的理論體系,更多的他們參與GNU只是爲了體現那種在互聯網上協同工做,使人激動的工做模式。自從GNU設立以來,爭議不斷,而黑客文化卻從未有統一在他的理想體系之下。

自從Linux出現之後,一個新的黑客領袖出現了,Linus Torvalds的中庸態度網聚了世界上頂尖的黑客,其繞過了GPL和反GPL的派系之爭,他使用GNU的工具從而以GPL的「傳染性」保護了Linux,但他同時也不認可RMS的理論思想體系,他即開源,又支持商業化。雖然,他沒有帶給黑客們什麼重要的思想體系或統一的價值觀,但他整合了全世界黑客的陣營,讓全部的黑客的行爲都圍繞着Linux這一事物進行。他以「用自由軟件是由於它運行得更好」垂手可得地蓋過了「用自由軟件是由於全部軟件都該是自由的」。

1998年初,這種新思潮促使網景公司(Netscape Communications)公佈了其Mozilla瀏覽器的源碼。媒體對此事件的關注促成了Linux在華爾街的上市,推進了1999-2001年間科技股的繁榮。事實證實,此事不管對黑客文化的歷史仍是對Unix的歷史都是一個轉折點。

Unix的歷史教訓

 

下面的文字出自《The Art of Unix Programming》(Unix編程藝術)。令今天咱們全部人所反思。

在Unix歷史中,最大的規律就是:

距開源越近就越繁榮。任何將Unix專有化的企圖,只能陷入停滯和衰敗。

回顧過去,咱們早該認識到這一點。1984年至今,咱們浪費了十年時間才學到這個教訓。若是咱們往後不思悔改,可能還得大吃苦頭。

雖然咱們在軟件設計這個重要但狹窄的領域比其餘人聰明,但這不能使咱們擺脫對技術與經濟相互做用影響的茫然,而這些就發生在咱們的眼皮底下。即便Unix社區中最具洞察力、最具遠見卓識的思想家,他們的眼光終究有限。對從此的教訓就是:過分依賴任何一種技術或者商業模式都是錯誤的——相反,保持軟件及其設計傳統的的靈活性纔是長存之道。

另外一個教訓是:別和低價而靈活的方案較勁。或者,換句話說,低檔的硬件只要數量足夠,就能爬上性能曲線而最終獲勝。經濟學家Clayton Christensen稱之爲「破壞性技術」,他在《創新者窘境》(The Innovator"s Dilemma)[Christensen]一書中以磁盤驅動器、蒸汽挖土機和摩托車爲例闡明瞭這種現象的發生。當小型機取代大型機、工做站和服務器取代小型機以及日用Intel機器又取代工做站和服務器時,咱們也看到了這種現象。開源運動得到成功正是因爲軟件的大衆化。Unix要繁榮,就必須繼續採用吸納低價而靈活的方案的訣竅,而不是去反對它們。

最後,舊學派的Unix社區因採用了傳統的公司組織、財務和市場等命令機制而最終未能實現「職業化」。只有癡迷的「黑客」和具備創造力的怪人結成的反叛聯盟才能把咱們從愚蠢中拯救出來——他們接着教導咱們,真正的專業和奉獻精神,正是咱們在屈服於世俗觀念的「合理商業作法」以前的所做所爲。

Unix族譜

Unix的故事仍舊延續着……,許多網站也爲這段歷史留下記錄。一個詳細記錄Unix歷史的網站(http://www.levenez.com/unix/),這個網站忠實記載着1969~2005 年Unix發展的大事,並且還有 PDF 檔案可供下載,上面有一個龐大的UNIX家族版本樹,讓人歎爲觀止。網站的首頁陳列每一個時期Unix的歷史,也表明着無數工程師的心血與努力。

下面是一個簡單的Unix的族譜:

     |--AT&T (1969)-----

     |                  |

     |              V6 (1976)

     |                  |

     |              V7 (1979)

     |                  |

     |   Novell owns AT&T"s Unix (by 1994)

     |     _____________|____________________

     |     |       |      |        |         |

     |    AIX    IRIX    SCO   HP-UX   Solaris 2.X

     |   (IBM)   (SGI)          (HP)     (Sun)

     |

     |

     |--Berkley (1977)-----

     |                     |

     |                  1BSD (1977)

UNIX-|                     |

     |                4.4BSD (1993)

     |                     |

     |                   Net/2

     |                     |

     |               4.4BSD-Lite (by 1995)

     |     ________________|____________________________________

     |     |       |          |         |          |            |

     |   SunOS   Ultrix   NetBSD    OSF/1   NeXTSTEP   Mac OS X

     |   (Sun)   (DEC)   (Various)  (DEC)    (NeXT)    (Apple)

     |                   (FreeBSD)

     |

     |

     |--Hybrids----

                   |

                Linux (Various)

                   |

                   |____________________________________________

                   |    |      |          |              |      |

                   | RedHat  Debian  Mandrake   Slackware    S.u.S.E.

                   |                          (Walnut Creek)

                   |

                   |_____________________________________________

                       |        |           |          |        |

                    MkLinux  LinuxPPC  TurboLinux  OpenLinux  CorelLinux

                    (Apple)                        (Caldera)   (Corel)

Unix的特色

如今的文獻中提到Unix基本上是說,由Ken Thompson和Dennis Ritchie共同開發的。而經過歷史咱們也能發現,Unix的主要是由Ken Thompson寫下的。但在學術界,Dennis Ritchie的名字每每被排在了Ken Thompson前面的。這就是由於,Dennis Ritchie不但發明了C語言,並且當時他設計Unix操做系統的設計思想,影響了整個世界,直到今天。

當時,他們開發UNIX,沒有正式立項,是Ken Thompson和Dennis Ritchie等少數幾我的偷偷乾的,若是一切都要從頭重新設計,那幾乎是不可能的。因此,Unix吸收與借鑑了Multics的經驗,如內核,進程,層次式目錄,面向流的I/O,把設備看成文件,……等等。可是Unix在繼承中又有創新,好比Unix採用一種無格式的文件結構,文件由字節串加\0組成。這帶來兩大好處:一是在說明文件時沒必要加進許多無關的「填充物」,二是任何程序的輸出可直接用做其餘任何程序的輸入,沒必要通過轉換。後面這一點叫作「管道」(piping),這就是Unix獨創的。此外,像把設備看成文件,從而簡化了設備管理這一操做系統設計中的難題,雖然不是UNIX的發明,可是實現上它採用了一些新方法,比Multics更高明一些。

下面是Unix的特色:(30多年過去了,這些東西早已變成經典)

l         Everything (including hardware) is a file

全部的事物(甚至硬件自己)都是一個的文件。

l         Configuration data stored in text

以文件形式儲存配置數據。

l         Small, single-purpose program

程序儘可能朝向小而單一的目標設計

l         Avoid captive user interfaces

儘可能避免使人困惑的用戶接口

l         Ability to chain program together to perform complex tasks

將幾個程序連結起來,處理大而複雜的工做。

Unix的影響和哲學

Unix是第三次工業革命中計算機軟件領域最具表明性的產物。在這近40年中,由Unix形成的影響是最有深遠意義的。就我看來,Unix爲軟件領域帶來了至少如下有積極的東西,由這些東西所引起的直接或間接的事物更是舉不勝數。

1)  軟件開發的若干哲學和思想。

2)  全民參與推進軟件,代碼共享的模式。

3)  開啓了黑客文化和開源項目。

4)  免費和商業的完美結合的Linux。

5)  C語言,然後發展的C++,Java等等類C的語言和腳本。

6)  TCP/IP,其的Socket編程已成爲今天通用的網絡編程主流。

不能不說,AT&T雖然發展了Unix,但今天Unix的混亂的局面也和AT&T 有着直接緣由。但反過來講,若是沒有AT&T的反面教材,今天的GNU/Linux頗有可能也不會出現。AT&T到底是限制了Unix的發展,仍是以反面示例促進了Unix社區,已很差評說。今天,軟件是商業化好仍是開源好的爭論還在繼續,縱觀這幾十年來Unix的歷史,Linux的劃時代地出現。相信你會得出本身的結論。無論怎麼樣,Unix的經歷對計算機領域貢獻的不僅僅是技術,他給咱們提供了豐富而生動的教材。特別是Unix引起的哲學,讓今天的咱們依然受益匪淺。

說到Unix爲咱們所帶來的軟件開發的哲學,我必須要說一說。Unix遵循的原則是KISS(Keep it simple, stupid)。在http://en.wikipedia.org/wiki/Unix_philosophy 上有不少的基本上大同小異的Unix哲學,都是很經典的。

Doug McIlroy 是認爲UNIX的哲學是這樣的:三條哲學,簡明扼要,就是這三條哲學貫穿着整個Unix世界。尤爲是第一條「do one thing and do it well」真是至關精彩!

l         Write programs that do one thing and do it well.

l         Write programs to work together.

l         Write programs to handle text streams, because that is a universal interface.

只要是Unix的程序員,他們會比別的程序員在任什麼時候候都會不停地強調着這三條哲學。

而《The Art of Unix Programming》總結了下面這些哲學,都是至理名言啊。

  • Rule of Modularity: Write simple parts connected by clean interfaces.
  • Rule of Clarity: Clarity is better than cleverness.
  • Rule of Composition: Design programs to be connected to other programs.
  • Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
  • Rule of Simplicity: Design for simplicity; add complexity only where you must.
  • Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
  • Rule of Transparency: Design for visibility to make inspection and debugging easier.
  • Rule of Robustness: Robustness is the child of transparency and simplicity.
  • Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.
  • Rule of Least Surprise: In interface design, always do the least surprising thing.
  • Rule of Silence: When a program has nothing surprising to say, it should say nothing.
  • Rule of Repair: When you must fail, fail noisily and as soon as possible.
  • Rule of Economy: Programmer time is expensive; conserve it in preference to machine time.
  • Rule of Generation: Avoid hand-hacking; write programs to write programs when you can.
  • Rule of Optimization: Prototype before polishing. Get it working before you optimize it.
  • Rule of Diversity: Distrust all claims for "one true way".
  • Rule of Extensibility: Design for the future, because it will be here sooner than you think.

X Windows 的設計者 Mike Gancarz 給出了下面九條哲學思想

  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.

在今天,這種思想依然被傳承着,在影響着世界上各個角落的每個程序員。

Unix痛恨者手冊

這裏還須要值得一提的是一本叫《The Unix-Haters Handbook》,中文譯作《Unix痛恨者手冊》。能夠在這裏下載:http://research.microsoft.com/~daniel/uhh-download.html。其中以調侃的語氣聲討了Unix的種種不是。雖然這是十年前的一本書了,但仍是值得一讀。這本書指出了許多Unix的設計錯誤,指出了種種看起來很合理的設計走向了荒謬,還這樣調侃了C語言——「若是說C語言給足了讓你上吊的繩子,那麼,C++在給了你足夠的繩子把你的鄰居所有捆起來以後,還給了你足夠的繩子讓你爲一艘小帆船裝上帆,最後你還有足夠的繩子把本身吊死在帆船的桅杆上」。呵呵,至關的尖酸刻薄吧。裏面有一句對操做系統的評價是這樣的:「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設計給會計人員?!連計算機用戶都不是了,呵呵)

不過,我能夠感受獲得這本書的做者在書中對Unix的感情是比較複雜的,愛恨交加,在書的最後有這樣一句話「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可以存活這麼長的時間,那麼,不會有什麼東西能夠把他消滅了。

從《Unix痛恨者手冊》這本書,再加上Unix的歷史,咱們能夠感到Unix的經歷的風風雨雨,在Unix上面出現有種種教訓,近40年的歷程,Unix歷經磨難,幾近夭折,一路走來的確很不容易,讓人由衷感嘆。今天的Unix,今天的軟件工業和之前相比已經是不可同日而語。很大程度上,這些都要歸功於這個充滿蒼桑的Unix。

 

後記

       在中國咱們開始學習計算機的時候,咱們被Microsoft所創造的文化所籠罩裏。就在Unix出現革命性的轉變,在Unix影響計算機世界文化的那幾年裏,科班出生專業開發人員學習的是MS-DOS和微軟的文化,咱們猶如一個井底之蛙同樣,對外面的翻天覆地的變化無動於衷。微軟創造的文化在咱們這裏尤爲地根深蒂固,咱們幾乎忘記了另一邊的Unix。

在那充滿激情的Unix的歲月裏,大夥爲了科研目的或我的興趣在Unix上進行各類開發,而且不計較金錢利益,將這些源碼公開,互相共享。在那裏,開發和自由成爲主題,正由於如此,當今的世界才如此豐富多采。在近40年Unix文化和技術積澱的裏面,蘊涵着比較純正的計算機文化和思想。

縱觀整個Unix的歷史過程當中,許許多多的程序員、工程師前輩們在Unix中所摸爬滾打,他們的辛勤地、他們嘔心瀝血地跟隨Unix,努力創建一個繁榮的計算機世界的文明。Unix不是一個簡簡單單的操做系統。有人說,Unix是程序員設計給程序員的,一點沒錯。Unix的近40年曆史造就了它的博大精深,它給程序員們帶來的毫不僅僅只是技術上的知識。它的失誤,它的無奈,它的精神,它的榮耀,它從技術和思想上都啓迪着咱們。對於程序員來講,學習Unix就等同於向前輩程序學習。不管你是什麼樣的程序員,你都應該瞭解Unix,這是開發人員的根,前面的開發者造就了它,而它又在引領後面的開發人員,它是前輩程序員們交給咱們的一份禮物,一個接力棒,它是開發人員賴以生存的土壤,是上一輩程序員留給咱們這一代程序員開啓將來的鑰匙。Unix就像一個程序員教父同樣,理當受到咱們的尊敬和崇拜。

參考資料

         Peter H. Salus 的《A Quarter Century of UNIX》,這被認爲是UNIX的標準歷史。

         Eric S. Raymond 的《The Art of Unix Programming》

         http://www.wikipedia.org/  維基百科

         http://www.computerhope.com/history/  Computer History

         http://www.lotsir.com/Blog/article.asp?id=494  Lotsir"s Blog — 《Unix&Linux歷史重溫》

         http://www.aka.org.cn/Docs/hacker-history.html 《黑客文化簡史》

         http://www.simson.net/ref/ugh.pdf  《The UNIX-HATERS Handbook》

         http://free-electrons.com/doc/free_software/img0.html 《GNU/Linux Free Software》幻燈片

         http://cm.bell-labs.com/cm/cs/who/dmr/hist.html  Dennis M. Ritchie 《The Evolution of the Unix Time-sharing System》

相關文章
相關標籤/搜索