在78年前的今天,1943年2月4日,Unix之父肯·湯普遜誕生。
肯湯普森
1943年2月4日,Unix之父、圖靈獎(jiǎng)得主、美國(guó)工程院院士肯湯普遜(Kenneth Lane Thompson,一般稱之為Ken Thompson,肯湯普森,1943年2月4日-)誕生于美國(guó)新奧爾良。在《編程人生》1書的訪談中,他回想自己小學(xué)時(shí)遭到的教育很爛,但有1堂課講了2進(jìn)制,自小喜歡邏輯的他立即被迷住了,他做了很多2進(jìn)制運(yùn)算,還借助1臺(tái)10進(jìn)制計(jì)算器擴(kuò)大到各種進(jìn)制。到了高中,他又迷上了電子,自己制作無(wú)線電、示波器和放大器。
1960年,Ken如愿進(jìn)入加州大學(xué)伯克利分校主修電氣工程。2年級(jí)的時(shí)候他有機(jī)會(huì)使用1臺(tái)摹擬計(jì)算機(jī),由于沒(méi)有他人搶,實(shí)際上成了他的專用。解釋程序太慢,他不能不直接用匯編編程,并從中學(xué)會(huì)了甚么是計(jì)算機(jī)。后來(lái)1個(gè)假期他又得到了解釋程序的源代碼清單,在不懂程序所用語(yǔ)言的情況下,他仔細(xì)研讀,學(xué)會(huì)了編程,并在學(xué)校找到編程的工作。1965年本科畢業(yè)后他沒(méi)有別的地方去,留校了。有個(gè)教授為他申請(qǐng)了碩士,因而他又讀了1年碩士。碩士導(dǎo)師是著名的信息論和博弈論專家Elwyn Berlekamp。固然,Ken自己回想,實(shí)際上他大部份都是在自學(xué),就畢業(yè)了。
Berlekamp也是一位傳奇人物,博士導(dǎo)師是香農(nóng)、Gallager等大師,發(fā)明了Berlekamp 、Welch-Berlekamp 和 Berlekamp-Massey等著名算法。他花了很多時(shí)間研究圍棋等博弈游戲,是組合博弈論的開創(chuàng)人之一。他還是加州大學(xué)伯克利分校數(shù)學(xué)系里唯逐一位沒(méi)有數(shù)學(xué)學(xué)位的教授。更成心思的是,他曾與同事共同創(chuàng)辦了Axcom交易顧問(wèn)公司,在其編寫的算法指點(diǎn)下的基金創(chuàng)造了55%凈回報(bào)率的奇跡。今天,這支基金依然在運(yùn)作,它就是傳奇基金公司文藝復(fù)興(Renaissance,另外一家由數(shù)學(xué)教授創(chuàng)辦的公司)旗下歷史最長(zhǎng)的Medallion。
離開校園后,Thompson加入了貝爾實(shí)驗(yàn)室。應(yīng)市場(chǎng)的需要,當(dāng)時(shí)貝爾實(shí)驗(yàn)室與麻省理工學(xué)院和通用電氣公司正在聯(lián)合開發(fā)1個(gè)多用戶分時(shí)操作系統(tǒng),取名為Multics(多路信息計(jì)算系統(tǒng)),Thompson成為這個(gè)系統(tǒng)的開發(fā)人員之一。在開發(fā)Multics的期間,Ken創(chuàng)造出了名為Bon的編程語(yǔ)言。惋惜由于這個(gè)系統(tǒng)不但開發(fā)周期長(zhǎng),本錢高,而且龐大而緩慢,市場(chǎng)前景完全不被看好,最后貝爾實(shí)驗(yàn)室從這個(gè)項(xiàng)目中撤了出來(lái)。這對(duì)Ken而言,簡(jiǎn)直是個(gè)巨大的不幸,由于他自己用寫的1個(gè)star travel游戲就是完全基于Multics的,退出Multics項(xiàng)目意味著Ken將沒(méi)有機(jī)器可以再玩這個(gè)游戲了。
面對(duì)此情此景,Ken作為1個(gè)創(chuàng)造者的本性立即體現(xiàn)了出來(lái),因而他決定自己寫1個(gè)操作系統(tǒng)來(lái)滿足他玩游戲的需要,說(shuō)干就干,Ken找到了1臺(tái)廢棄已久的老式PDP⑺,并在這臺(tái)機(jī)器上重寫了他的游戲。在這個(gè)進(jìn)程中,Ken有了1個(gè)主張,要開發(fā)一個(gè)全新的操作系統(tǒng)。利用PDP⑺上的匯編語(yǔ)言,Ken只花了1個(gè)月就編寫完了操作系統(tǒng)的內(nèi)核,在這個(gè)1個(gè)月中,他1周1個(gè)內(nèi)核,1個(gè)文件系統(tǒng),1個(gè)編輯器和1個(gè)編譯程序的完成。做完這個(gè)系統(tǒng)后,Ken將其命名為UNiplexed Information and Computing System,縮寫為 UNICS,后來(lái)做了1下改動(dòng),UNIX誕生了。
為了開發(fā)Unix,Ken還開發(fā)了一種新的語(yǔ)言,即C語(yǔ)言的前身B語(yǔ)言,這類語(yǔ)言簡(jiǎn)潔明了,接近于硬件語(yǔ)言。Unix的出現(xiàn)開始雖然其實(shí)不為大家所看好,但是卻引發(fā)了貝爾實(shí)驗(yàn)室另外一位同事的注意,這就是Dennis M. Ritchie,因而Dennis主動(dòng)加入進(jìn)來(lái)共同完善這個(gè)系統(tǒng)。1972年,他們聯(lián)手將Unix移植到當(dāng)時(shí)最早進(jìn)的大型機(jī)PDP⑵上。由于Unix是如此的簡(jiǎn)潔、穩(wěn)定與高效,以致于當(dāng)時(shí)大家都放棄了PDP⑵上自帶的DEC操作系統(tǒng),而完全改用Unix,這時(shí)候的Unix已開始走向成熟了。
在1973年之前Unix還不太為外界所知,到同年10月,Unix在IBM舉行的操作系統(tǒng)原理專題研討會(huì)上被提及,當(dāng)Ken和Dennis在會(huì)上宣讀論文并展現(xiàn)Unix后,全部會(huì)場(chǎng)轟動(dòng)了,大家都立即涌上來(lái)索取這類新型的操作系統(tǒng)的程序。隨著Unix的需求量的日趨增加,Ken與Dennis決定將Unix進(jìn)一步改寫,以即可以移植到各種不同的硬件系統(tǒng),由于Unix的源代碼中很多是用匯編完成,不具有良好的移植性,正好Dennis在1973年在B語(yǔ)言的基礎(chǔ)上開發(fā)出了C語(yǔ)言,C語(yǔ)言靈活,高效性,與硬件無(wú)關(guān),并且不失其簡(jiǎn)潔性,正是Unix移植所需要的寶貝,因而舊版的Unix與C語(yǔ)言完善結(jié)合在一起產(chǎn)生了新的可移植的Unix系統(tǒng)。隨著Unix的廣泛使用,C語(yǔ)言同樣成為了當(dāng)時(shí)最受歡迎的編程語(yǔ)言,一直延續(xù)至令。
說(shuō)到Unix與C語(yǔ)言,還有一段小故事,當(dāng)時(shí)安裝了Unix的PDP⑴1被放在貝爾實(shí)驗(yàn)室供大家使用,有1天大家伙發(fā)現(xiàn)Ken總是可以得到最高的權(quán)限輕松進(jìn)入他們的帳戶,在貝爾實(shí)驗(yàn)室這類高人云集的地方,這簡(jiǎn)單是太不能容忍了,因而有若干高人跳了出來(lái),仔細(xì)分析Unix代碼,找到后門,修改后再重新編譯全部Unix,當(dāng)所有人都以為這個(gè)世界應(yīng)當(dāng)從此清靜了的時(shí)候,卻發(fā)現(xiàn)Ken還是很容易就獲得了他們的帳戶權(quán)限,為此大家愁悶不已。直到很多年后,Ken才道出其中的原委,原來(lái)代碼里確切存在后門,不過(guò)其實(shí)不在Unix代碼中,而是藏在編譯Unix的編譯器里,每次編譯器編譯時(shí)就會(huì)自動(dòng)加入后門代碼,而當(dāng)時(shí)全部貝爾實(shí)驗(yàn)室都用的是Ken所寫的C編譯器。
由于Unix與C語(yǔ)言的深遠(yuǎn)影響,1983年美國(guó)計(jì)算機(jī)協(xié)會(huì)將當(dāng)年的圖靈獎(jiǎng)破例頒給了軟件工程師出身的Ken與Dennis,并在當(dāng)年還決定新設(shè)立1個(gè)獎(jiǎng)項(xiàng)――軟件系統(tǒng)獎(jiǎng),以嘉獎(jiǎng)那些優(yōu)秀的軟件開發(fā)者,固然首個(gè)軟件系統(tǒng)獎(jiǎng)也是非他們兩人莫屬了。
完成Unix這樣的偉業(yè)以后,或許是受了老師Berlekamp的影響,Ken的興趣轉(zhuǎn)移到計(jì)算機(jī)象棋程序上,開發(fā)了1個(gè)名為Belle的國(guó)際象棋專用計(jì)算機(jī),在當(dāng)時(shí)那可是打遍天下無(wú)敵手。他還編寫了1個(gè)程序擴(kuò)大象棋殘局庫(kù)。
Ken的職業(yè)生涯也并不是1帆風(fēng)順。1980年代,他在Dennis Ritchie的支持下,與Rob Pike、Brian Kernighan、Tom Duff、Doug McIlroy、Bjarne Stroustrup、Bruce Ellis等眾多大牛合作,開始投入雄心勃勃的Plan 9操作系統(tǒng)開發(fā)中,這個(gè)項(xiàng)目的目的是開發(fā)出能取代Unix的新1代散布式多用戶和圖形化的操作系統(tǒng)。1992年、1995年前后發(fā)布了兩個(gè)正式版本。但Linux的迅猛發(fā)展?jié)u漸使Plan 9喪失了成長(zhǎng)空間。1990年代后期,朗訊公司取消了商業(yè)計(jì)劃,Plan 9終究也沒(méi)能真正走出實(shí)驗(yàn)室。
爾后,朗訊又啟動(dòng)了Inferno操作系統(tǒng)研究項(xiàng)目,Ken繼續(xù)投身其中。這個(gè)名字嚇人(取材自《神曲》中的地獄之火)的項(xiàng)目有Dis虛擬機(jī)、先進(jìn)的編程語(yǔ)言Limbo和協(xié)議Styx,在1997年發(fā)布了初版,并用于朗訊兩個(gè)產(chǎn)品當(dāng)中,而且公司還成立了專門的業(yè)務(wù)部門。應(yīng)當(dāng)說(shuō)獲得了一定的成功。但是,這時(shí)候候互聯(lián)網(wǎng)興起,Sun開發(fā)的Java開始大紅大紫。而朗訊公司完全沒(méi)成心識(shí)到,其實(shí)Inferno完全可以與Java環(huán)境競(jìng)爭(zhēng),從互聯(lián)網(wǎng)大潮中分1杯羹,在營(yíng)銷和運(yùn)營(yíng)模式上完敗。3年后Inferno業(yè)務(wù)部門被關(guān)閉,知識(shí)產(chǎn)權(quán)出售給英國(guó)公司Vitanuova。
2000年12月,Ken正式退休。后曾以Fellow頭銜在另外一家通訊裝備公司Entrisphere工作到2006年。2007年9月,他以杰出工程師的身份加入Google,再次與老朋友Rob Pike一起出征,這次他的任務(wù)是為Google設(shè)計(jì)基礎(chǔ)設(shè)施。他在《編程人生》1書訪談中表示,自己的工作是操作系統(tǒng)方面的事情,是各部份之間的膠水。他有特權(quán)可以做自己想做的事情,面臨的挑戰(zhàn)是,使許多不可靠的機(jī)器能像1臺(tái)可靠的多處理器機(jī)器那樣工作。雖然對(duì)Google大范圍海量用戶的計(jì)算環(huán)境和相干的制度還不太適應(yīng)(比如,他乃至還沒(méi)有資歷提交代碼),但他整體上還是很喜歡這里的工作。2009年11月他們工作的第1個(gè)成果發(fā)布,這就是引發(fā)廣大程序員關(guān)注的Go語(yǔ)言帶垃圾搜集、編譯型的并發(fā)系統(tǒng)語(yǔ)言。某種程度上,他們的工作仿佛是Inferno的延續(xù),Go語(yǔ)言的源代碼中,有一些直接衍生自Inferno。下1步還會(huì)有甚么欣喜呢?讓我們拭目以待。
Unix使Ken取得了眾多榮譽(yù),圖靈獎(jiǎng)、美國(guó)國(guó)家技術(shù)獎(jiǎng)、IEEE Tsutomu Kanai獎(jiǎng),還有頭幾天剛剛頒發(fā)的2011年日本國(guó)際獎(jiǎng)(獎(jiǎng)金45萬(wàn)美元)。另外,Ken在開發(fā)編輯器的進(jìn)程中發(fā)明了正則表達(dá)式,在開發(fā)Plan 9操作系統(tǒng)的進(jìn)程中發(fā)明了UTF⑻編碼,這些成績(jī)也值得我們感念。
應(yīng)當(dāng)說(shuō),Ken Thompson是榮幸的,他因興趣進(jìn)入計(jì)算機(jī)界,全部職業(yè)生涯幾近能隨興之所至。難怪他認(rèn)為優(yōu)秀開發(fā)人員的標(biāo)志是熱忱。不過(guò),有1點(diǎn)可能會(huì)令我們驚訝,他建議自己的兒子去讀生物而非計(jì)算機(jī),理由是計(jì)算機(jī)發(fā)展太慢了。
1999年肯湯普遜(左)和丹尼斯里奇因開發(fā)C語(yǔ)言和 Unix 操作系統(tǒng)一起取得了美國(guó)國(guó)家技術(shù)獎(jiǎng),克林頓授獎(jiǎng)。
肯湯普生和丹尼斯利奇
本文地址:http://www.soujuw.cn/lishitanjiu/148493.html.
聲明: 我們致力于保護(hù)作者版權(quán),注重分享,被刊用文章因無(wú)法核實(shí)真實(shí)出處,未能及時(shí)與作者取得聯(lián)系,或有版權(quán)異議的,請(qǐng)聯(lián)系管理員,我們會(huì)立即處理,本站部分文字與圖片資源來(lái)自于網(wǎng)絡(luò),轉(zhuǎn)載是出于傳遞更多信息之目的,若有來(lái)源標(biāo)注錯(cuò)誤或侵犯了您的合法權(quán)益,請(qǐng)立即通知我們(管理員郵箱:602607956@qq.com),情況屬實(shí),我們會(huì)第一時(shí)間予以刪除,并同時(shí)向您表示歉意,謝謝!