1969年,肯?湯普森(Ken )和丹尼斯?里奇( )在貝爾實驗室(Bell Labs)創(chuàng)造了UNIX系統(tǒng)。50年后,UNIX系統(tǒng)在全世界被廣泛應(yīng)用,多數(shù)時候以Linux的形態(tài)呈現(xiàn),在從極小到極大的無數(shù)種計算機(jī)上運行。
在1969年的貝爾實驗室,UNIX是怎么來的?貝爾實驗室是怎樣的機(jī)構(gòu)?寥寥數(shù)位研究員組成的小團(tuán)隊是如何改變世界的?是什么讓UNIX成為可能,并推動它演化?UNIX的發(fā)展,與現(xiàn)代操作系統(tǒng)又有何聯(lián)結(jié)?······
這是人們對于UNIX誕生及其背后故事的疑問,也是《UNIX傳奇:歷史與回憶》想要回答的。本書作者布萊恩·W. 克尼漢是普林斯頓大學(xué)計算機(jī)科學(xué)系教授,30余年貝爾實驗室工齡,傳奇程序"Hello, World!"的發(fā)明者,UNIX誕生見證者!這本書帶你走進(jìn)貝爾實驗室,一探UNIX的起源,親歷計算機(jī)技術(shù)發(fā)展史實。
作者:[美]布萊恩·W.克尼漢(Brian W. )譯者:韓磊點擊封面京東購書5折
從UNIX的回憶錄牽扯出縱觀整個計算機(jī)科學(xué)史的大主題:
從技術(shù)發(fā)明孵化出管理與科技創(chuàng)新的原力。
01
誰能預(yù)料歷史的進(jìn)程?
UNIX操作系統(tǒng)誕生于1969年,但它不是從石頭縫里蹦出來的。
20世紀(jì)60年代,最具有創(chuàng)造性的操作系統(tǒng)是麻省理工學(xué)院推出的CTSS(兼容分時系統(tǒng))。但麻省理工學(xué)院的研究員們想做出一個比CTSS更好的版本,他們邀請了貝爾實驗室和美國通用電氣公司共同參與研發(fā),意圖創(chuàng)造出一套信息處理工具,向大眾提供計算服務(wù)。
因此,他們開始設(shè)計系統(tǒng)。本該前途無量,但其很快就陷入了困境。
礙于當(dāng)時技術(shù)條件的匱乏,且系統(tǒng)要求過多功能特性,多處模塊出現(xiàn)過度設(shè)計,導(dǎo)致研發(fā)存在過多難以解決的技術(shù)難題,研發(fā)進(jìn)度極其緩慢。1969年4月,貝爾實驗室退出項目。
雖然系統(tǒng)最終還是完成了,但它至今尚未被廣泛接受,只是得到了部分人的支持和使用。很多好點子濫觴于,不過它最偉大的貢獻(xiàn)還在于它影響到了一個叫UNIX的小操作系統(tǒng)的誕生!這個小系統(tǒng)誕生的部分原因正是想要擯棄的復(fù)雜架構(gòu)。
歷史就此改變。
在貝爾實驗室退出項目后,原來參與項目開發(fā)的成員肯·湯普森仍想做操作系統(tǒng)??稀丈既辉趯嶒炇艺业揭慌_沒怎么用過的DEC PDP-7計算機(jī),他為其創(chuàng)作了一個太空旅行游戲。并且,他還為PDP-7磁盤專門設(shè)計了一個磁盤調(diào)度算法來提升磁盤的吞吐量。
如何測試這個算法呢?這需要往磁盤上裝載數(shù)據(jù),肯·湯普森認(rèn)為他需要一個批量寫數(shù)據(jù)的程序。
“在某一時刻,我發(fā)現(xiàn)離實現(xiàn)一個操作系統(tǒng)僅有3周之遙了?!彼枰獙懭齻€程序,每周寫一個:用來創(chuàng)建代碼的編輯器;將代碼轉(zhuǎn)換為PDP-7能運行的機(jī)器語言的匯編器;再加上“內(nèi)核的外層”——操作系統(tǒng)齊活了。
PDP-7計算機(jī)圖片你認(rèn)為創(chuàng)作出UNIX需要多久?三個月?半年?還是像一樣花了好幾年?
而肯·湯普森只花了三周。正如肯·湯普森在2019年一次采訪中所說,“一周,一周,再一周,我們就有了UNIX?!睙o論以何種方式來度量,這都體現(xiàn)了真正的軟件生產(chǎn)力!
由于受到的影響,布萊恩·克尼漢提議用uni(指新系統(tǒng)“擇一而從”)來替代中的multi(意圖提供“包羅萬象”的功能),命名“UNICS”。
UNICS后來變成了 UNIX,丹尼斯·里奇后來形容這個名字“正中要害”。的確如此,UNIX不僅閹割了的部分要求,還取得了渴求的成就。
PDP-7的UNIX系統(tǒng)實在有趣,即使它只是運行在一臺小型計算機(jī)上。但由于UNIX操作系統(tǒng)在所有類型的硬件上都保持一致,而且用較高級語言寫成,只需付出相對較少的成本,即可從一種計算機(jī)移植到另一種計算機(jī)。
正是因為這些優(yōu)于其他操作系統(tǒng)的創(chuàng)新性特點,UNIX這把“大神器”在歷史的洪流中,穩(wěn)步向前,一步步邁向傳奇。
在計算機(jī)科學(xué)技術(shù)飛速發(fā)展的今天,即使是能以后世者的“上帝視角”來回望這段不同尋常歷史的我們,都大受震撼c/c 程序設(shè)計學(xué)習(xí)與實驗系統(tǒng),為這段歷史感到驚奇。
那么,在50年前的計算機(jī)科學(xué)發(fā)展背景下,誰又能預(yù)料到歷史的進(jìn)程?即便是UNIX的創(chuàng)造者肯·湯普森和丹尼斯·里奇也沒能預(yù)料到UNIX會如此成功。
UNIX的兩位主要創(chuàng)造者:肯·湯普森(左)和丹尼斯·里奇(右)
02
UNIX廣為流傳推動商業(yè)化,向世界發(fā)起挑戰(zhàn)
正如沒人預(yù)料到肯·湯普森能從失敗品中能涅槃重生出UNIX,也沒人預(yù)料到UNIX的流傳之廣,堪稱傳奇。
正如R·L·馬丁在《Unix and 》一書中寫道:“目前,全世界有1400所大學(xué)和學(xué)院使用UNIX操作系統(tǒng)。它是70種計算機(jī)產(chǎn)品線的基礎(chǔ),范圍涵蓋從微型計算機(jī)到超級計算機(jī)。目前正在運行的UNIX系統(tǒng)約有10萬個,約有100家公司正在開發(fā)基于它的應(yīng)用程序?!?/p>
在1127中心(貝爾實驗室計算科學(xué)研究中心,UNIX系統(tǒng)的發(fā)源地)的實驗室里待了幾年后,UNIX開始往貝爾實驗室內(nèi)部和外部傳播,席卷范圍甚廣。
▌UNIX發(fā)展時間線UNIX的第7版開始主要有2條發(fā)展線。一條來自伯克利,它以比爾·喬伊及其同事的工作為基礎(chǔ);另一條來自AT&T,因為AT&T試圖將UNIX的專業(yè)知識和所有權(quán)做成一樁有利可圖的生意。
UNIX的外部傳播主要途徑是高校。根據(jù)商業(yè)秘密協(xié)議,高校支付象征性的“媒介費”即可獲得整個系統(tǒng)的源代碼。這絕對不是“開放源碼”:系統(tǒng)只能用于教育目的,被許可人只能與其他被許可的用戶討論經(jīng)驗和UNIX用途。
即使對傳播多加限制,但是UNIX仍然以一種勢不可擋的來勢,席卷計算機(jī)界。
社區(qū)迅速發(fā)展,用戶群體在世界各地涌現(xiàn),并發(fā)生了重大技術(shù)革新!其中最突出且具有商業(yè)價值的技術(shù)革新莫過于將系統(tǒng)移植到不同類型的硬件上,即可移植性,以及增加訪問互聯(lián)網(wǎng)的新機(jī)制。
“隨著UNIX在學(xué)術(shù)界的傳播,企業(yè)最終從念大學(xué)時用過UNIX的新聘程序員那里開始了解UNIX。”
此言不虛,UNIX確實擁有市場。甚至可以說,貝爾實驗室的母公司——美國電話電報公司AT&T通過向大學(xué)生贈送UNIX,無意中創(chuàng)造了這個市場。當(dāng)大學(xué)生進(jìn)入社會,受雇于有能力支付真金白銀的公司時,他們就會需要它。
從1984年開始,USL積極營銷UNIX,并努力將其改造為專業(yè)的商業(yè)商品,最終形成名為 V 4,或者稱為SVR4的版本。AT&T投入大量資源,推動這個版本成為標(biāo)準(zhǔn),并為源碼和目標(biāo)碼兼容提供了參考實現(xiàn)和細(xì)致的定義。
雖然AT&T的UNIX商業(yè)化努力并不總能成功,但是其因為商業(yè)化而對UNIX的標(biāo)準(zhǔn)化對整個社區(qū)來說非常寶貴,并且AT&T與合作者和競爭者之間長達(dá)十年的關(guān)于UNIX的互動對操作系統(tǒng)市場影響頗大。
▌ UNIX商標(biāo)創(chuàng)立
在UNIX早期貝爾實驗室的法定監(jiān)護(hù)人認(rèn)為,UNIX這個名字是高價值商標(biāo),必須加以保護(hù)。這無疑是正確的商業(yè)決定。
他們試圖防止這個名字成為可被任何人使用的通用名詞,就像阿司匹林、自動扶梯、拉鏈等詞那樣。
因此,公司要求貝爾實驗室員工正確地使用這個名字。特別地,它不能作為獨立名詞使用,如“Unix is an ”,必須標(biāo)示商標(biāo),而且還只能以大寫形容詞形式存在于“the ”(操作系統(tǒng))短語中,這就導(dǎo)致了“The is an ”(操作系統(tǒng)是一個操作系統(tǒng))這樣的可笑句子。
羅布·派克和布萊恩不得不為1984年出版的The Unix (《Unix編程環(huán)境》)一書力爭命名權(quán),否則,這本書就得叫The 了。最終的折中方案是:封面上不出現(xiàn)商標(biāo)或腳注標(biāo)記,但在扉頁上印了幾乎看不見的星號和腳注。
《UNIX: A and a 》封面圖
UNIX因為廣為流傳,而具有商業(yè)化的潛力和巨大的市場,雖然商業(yè)化后的“專業(yè)UNIX”因為某些原因進(jìn)入了緩慢的衰退期,但是UNIX的另一分支——開放源碼版本UNIX仍舊活躍,這項技術(shù)仍然在向世界發(fā)起挑戰(zhàn)。
03
UNIX取得了巨大的成功
歷史選擇了UNIX,所以UNIX這只小蝴蝶在貝爾實驗室輕輕扇動翅膀,便能在計算機(jī)科學(xué)界掀起浪潮。
UNIX取得了巨大的成功。UNIX及在其基礎(chǔ)上誕生的Linux、macOS等其他變種運行在數(shù)十億臺計算機(jī)上,持續(xù)為數(shù)十億人服務(wù),當(dāng)然也為在它之上構(gòu)建業(yè)務(wù)的人賺取了數(shù)十億美元。后來的操作系統(tǒng)受它影響極深。
那么,UNIX成功的原因何在?是否有一些想法或教訓(xùn)可以在其他環(huán)境中學(xué)習(xí)和應(yīng)用?布萊恩?W.克尼漢認(rèn)為至少在兩個方面答案是肯定的:技術(shù)方面絕對有,組織方面也有。
《UNIX傳奇:歷史與回憶》作者:布萊恩?W.克尼漢▌技術(shù)方面采用分層文件系統(tǒng)。在UNIX的世界里,生產(chǎn)力往往以刪除了多少特殊情況或者代碼行數(shù)來衡量,正如分層文件系統(tǒng)就是對既有做法的重大簡化。UNIX的高明之處在于選擇了足夠普適的抽象概念,既能發(fā)揮巨大的作用,又不至于在性能上付出太大代價。
采用高層級的實現(xiàn)語言。曾幾何時,世上只有硬件制造商的專有操作系統(tǒng),配備專有語言,而自UNIX問世,UNIX便成為了開放的、被廣泛理解的標(biāo)準(zhǔn),后又變作一種商品。客戶不再被束縛在特定硬件上,制造商也不再需要開發(fā)自己的操作系統(tǒng)或語言。
采用用戶級的可編程shell。用戶級的可編程shell具有控制流語句和方便的I/O重定向功能,使得將程序作為構(gòu)件進(jìn)行編程成為可能。隨著shell編程能力的增強(qiáng),它成為程序員工具箱中的另一種高級語言。而且,因為它是用戶級程序,不是操作系統(tǒng)的一部分,所以任何人只要有更好的想法,就可以對它進(jìn)行改進(jìn)和替換。
采用管道。管道是典型的UNIX發(fā)明,是臨時連接程序的一種優(yōu)雅而高效的方式。
UNIX在技術(shù)上的創(chuàng)新發(fā)明數(shù)不勝數(shù) ,正是這些技術(shù)上的優(yōu)勢讓UNIX成為后世操作系統(tǒng)的原石。▌ 組織方面
UNIX之所以能取得巨大的成功,部分原因還來自非技術(shù)因素,如貝爾實驗室的管理和組織結(jié)構(gòu),1127中心的人際環(huán)境,以及一群人才聚在一起解決不同問題時的思想交流。正是緣于貝爾實驗室對科研人員經(jīng)費的保障、對于難題的支持、對于聘請優(yōu)才的謹(jǐn)慎、對于技術(shù)的深度掌握、對于高標(biāo)準(zhǔn)協(xié)作環(huán)境的投入和對實驗室人文的關(guān)懷,UNIX在這里快速又茁壯地成長起來。
貝爾實驗室總部照片
UNIX如此成功,本土操作系統(tǒng)同樣受到了巨大影響。
對此,統(tǒng)信學(xué)院執(zhí)行院長秦冰在推薦語中提到“作為操作系統(tǒng)行業(yè)的從業(yè)人員,我能切身體會到UNIX的重要性。沒有它,如今手機(jī)上的和iOS、電腦上的、云計算中被廣泛使用的Linux就無從談起;沒有它,石油開采、航空航天、機(jī)械制造、金融商業(yè)的效率水平無法預(yù)測;沒有它,國產(chǎn)操作系統(tǒng)之路又何其漫漫。過去20年,國產(chǎn)操作系統(tǒng)正在漸漸從‘可用’階段向‘好用’階段良性發(fā)展,并且在國家防范網(wǎng)絡(luò)攻擊與威脅等安全領(lǐng)域扮演著核心角色??梢奤NIX的誕生對國產(chǎn)操作系統(tǒng)開發(fā)的作用也是不可估量的?!?/p>
事實上,在國外開源操作系統(tǒng)生態(tài)不斷發(fā)展的背景下,中國操作系統(tǒng)也應(yīng)運而生。中國操作系統(tǒng)初始于20世紀(jì)末,其間誕生過多個操作系統(tǒng),并且大多都是以UNIX/Linux為基礎(chǔ)二次開發(fā),受UNIX影響頗深。
UNIX取得巨大成功不僅給國產(chǎn)操作系統(tǒng)帶來了寶貴的經(jīng)驗,并且在潛移默化中影響著國產(chǎn)操作系統(tǒng)的發(fā)展趨勢。
04
愿原力與你同在!
今天,我們回頭看肯?湯普森、丹尼斯?里奇、道格?麥基爾羅伊、阿爾?阿霍、彼得?溫伯格、布萊恩?W.克尼漢、比爾?喬伊……這些人就像世界的開創(chuàng)者一樣,早在三四十年前就為未來計算機(jī)世界編制了迷人的DNA,這個DNA就是UNIX和C語言。
今天,整個計算機(jī)世界全都有UNIX和C語言的印記。不僅如此,UNIX的“設(shè)計哲學(xué)”以及UNIX所帶來的為自由而開源的“黑客文化”也成為最純正的計算機(jī)文化,推動著整個人類計算機(jī)文明的向前發(fā)展。
只有了解這些璀璨的歷史和文化,我們才知道計算機(jī)世界中真正的格局和品味是什么,也才知道真正的原力是什么。
愿原力與你同在!
作者:[美]布萊恩·W.克尼漢(Brian W. )譯者:韓磊
自1969年在貝爾實驗室的閣樓上誕生以來,UNIX操作系統(tǒng)的發(fā)展遠(yuǎn)遠(yuǎn)超出其創(chuàng)造者們的想象。它帶動了許多創(chuàng)新軟件的開發(fā),影響了無數(shù)程序員,改變了整個計算機(jī)技術(shù)的發(fā)展軌跡。
本書不但書寫UNIX的歷史,而且記錄作者的回憶,一探UNIX的起源,試圖解釋什么是UNIX,UNIX是如何產(chǎn)生的,以及UNIX為何如此重要。除此之外,本書以輕松的口吻講述了一群在貝爾實驗室工作的發(fā)明天才的有趣往事c/c 程序設(shè)計學(xué)習(xí)與實驗系統(tǒng),本書中每一個故事都是鮮為人知卻又值得傳播的寶貴資源。
本書適合對計算機(jī)或相關(guān)歷史感興趣的人閱讀。讀者不需要有太多的專業(yè)技術(shù)背景,就可以欣賞UNIX背后的思想,了解它的重要性。