Bill Joy MIT BBS上說(shuō)微軟電話面試的一道題就是“Who do you think is the best coder, and why?”。我覺(jué)得挺有意思的,也來(lái)湊個(gè)熱鬧。排名不分先后。
傳奇編程高手:
Bill Joy
John Carmack
David Cutler
Donald E. Knuth
Ken Thompson
Rob Pike
Dennis M. Ritchie
Edsger Wybe Dijkstra
Anders Hejlsberg
Bill Joy
Bill Joy, 前任Sun的首席科學(xué)家,當(dāng)年在Berkeley時(shí)主持開(kāi)發(fā)了最早版本的BSD。他還是vi和csh的作者。當(dāng)然,Csh Programming Considered Harmful 是另一個(gè)話題樂(lè)。據(jù)說(shuō)他想看看自己能不能寫(xiě)個(gè)操作系統(tǒng),就在三天里寫(xiě)了個(gè)自己的Unix, 也就是BSD的前身。當(dāng)然是傳說(shuō)了,但足見(jiàn)他的功力。另一個(gè)傳說(shuō)是,1980年初的時(shí)候,DARPA讓BBN在Berkley Unix里加上BBN開(kāi)發(fā)的TCP/IP代碼。但當(dāng)時(shí)還是研究生的B伯伯怒了,拒絕把BBNTCP/IP加入BSD,因?yàn)樗X(jué)得BBN的TCP/IP寫(xiě)得不好。于是B伯伯出手了,端的是一箭封喉,很快就寫(xiě)出了高性能的伯克利版TCP/IP。當(dāng)時(shí)BBN和DARPA簽了巨額合同開(kāi)發(fā)TCP/IPStack,誰(shuí)知他們的代碼還不如一個(gè)研究生的好。于是他們開(kāi)會(huì)。只見(jiàn)當(dāng)時(shí)B伯伯穿個(gè)T-shirt出現(xiàn)在會(huì)議室(當(dāng)時(shí)穿T-shirt不象現(xiàn)在,還是相當(dāng)散漫的哈)。只見(jiàn)BBN問(wèn):你怎么寫(xiě)出來(lái)的?而B(niǎo)伯伯答:簡(jiǎn)單,你讀協(xié)議,然后編程就行了。最令偶暈倒的是,B伯伯碩士畢業(yè)后決定到工業(yè)界發(fā)展,于是就到了當(dāng)時(shí)只有一間辦公室的Sun, 然后他就把Sparc設(shè)計(jì)出來(lái)樂(lè)。。。象這種軟硬通吃的牛人,想不佩服都不行的說(shuō)。據(jù)Bill Joy的同事說(shuō),一般開(kāi)會(huì)的時(shí)候B伯伯總是拿一堆雜志漫不經(jīng)心地讀。但往往在關(guān)鍵之處,B伯伯發(fā)言,直切要害,提出漂亮的構(gòu)想,讓同事們徹底崩潰。對(duì)了,他還是Java Spec和JINI的主要作者之一。
John Carmack
John Carmack,id Software的founder和Lead Programmer。上個(gè)月和一個(gè)搞圖形的師兄聊天,他竟然不知道John Carmack, 也讓偶大大地暈了一把。不過(guò)也許搞研究的和搞實(shí)戰(zhàn)的多少有些隔吧。想必喜歡第一人稱射擊游戲的都知道J哥哥。90年代初只要能在PC上搞個(gè)小動(dòng)畫(huà)都能讓人驚嘆一番的時(shí)候,J哥哥就推出了石破天驚的Castle Wolfstein, 然后再接再勵(lì),doom, doomII, Quake...每次都把3-D技術(shù)推到極致。J哥哥的簡(jiǎn)歷上說(shuō)自己的專長(zhǎng)是"Exhaust 3-D technology",真是牛人之言不我欺的說(shuō)。做J哥哥這樣的人是很幸福的,因?yàn)楦鞔髨D形卡廠家一有了新產(chǎn)品就要向他“進(jìn)貢” ,不然如果他的游戲不支持哪種卡,哪種卡基本就會(huì)夭折樂(lè)。當(dāng)初MS的Direct3D也得聽(tīng)取他的意見(jiàn),修改了不少API。當(dāng)然,J哥哥在結(jié)婚前十?dāng)?shù)年如一日地每天編程14小時(shí)以上,也是偶們凡人望塵莫及的。對(duì)了,J哥哥高中肆業(yè)(?),可以說(shuō)是自學(xué)成才。不過(guò)呢,誰(shuí)要用這個(gè)例子來(lái)為自己學(xué)習(xí)不好辯護(hù),就大錯(cuò)特錯(cuò)了。那 Leonardo Da Vinci還是自學(xué)成才呢(人是私生子,不能上學(xué))。普通人和天才還是有區(qū)別的。對(duì)了,其實(shí)偶們叫“達(dá)分奇”是相當(dāng)不對(duì)的,因?yàn)閂inci是地名,而Da Vinci就是從Vinci來(lái)的人的意思。換句話說(shuō),Leonardo Da Vinci就是“從Vinci來(lái)的Leonardo”的意思。叫別人“Da Vinci”就不知所謂樂(lè)。嗯,扯遠(yuǎn)了,打住。 More about Carmack Here
David Cutler
David Cutler,VMS和Windows NT的首席設(shè)計(jì)師,去微軟前號(hào)稱硅谷最牛的kernel開(kāi)發(fā)員。當(dāng)初他和他的手下在微軟一周內(nèi)把一個(gè)具備基本功能的bootable kernel寫(xiě)出來(lái),然后說(shuō):“who can't write an OS in a week?",也是牛氣沖天的說(shuō)。順便說(shuō)一句,D爺爺?shù)絅T3.5時(shí),管理1500名開(kāi)發(fā)員,自己還兼做設(shè)計(jì)和編程,不改coder本色啊。D爺爺天生脾氣火爆,和人爭(zhēng)論時(shí)喜歡雙手猛擊桌子以壯聲勢(shì)。:-) 日常交談F-word不離口。他面試秘書(shū)時(shí)必問(wèn):"what do you think of the word '****'?" ,讓無(wú)數(shù)美女剎羽而歸。終于有一天,一個(gè)同樣火爆的女面對(duì)這個(gè)問(wèn)題脫口而出:"That's my favorite word"。于是她被錄取樂(lè),為D爺爺工作到NT3.5發(fā)布。
Donald E. Knuth
Don Knuth(Donald E. Knuth)。高爺爺其實(shí)用不著偶多說(shuō)。學(xué)編程的不知道他就好像學(xué)物理的不知道牛頓,學(xué)數(shù)學(xué)的不知道歐拉,學(xué)音樂(lè)的不知道莫扎特,學(xué)Delphi的不知到 Anders Hejlsberg,或者學(xué)Linux不知道Linus Torvalds一樣,不可原諒啊。:-)為了讓文章完整,就再羅唆幾句吧。高爺爺本科時(shí)就開(kāi)始給行行色色的公司寫(xiě)各種稀奇古怪的編譯器掙外快了。他賣(mài)給別人時(shí)收一兩千美元,那些公司拿了code,加工一下賣(mài)出去就是上萬(wàn)上十萬(wàn)。不過(guò)也沒(méi)見(jiàn)高爺爺不爽過(guò),學(xué)者本色的說(shuō)。想想那可是60年代初啊,高爺爺寫(xiě)編譯器寫(xiě)多了,順帶就搞出了個(gè)Attribute Grammar和LR(k),大大地造福后人啊。至于高爺爺在CalTech的編程比賽(有Alan Kay得眾多高高手參加)總是第一,寫(xiě)的Tex到86年就code freeze,還附帶2^n美分獎(jiǎng)勵(lì)等等都是耳熟能詳,偶就不饒舌樂(lè)。順便說(shuō)一下,高老大爺是無(wú)可爭(zhēng)議的寫(xiě)作高手。他給Concrete Mathematics 寫(xiě)的前言可謂字字鏗鏘,堪為前言的典范。他的技術(shù)文章也是一絕,文風(fēng)細(xì)致,解釋精當(dāng),而且沒(méi)有學(xué)究氣,不失輕快跳脫。記得幾年前讀Concrete Mathematics,時(shí)不時(shí)開(kāi)懷大笑,讓老媽極其郁悶,覺(jué)得我nerdy到家,不可救藥。其實(shí)呢,子非魚(yú),安知魚(yú)之樂(lè),更不知那完全是高爺爺?shù)墓凇Uf(shuō)到寫(xiě)作高手,不能不提Stephen A. Cook。他的文章當(dāng)年就被我們的寫(xiě)作老師極力推薦,號(hào)稱典雅文風(fēng)的樣本。庫(kù)爺爺一頭銀發(fā),身材頎長(zhǎng),總是面帶謙和的微笑,頗有仙風(fēng)道骨,正好和他的仙文相配的說(shuō)。高爺爺其實(shí)還是開(kāi)源運(yùn)動(dòng)的先驅(qū)。雖然他沒(méi)有象Richard Stallman那樣八方奔走,但他捐獻(xiàn)了好多作品,都可以在網(wǎng)上看到,比如著名的Mathematical Writing,MMIXWare,The Tex Book等,更不用說(shuō)足以讓他流芳百世的Tex樂(lè)。
Ken Thompson
Ken Thompson,C語(yǔ)言前身B語(yǔ)言的作者,Unix的發(fā)明人之一(另一個(gè)是Dennis M. Riche老大,被尊為DMR),Belle(一個(gè)厲害的國(guó)際象棋程序)的作者之一, 操作系統(tǒng)Plan 9的主要作者(另一個(gè)是大牛人Rob Pike, 前不久被google挖走了)。Ken爺爺也算是計(jì)算機(jī)歷史上開(kāi)天辟地的人物了。1969年還是計(jì)算機(jī)史前時(shí)代,普通人都認(rèn)為只有大型機(jī)才能運(yùn)行通用的操作系統(tǒng),小型機(jī)只有高山仰止的份兒。至于用高級(jí)語(yǔ)言來(lái)寫(xiě)操作系統(tǒng),更是笑談。Ken爺爺自然不是池中物,于是他和DMR怒了,在1969年到1970間用匯編在PDP-7上寫(xiě)出了UNIX的第一個(gè)版本。他們并不知道,一場(chǎng)轟轟烈烈的UNIX傳奇由此拉開(kāi)了序幕。Ken爺爺在1971年又把Unix用C重寫(xiě),于是C在隨后20年成就了不知多少豪杰的夢(mèng)想和光榮。Ken爺爺還有段佳話:裝了UNIX的PDP-11最早被安裝在Bell Lab里供大家日常使用。很快大家就發(fā)現(xiàn)Ken爺爺總能進(jìn)入他們的帳戶,獲得最高權(quán)限。Bell Lab里的科學(xué)家都心比天高,當(dāng)然被搞得郁悶無(wú)比。于是有高手怒了,跳出來(lái)分析了UNIX代碼,找到后門(mén),修改代碼,然后重新編譯了整個(gè)UNIX。就在大家都以為“這個(gè)世界清凈了”的時(shí)候,他們發(fā)現(xiàn)Ken爺爺還是輕而易舉地拿到他們的帳戶權(quán)限,百思不解后,只好繼續(xù)郁悶。誰(shuí)知道這一郁悶,就郁悶了14年,直到Ken爺爺?shù)莱鰝€(gè)中緣由。原來(lái),代碼里的確有后門(mén),但后門(mén)不在Unix代碼里,而在編譯Unix代碼的C編譯器里。每次C編譯器編譯UNIX的代碼,就自動(dòng)生成后門(mén)代碼。而整個(gè)Bell Lab的人,都是用Ken爺爺?shù)腃編譯器。
Rob Pike
Rob Pike, AT&T Bell Lab前Member of Technical Staff ,現(xiàn)在google研究操作系統(tǒng)。羅伯伯是Unix的先驅(qū),是貝爾實(shí)驗(yàn)室最早和Ken Thompson以及Dennis M. Ritche開(kāi)發(fā)Unix的猛人,UTF-8的設(shè)計(jì)人。他還在美國(guó)名嘴David Letterman的晚間節(jié)目上露了一小臉,一臉憨厚地幫一胖子吹牛搞怪。讓偶佩服不已的是,羅伯伯還是1980年奧運(yùn)會(huì)射箭的銀牌得主。他也是個(gè)頗為厲害的業(yè)余天文學(xué)家,設(shè)計(jì)的珈瑪射線望遠(yuǎn)鏡差點(diǎn)被NASA用在航天飛機(jī)上。他還是兩本經(jīng)典,The Unix Programming Environment 和 The Practice of Programming 的作者之一。如果初學(xué)者想在編程方面精益求精,實(shí)在該好好讀讀這兩本書(shū)。它們都有中文版的說(shuō)。羅伯伯還寫(xiě)出了Unix下第一個(gè)基于位圖的窗口系統(tǒng),并且是著名的blit 終端的作者。當(dāng)然了,羅伯伯還是號(hào)稱銳意革新的操作系統(tǒng),Plan9,的主要作者。可惜的是,Plan9并沒(méi)有引起多少人的注意。羅伯伯一怒之下,寫(xiě)出了振聾發(fā)聵的雄文 Systems Software Research is Irrelevant,痛斥當(dāng)下系統(tǒng)開(kāi)發(fā)不思進(jìn)取,固步自封的弊病。雖然這篇文章是羅伯伯含忿出手,頗有偏激之詞,但確實(shí)道出了系統(tǒng)開(kāi)發(fā)的無(wú)奈:開(kāi)發(fā)周期越來(lái)越長(zhǎng),代價(jià)越來(lái)越大,用戶被統(tǒng)一到少數(shù)幾個(gè)系統(tǒng)上,結(jié)果越來(lái)越多的活動(dòng)是測(cè)量和修補(bǔ),而真正的革新越來(lái)越少。就在羅伯伯郁悶之極的時(shí)候,google登門(mén)求賢來(lái)樂(lè)。如果說(shuō)現(xiàn)在還有一家大眾公司在不遺余力地把系統(tǒng)開(kāi)發(fā)推向極致的話,也就是google 樂(lè)。隨便看看google的成果就知道了。具有超強(qiáng)容錯(cuò)和負(fù)載平衡能力的分布式文件系統(tǒng)GFS (現(xiàn)在能夠用100,000臺(tái)廉價(jià)PC搭起一個(gè)巨型分布系統(tǒng),并且高效便宜地進(jìn)行管理的系統(tǒng)也不多哈),大規(guī)模機(jī)器學(xué)習(xí)系統(tǒng)(拼寫(xiě)檢查,廣告匹配,拼音搜尋。。。哪個(gè)都很牛的說(shuō)),更不用說(shuō)處理海量并行計(jì)算的各式google服務(wù)了。Rob在System Software Research is Irrelevant里蕭瑟地說(shuō)現(xiàn)在沒(méi)有人再關(guān)心系統(tǒng)研究的前沿成果了。想不到他錯(cuò)了,因?yàn)間oogle關(guān)心。google網(wǎng)絡(luò)了大批功成名就的牛人,還有大量初生牛犢般博士做開(kāi)發(fā),顯然不是沒(méi)事耍酷,而是因?yàn)樗鼈兊拈_(kāi)發(fā)總是試圖吸取系統(tǒng)研究的最新成果。 想必Rob Pike在google很幸福。愿他做出更棒的系統(tǒng)。
Dennis M. Ritchie
Dennis M. Ritchie 既然Ken Thompson是我的偶像,新聞組上人稱DMR的Dennis M. Ritchie自然也是,畢竟兩人共同締造了UNIX,而Dennis幾乎獨(dú)力把C搞大(當(dāng)然,C的前身是B,而B(niǎo)是Ken Thompson一手做出來(lái)的)。J 兩人1983年分享圖靈獎(jiǎng),是有史以來(lái)少數(shù)幾個(gè)因工程項(xiàng)目得獎(jiǎng)的工程師(本來(lái)是唯一的一對(duì)兒,但Alan Kay才因?yàn)镾mallTalk得獎(jiǎng),所以就成了唯二的樂(lè)) 。一個(gè)人一生能做出一個(gè)卓越的系統(tǒng)已經(jīng)不易,DMR的C和UNIX長(zhǎng)盛不衰近30年,至今生機(jī)勃勃,DMR此生可以無(wú)憾的說(shuō)。D爺爺也算有家學(xué)淵源:他老爸在AT&T貝爾實(shí)驗(yàn)室工作了一輩子,并在電路設(shè)計(jì)方面卓有成就,還出了本頗有影響的書(shū)The Design of Switching Circuits,據(jù)說(shuō)在交換理論和邏輯設(shè)計(jì)方面有獨(dú)到的論述。當(dāng)然,D爺爺和他老爸是不同時(shí)代的人:他老爸的研究成形于晶體管發(fā)明之前,而D爺爺?shù)墓ぷ麟x了晶體管就玩兒不轉(zhuǎn)樂(lè)。:-D不要看D爺爺搞出了C,其實(shí)他最愛(ài)的編程語(yǔ)言是Alef,在Plan9上運(yùn)行,支持并行編程。Alef的語(yǔ)法和C相似,但數(shù)據(jù)類型和執(zhí)行方式都和C大大不同。說(shuō)到語(yǔ)言,D爺爺對(duì)后來(lái)人有非常中肯的建議:抱著學(xué)習(xí)的目的來(lái)開(kāi)發(fā)你自己的語(yǔ)言,不要冀望于它被眾人接受。這個(gè)建議不光對(duì)語(yǔ)言開(kāi)發(fā)有用,也適用于其它大型系統(tǒng)的開(kāi)發(fā)。別的不說(shuō),DMR后來(lái)領(lǐng)導(dǎo)自己的團(tuán)隊(duì)在1995年和1996分別推出了Plan9和 Inferno操作系統(tǒng),又用多少人知道呢?其實(shí),D爺爺當(dāng)初也沒(méi)想過(guò)C會(huì)風(fēng)行世界。他開(kāi)發(fā)C的初衷和 Eric S. Raymond在Cathedral and Bazaar里闡述的一樣,就是要消除自己對(duì)現(xiàn)有工具的不爽之處。誰(shuí)知D爺爺無(wú)心插柳,C竟然受到眾多程序員的狂熱擁戴,連D爺爺自己都大惑不解。在一次采訪中D爺爺說(shuō)大概那是因?yàn)镃的抽象程度碰巧既滿足了程序員的要求, 又容易實(shí)現(xiàn)。當(dāng)然C一度是Unix上的通用語(yǔ)言也是原因。但不管怎么說(shuō),D爺爺對(duì)編程語(yǔ)言出色的審美意識(shí)奠定了C廣為流傳的基礎(chǔ)。最后八卦一下。D爺爺?shù)臉I(yè)余愛(ài)好和NBA大牛Karl Malone一樣:開(kāi)卡車。不過(guò)D爺爺更喜歡開(kāi)NASCAR,而KM獨(dú)愛(ài)巨無(wú)霸。J D爺爺自稱心中不供偶像,如果一定要說(shuō)一個(gè),那就是Ken Thompson了。現(xiàn)在Ken爺爺退休當(dāng)飛機(jī)教練去了,而D爺爺當(dāng)了貝爾實(shí)驗(yàn)室系統(tǒng)開(kāi)發(fā)部的頭,整日忙于開(kāi)支票。他倆合作20年,屢屢創(chuàng)造歷史。這段令人神往的佳話,也就長(zhǎng)留你我心中樂(lè)。P.S., 很多人都以為Brian W. Kernighan是C的作者。其實(shí)BWK只是寫(xiě)了那本經(jīng)典K&R C。據(jù)D爺爺說(shuō),他,Ken, 和Kernighan三人中,Kernighan最能寫(xiě)文章,他次之,而Ken寫(xiě)得最少;但說(shuō)到編程,Ken爺爺才是當(dāng)之無(wú)愧的老大。
Edsger Wybe Dijkstra
Edsger Wybe Dijkstra 對(duì),就是E.W. Dijkstra. 一提到EWD,很多人就會(huì)想起找最短路徑的Dijkstra Algorithm,就好像一提到Sir. Tony Hoare,就想起Quick Sort一樣。其實(shí)這些個(gè)算法不過(guò)是兩個(gè)牛人在他們職業(yè)生涯中最瑣碎的貢獻(xiàn)。比如Dijkstra算法,無(wú)非是戴爺爺在1956年為了展示新計(jì)算機(jī) ARMAC的計(jì)算能力,初試身手的成果,屬于他的算法處女作。據(jù)戴爺爺自述,他搞出最短路徑算法的時(shí)候連紙筆都沒(méi)用。當(dāng)時(shí)他和他老婆在阿姆斯特丹一家咖啡廳的陽(yáng)臺(tái)上曬太陽(yáng)喝咖啡,突然就把這個(gè)算法想出來(lái)樂(lè)。而且當(dāng)時(shí)的算法研究還比較原始,牛人們忙著用計(jì)算機(jī)搞數(shù)值計(jì)算,對(duì)離散算法不屑一顧。那時(shí)連一個(gè)象樣的專注于離散算法的專業(yè)期刊都沒(méi)有。戴爺爺于是推遲發(fā)表這個(gè)算法。直到1959年,他才把這個(gè)算法發(fā)表在Numerische Mathematik的創(chuàng)刊號(hào)上,權(quán)為捧場(chǎng)。:-) EWD在多個(gè)領(lǐng)域牛氣沖天,端的是理論和編程兩手硬的高手。只不過(guò)他的很多工作比較深刻,學(xué)校的老先生們覺(jué)得本科生接受不了,不給本科生講而已。戴爺爺大概因?yàn)樽疃搪窂剿惴ㄒ粦?zhàn)成名,于是有人請(qǐng)他參加另一臺(tái)計(jì)算機(jī)X1的設(shè)計(jì)工作,并且把設(shè)計(jì)實(shí)時(shí)中斷系統(tǒng)的任務(wù)派給了他。現(xiàn)在看來(lái)實(shí)時(shí)中斷也許不算什么,但要知到,X1前根本就沒(méi)有實(shí)時(shí)中斷的概念。實(shí)現(xiàn)它簡(jiǎn)直就是一場(chǎng)豪賭。戴爺爺起初還不情愿,但經(jīng)不住項(xiàng)目負(fù)責(zé)人Bram和Carel的輪番“吹捧”:我們知道實(shí)時(shí)中斷讓您工作變得非常困難,但象您這樣的牛人肯定能做出來(lái)的說(shuō)。結(jié)果戴爺爺被糖衣炮彈徹底擊穿,接下了這個(gè)燙手山芋。兩三年后,他不僅搞出了實(shí)時(shí)中斷,還圍繞這個(gè)寫(xiě)出了自己的博士論文,順利戴上博士帽。讓戴爺爺真正成名立萬(wàn)的還是在X1上開(kāi)發(fā)的Algo60,最早的高級(jí)語(yǔ)言之一。戴爺爺沒(méi)日沒(méi)夜地工作了8個(gè)月,就搞出了Algo60,也因此獲得了1972年的圖靈獎(jiǎng)。因?yàn)锳lgo60,戴爺爺發(fā)表了一篇石破天驚的文章:Recursive Programming,于是人們才知道,原來(lái)高級(jí)語(yǔ)言也可以高效地實(shí)現(xiàn)遞歸,原來(lái)從此以后,所有程序員都不可避免地和戴爺爺發(fā)明的一個(gè)詞(應(yīng)該說(shuō)是概念)打交道:堆棧。而且Algo60還讓戴爺爺深入地思考多道程序設(shè)計(jì)的問(wèn)題,最終發(fā)明了每個(gè)系統(tǒng)程序員都繞不開(kāi)的概念:semaphore。當(dāng)然,戴爺爺總是把他發(fā)明的概念嚴(yán)格形式化,極具科學(xué)家本色的說(shuō)。和這些成就想比,他提出的吃飯的哲學(xué)家問(wèn)題,也就沒(méi)什么好說(shuō)的了。說(shuō)來(lái)好笑,當(dāng)時(shí)的大學(xué)(忘了哪所了)還是覺(jué)得戴爺爺沒(méi)有受過(guò)正統(tǒng)的數(shù)學(xué)訓(xùn)練,也不是專門(mén)搞數(shù)值分析的,所以最后不太情愿地給了他一個(gè)教職。這種小挫折并不能妨礙象戴爺爺這樣的牛人創(chuàng)造歷史。他一邊教數(shù)值分析(:-D) ,一邊開(kāi)始開(kāi)發(fā)一個(gè)