Unix和Linux的的發展史
Unix是目前還在存活的作業系統的元老了,走過了40年的歷程。由它引發的思想變革,對當今計算機文化造成的深遠影響。這是一段所有從事計算機行業人員尤其是軟體開發人員需要了解的歷史。Unix的傳奇歷史是整個計算機世界文化最具代表性的,它對整個計算機世界文化的影響也是最巨大,最深遠的。他給人帶來的不單單的對過去的回味,更為我們帶來了計算機世界的新思潮。
Unix 起源
回顧Unix歷史,我們就要說一下一個叫MULTICS的專案。上世紀六十年代時,大部份計算機都是採用批處理的方式(也就是說,當作業積累一定數量的時候,計算機才會進行處理)。那時,我們熟知的美國電話及電報公司(AT&T)、通用電器公司(G。E。)及麻省理工學院(MIT)計劃合作開發一個多用途、分時及多使用者的作業系統,也就是這個MULTICS,其被設計執行在GE-645大型主機上。不過,這個專案由於太過複雜,整個目標過於龐大,糅合了太多的特性,進展太慢,幾年下來都沒有任何成果,而且效能都很低。於是到了1969年2月,貝爾實驗室決定退出這個專案。
熟悉這段歷史的人都知道,貝爾實驗室中的有個叫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的語言開發,他們整合了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開始廣泛流行。
Unix分裂
1978年,對 Unix而言是革命性的一年;因為學術界的老大柏克利大學,推出了一份以第六版為基礎,加上一些改進和新功能而成的 Unix。這就是著名的“1 BSD(1st Berkeley Software Distribution)”,開創了Unix的另一個分支:BSD 系列。 同時期,AT&T成立USG,將 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年代相繼釋出的8、9、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。2、4。3、4。3-Tahoe、4。3-Reno、Net2、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。
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的法律糾紛
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 開始大量的產生或收集各種系統所必備的元件,像是——函式庫、編譯器、調式工具、文字編輯器、網站伺服器,以及一個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的言辭漸漸顯得既刺耳又無力。(參看《Linus Torvalds 語錄 Top 10》)
今天,我們也說不清楚是GNU Linux還是Linux GNU。Linux既不排斥開源,也不排斥商業化,Linus認為好的軟體是需要免費和商業化共同推進的。正是這種革命性的想法,造就了今天的Linux火紅的局面(參看《誰寫了Linux》、《Linux基金會的廣告》、《Linux Distribution Timeline》)。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歷史中,最大的規律就是: (看看《誰寫了Linux》你就會知道這一規律)
距開源越近就越繁榮。任何將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的特點
現在的文獻中提到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採用一種無格式的檔案結構,檔案由位元組串加組成。這帶來兩大好處:一是在說明檔案時不必加進許多無關的“填充物”,二是任何程式的輸出可直接用作其他任何程式的輸入,不必經過轉換。後面這一點叫做“管道”(piping),這就是Unix首創的。此外,像把裝置當作檔案,從而簡化了裝置管理這一作業系統設計中的難題,雖然不是UNIX的發明,但是實現上它採用了一些新方法,比Multics更高明一些。
下面是Unix的特點:(30多年過去了,這些東西早已變成經典)
◦Everything (including hardware) is a file
◦所有的事物(甚至硬體本身)都是一個的檔案。
◦Configuration data stored in text
◦以文字形式儲存配置資料。
◦Small, single-purpose program
◦程式儘量朝向小而單一的目標設計
◦Avoid captive user interfaces
◦儘量避免令人困惑的使用者介面
◦Ability to chain program together to perform complex tasks
◦將幾個程式連結起來,處理大而複雜的工作。
Unix的影響和哲學
Unix是第三次工業革命中計算機軟體領域最具代表性的產物。在這近40年中,由Unix造成的影響是最有深遠意義的。就我看來,Unix為軟體領域帶來了至少以下有積極的東西,由這些東西所引發的直接或間接的事物更是舉不勝數。
軟體開發的若干哲學和思想。
全民參與推動軟體,程式碼共享的模式。
開啟了黑客文化和開源專案。
免費和商業的完美結合的Linux。
C語言,而後發展的C++,Java等等類C的語言和指令碼。(參看《C語言的演變史》)
TCP/IP,其的Socket程式設計已成為今天通用的網路程式設計主流。(參看《到處都是Unix的胎記》)
不能不說,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”真是相當精彩!
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的程式設計師,他們會比別的程式設計師在任何時候都會不停地強調著這三條哲學。
而《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 給出了下面九條哲學思想
Small is beautiful。
Make each program do one thing well。
Build a prototype as soon as possible。
Choose portability over efficiency。
Store data in flat text files。
Use software leverage to your advantage。
Use shell scripts to increase leverage and portability。
Avoid captive user interfaces。
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 40年:Unix年鑑》、《Unix 40年:昨天,今天和明天》)。
在那充滿激情的Unix的歲月裡,大夥為了科研目的或個人興趣在Unix上進行各種開發,並且不計較金錢利益,將這些原始碼公開,互相共享。在那裡,開發和自由成為主題,正因為如此,當今的世界才如此豐富多采。在40年Unix文化和技術積澱的裡面,蘊涵著比較純正的計算機文化和思想。
縱觀整個Unix的歷史過程中,許許多多的程式設計師、工程師前輩們在Unix中所摸爬滾打,他們的辛勤地、他們嘔心瀝血地跟隨Unix,努力建立一個繁榮的計算機世界的文明。Unix不是一個簡簡單單的作業系統。有人說,Unix是程式設計師設計給程式設計師的,一點沒錯。Unix的近40年曆史造就了它的博大精深,它給程式設計師們帶來的絕不僅僅只是技術上的知識。它的失誤,它的無奈,它的精神,它的榮耀,它從技術和思想上都啟迪著我們。對於程式設計師來說,學習Unix就等同於向前輩程式學習。無論你是什麼樣的程式設計師,你都應該瞭解Unix,這是開發人員的根,前面的開發者造就了它,而它又在引領後面的開發人員,它是前輩程式設計師們交給我們的一份禮物,一個接力棒,它是開發人員賴以生存的土壤,是上一輩程式設計師留給我們這一代程式設計師開啟未來的鑰匙。Unix就像一個程式設計師教父一樣,理當受到我們的尊敬和崇拜。
相關推薦
Unix和Linux的的發展史
首先說明本帖是轉的,旨在讓大家瞭解科技界的一些故事,每一種科技的進步都伴隨開發者們不懈的努力! Unix是目前還在存活的作業系統的元老了,走過了40年的歷程。由它引發的思想變革,對當今計算機文化造成的深遠影響。這是一段所有從事計算機行業人員尤其是軟體開發人員需要了解的歷史。Unix的傳奇歷史是整個計算機世界
Unix和Linux的區別和聯系
源代碼 linux 操作系統 軟件 硬件 }區別:}1) UNIX系統大多是與硬件配套的,而Linux則可運行在多種硬件平臺上. }2) UNIX是商業軟件,而Linux是自由軟件,免費、公開源代碼的. }聯系:}Linux的思想源於Unix }遵從POSIX(可移植操作系統環境)規範的一
怎樣查看unix和linux的HBA卡的WWN地址
unix linux hbaAIX: 1,獲得AIX主機連接的光纖設備:root@test:/# lsdev -Cc adapter -S a |grep fcs fcs0 Available 05-00 4Gb FC PCI Express Adapter (df1000fe) fcs1 A
信號處理是Unix和LInux系統為了響應某些狀況而產生的事件
ctrl+c 系統 inux str bubuko lin inf 發送 結束 信號處理是Unix和LInux系統為了響應某些狀況而產生的事件,通常內核產生信號,進程收到信號後采取相應的動作。 例如當我們想強制結束一個程序的時候,我們通常會給它發送一個信號,然後該進程會捕
【Linux】Unix和Linux的歷史及關係
Unix和Linux的關係 悉悉嗦嗦 Unix的歷史 Linux簡介 Mac OS 悉悉嗦嗦 對於接觸計算機不久的同學來說,可能經常聽到類似:Unix,Linux,類Unix
UNIX和Linux Shell正則表示式語法介紹
非常奇怪,直到今天我仍然能重複週六早上的經典歌曲“Conjunction Junction”。這是好事(看了太多電視)還是壞事(也許是我現在職業的先兆)仍然有待討論。不管怎樣,這首小調在歡快的節奏下傳遞了基本的資訊。 我還沒有為學習 UNIX 構想出與“Conjunction Junction”相似的作品,
Unix和Linux作業系統有什麼區別?
unix是在posix之前就有的,linux是在posix出來之後有的,最初的linux是仿製的minix,unix和linux很多軟體都是相通的,linux是UNIX的一個分支,別的分支還有freebsd等,UNIX是命令列下的系統 linux是加了窗體管理的系統。 UNIX是一個功能強大、效能全面的多
java入門---windows和Linux,UNIX,Solaris,FreeBSD下開發環境配置
java應用程序 target details 感覺 開發工具 org chm files java ide 首先來看Windows下的操作。我們需要下載java開發工具包JDK。下載地址:http://www.oracle.com/technetwork/java
Windows和linux雙系統——改動默認啟動順序
順序 ack 開機 默認 mar jsb con class 註意 電腦上裝了Windows 7和Ubantu雙系統,因為Linux系統用的次數比較少而且還是默認的啟動項對此非常不能容忍,因此得改動Windows為默認的啟動項。 因為電腦
Linux發展史
linux發展史一、從 Unix 到 Linux 這一段歷史 早在 Linux 出現之前的二十年 ( 大約在 1970 年代 , 就有一個相當穩定而成熟的操作系統存在了!那就是 Linux 的老大哥『 Unix 』是也!怎麽這麽說呢?!他們這兩個家夥有什麽關系呀?這裏就給他說一說啰!眾所皆知的,
Setting up a EDK II build environment on Windows and Linux:搭建Windows和Linux開發環境[2.2]
set clu cto 無法安裝 urn ems water 了解 源代碼管理 Setting up a EDK II build environment on Windows and Linux:搭建Windows和Linux開發環境[2.2] 2015-07 北
自己主動化腳本ssh以及telnet發送命令並退出(windows和linux都適用)
version 代理 sta agen apply raw .net tun for 須要安裝putty,用到的命令是plink: [html] view plaincopy PuTTY Link: command-line connection utili
在windows和linux之間用SecureCRT來上傳和下載文件
命令行工具 鏈接 關閉 默認目錄 usr 按鈕 eas add 編譯安裝 SecureCRT可以使用linux下的zmodem協議來快速的傳送文件,使用非常方便.具體步驟:一.在使用SecureCRT上傳下載之前需要給服務器安裝lrzsz:A:CentOS中使用yum安裝即
讀取指定目錄下的所有文件(windows 和 linux 版)
char for files tdi hgfs oid 後綴 pau dst 筆者這裏用到了OpenCV,如果不需要用OpenCV代碼的話,可以將這部分代碼去掉即可。 windows vs2015環境代碼如下: #include <io.h> // 結構
tomcat 分別在window 和 Linux上配置SSL-安全問題
win const 火狐 隱患 ati then proto constrain ssl協議 公司項目收尾後。通過壓力測試後的安全測試。安全測試後中,對於網絡傳輸中數據加密問題存在安全隱患。須要配置SSL。 簡
windows和Linux下定時啟動或關閉服務
ref sta article start 處理程序 window pin blog win http://blog.csdn.net/clare504/article/details/17410643 1、Windows下的定時啟動程序可以采用系統的計劃和任務,定時
windows用SSH和linux同步文件&linux開啟SSH&ssh client 報 algorithm negotiation failed的解決方法之一
.com oot install .cn 導致 per 連接 pem 用戶 1、安裝、配置與啟動 SSH分客戶端openssh-client和openssh-server 如果你只是想登陸別的機器的SSH只需要安裝openssh-client(ubuntu有默認安裝,如果
集群之mysql主從配置(windows和linux版)
p s class 本地 -h 路徑 數據庫容災 主從機 混合 二進制文件 起因 由於網站進一步開發運行的需求,要求主機7*24小時運行正常,同時要求能夠防止數據庫災難。考慮到後期的開發程度和業務量,準備向高可用系統進行改變,同時通過負載均衡提高網絡性能。於是第一步就
FreeRTOS和Linux相比
是把 利用 處理 rto 電腦 既然 實時操作系統 inux 操作系統 兩個不沾邊。 freertos 是一個實時操作系統,主要實現了任務調度、內存管理、IPC、中斷管理這幾個模塊,它要求快速的處理任務,gui、驅動框架、shell 這些都不是它的核心功能,而且大部分
windows 和 linux如何配置pptp vpn
linux最近公司要求搭一個vpn,為方便出差人員連接內網,訪問內網資源。那如何用vpn實現從外網訪問內網的所有機器呢?網上找了些資料,順便整理了一下。一、服務端配置:公司飛魚星路由器自帶vpn功能1、在路由器上啟用pptp服務,通過pptp服務端設置。2、在pptp用戶下添加用戶(客戶端要用到。3、客戶端連