| 心目中的編程高手 | |
MIT BBS上說(shuō)微軟電話(huà)面試的一道題就是“Who do you think is the best coder, and why?”。我覺(jué)得挺有意思的,也來(lái)湊個(gè)熱鬧。排名不分先后。 Bill Joy, 前任Sun的首席科學(xué)家,當年在Berkeley時(shí)主持開(kāi)發(fā)了最早版本的BSD。他還是vi和csh的作者。當然,Csh Programming Considered Harmful 是另一個(gè)話(huà)題樂(lè )。據說(shuō)他想看看自己能不能寫(xiě)個(gè)操作系統,就在三天里寫(xiě)了個(gè)自己的Unix, 也就是BSD的前身。當然是傳說(shuō)了,但足見(jiàn)他的功力。另一個(gè)傳說(shuō)是,1980年初的時(shí)候,DARPA讓BBN在Berkley Unix里加上BBN開(kāi)發(fā)的TCP/IP代碼。但當時(shí)還是研究生的B伯伯怒了,拒絕把BBN TCP/IP加入BSD,因為他覺(jué)得BBN的TCP/IP寫(xiě)得不好。于是B伯伯出手了,端的是一箭封喉,很快就寫(xiě)出了高性能的伯克利版TCP/IP。當時(shí) BBN和DARPA簽了巨額合同開(kāi)發(fā)TCP/IP Stack,誰(shuí)知他們的代碼還不如一個(gè)研究生的好。于是他們開(kāi)會(huì )。只見(jiàn)當時(shí)B伯伯穿個(gè)T-shirt出現在會(huì )議室(當時(shí)穿T-shirt不象現在,還是相當散漫的哈)。只見(jiàn)BBN問(wèn):你怎么寫(xiě)出來(lái)的?而B(niǎo)伯伯答:簡(jiǎn)單,你讀協(xié)議,然后編程就行了。最令偶暈倒的是,B伯伯碩士畢業(yè)后決定到工業(yè)界發(fā)展,于是就到了當時(shí)只有一間辦公室的Sun, 然后他就把Sparc設計出來(lái)樂(lè )。。。象這種軟硬通吃的牛人,想不佩服都不行的說(shuō)。據Bill Joy的同事說(shuō),一般開(kāi)會(huì )的時(shí)候B伯伯總是拿一堆雜志漫不經(jīng)心地讀。但往往在關(guān)鍵之處,B伯伯發(fā)言,直切要害,提出漂亮的構想,讓同事們徹底崩潰。對了,他還是Java Spec和JINI的主要作者之一。 John Carmack,ID Software的founder和Lead Programmer。上個(gè)月和一個(gè)搞圖形的師兄聊天,他竟然不知道John Carmack, 也讓偶大大地暈了一把。不過(guò)也許搞研究的和搞實(shí)戰的多少有些隔吧。想必喜歡第一人稱(chēng)射擊游戲的都知道J哥哥。90年代初只要能在PC上搞個(gè)小動(dòng)畫(huà)都能讓人驚嘆一番的時(shí)候,J哥哥就推出了石破天驚的Castle Wolfstein, 然后再接再勵,doom, doomII, Quake...每次都把3-D技術(shù)推到極 限。J哥哥的簡(jiǎn)歷上說(shuō)自己的專(zhuān)長(cháng)是"Exhaust 3-D technology",真是牛人之言不我欺的說(shuō)。做J哥哥這樣的人是很幸福的,因為各大圖形卡廠(chǎng)家一有了新產(chǎn)品就要向他“進(jìn)貢” ,不然如果他的游戲不支持哪種卡,哪種卡基本就會(huì )夭折樂(lè )。當初MS的Direct3D也得聽(tīng)取他的意見(jiàn),修改了不少API。當然,J哥哥在結婚前十數年如一日地每天編程14小時(shí)以上,也是偶們凡人望塵莫及的。對了,J哥哥高中肆業(yè)(?),可以說(shuō)是自學(xué)成才。不過(guò)呢,誰(shuí)要用這個(gè)例子來(lái)為自己學(xué)習不好辯護,就大錯特錯了。那 Leonardo Da Vinci還是自學(xué)成才呢(人是私生子,不能上學(xué))。普通人和天才還是有區別的。對了,其實(shí)偶們叫“達分奇”是相當不對的,因為Vinci是地名,而Da Vinci就是從Vinci來(lái)的人的意思。換句話(huà)說(shuō),Leonardo Da Vinci就是“從Vinci來(lái)的Leonardo”的意思。叫別人“Da Vinci”就不知所謂樂(lè )。嗯,扯遠了,打住。 David Cutler,VMS和Windows NT的首席設計師,去微軟前號稱(chēng)硅谷最牛的kernel開(kāi)發(fā)員。當初他和他的手下在微軟一周內把一個(gè)具備基本功能的bootable kernel寫(xiě)出來(lái),然后說(shuō):“who can‘t write an OS in a week?",也是牛氣沖天的說(shuō)。順便說(shuō)一句,D爺爺到NT3.5時(shí),管理1500名開(kāi)發(fā)員,自己還兼做設計和編程,不改coder本色啊。 D爺爺天生脾氣火爆,和人爭論時(shí)喜歡雙手猛擊桌子以壯聲勢。日常交談F-word不離口。他面試秘書(shū)時(shí)必問(wèn):"what do you think of the word ‘fuck‘?" ,讓無(wú)數美女剎羽而歸。終于有一天,一個(gè)同樣火爆的女面對這個(gè)問(wèn)題脫口而出:"That‘s my favorite word"。于是她被錄取樂(lè ),為D爺爺工作到NT3.5發(fā)布。 Don Knuth。高爺爺其實(shí)用不著(zhù)偶多說(shuō)。學(xué)編程的不知道他就好像學(xué)物理的不知道牛頓,學(xué)數學(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美分獎勵等等都是耳熟能詳的,偶就不饒舌樂(lè )。 順便說(shuō)一下,高老大爺是無(wú)可爭議的寫(xiě)作高手。他給Concrete Mathematics 寫(xiě)的前言可謂字字鏗鏘,堪為前言的典范。他的技術(shù)文章也是一絕,文風(fēng)細致,解釋精當,而且沒(méi)有學(xué)究氣,不失輕快跳脫。記得幾年前讀Concrete Mathemathics,時(shí)不時(shí)開(kāi)懷大笑,讓老媽極其郁悶,覺(jué)得我nerdy到家,不可救藥。其實(shí)呢,子非魚(yú),安知魚(yú)之樂(lè ),更不知那完全是高爺爺的功勞。說(shuō)到寫(xiě)作高手,不能不提Stephen A. Cook。他的文章當年就被我們的寫(xiě)作老師極力推薦,號稱(chēng)典雅文風(fēng)的樣本。庫爺爺一頭銀發(fā),身材頎長(cháng),總是面帶謙和的微笑,頗有仙風(fēng)道骨,正好和他的仙文相配的說(shuō)。 高爺爺其實(shí)還是開(kāi)源運動(dòng)的先驅。雖然他沒(méi)有象Richard Stallman那樣八方奔走,但他捐獻了好多作品,都可以在網(wǎng)上看到,比如著(zhù)名的Mathematical Writing,MMIXWare,The Tex Book等,更不用說(shuō)足以讓他流芳百世的Tex樂(lè )。 Ken Thompson,C語(yǔ)言前身B語(yǔ)言的作者,Unix的發(fā)明人之一(另一個(gè)是Dennis M. Riche老大,被尊為DMR),Belle(一個(gè)厲害的國際象棋程序)的作者之一, 操作系統Plan 9的主要作者(另一個(gè)是大牛人Rob Pike, 前不久被google挖走了)。Ken爺爺也算是計算機歷史上開(kāi)天辟地的人物了。1969年還是計算機史前時(shí)代,普通人都認為只有大型機才能運行通用的操作系統,小型機只有高山仰止的份兒。至于用高級語(yǔ)言來(lái)寫(xiě)操作系統,更是笑談。Ken爺爺自然不是池中物,于是他和DMR怒了,在1969年到1970間用匯編在PDP-7上寫(xiě)出了UNIX的第一個(gè)版本。他們并不知道,一場(chǎng)轟轟烈烈的UNIX傳奇由此拉開(kāi)了序幕。Ken爺爺在1971年又把Unix用C重寫(xiě),于是C在隨后20年成就了不知多少豪杰的夢(mèng)想和光榮。 Ken爺爺還有段佳話(huà):裝了UNIX的PDP-11最早被安裝在Bell Lab里供大家日常使用。很快大家就發(fā)現Ken爺爺總能進(jìn)入他們的帳戶(hù),獲得最高權限。Bell Lab里的科學(xué)家都心比天高,當然被搞得郁悶無(wú)比。于是有高手怒了,跳出來(lái)分析了UNIX代碼,找到后門(mén),修改代碼,然后重新編譯了整個(gè)UNIX。就在大家都以為“這個(gè)世界清凈了”的時(shí)候,他們發(fā)現Ken爺爺還是輕而易舉地拿到他們的帳戶(hù)權限,百思不解后,只好繼續郁悶。誰(shuí)知道這一郁悶,就郁悶了14年,直到Ken爺爺道出個(gè)中緣由。原來(lái),代碼里的確有后門(mén),但后門(mén)不在Unix代碼里,而在編譯Unix代碼的C編譯器里。每次C編譯器編譯UNIX的代碼,就自動(dòng)生成后門(mén)代碼。而整個(gè)Bell Lab的人,都是用Ken爺爺的C編譯器。Very Happy Rob Pike, AT&T Bell Lab前Member of Technical Staff ,現在google研究操作系統。羅伯伯是Unix的先驅?zhuān)秦悹枌?shí)驗室最早和Ken Thompson以及Dennis M. Ritche開(kāi)發(fā)Unix的猛人,UTF-8的設計人。他還在美國名嘴David Letterman的晚間節目上露了一小臉,一臉憨厚地幫一胖子吹牛搞怪。讓偶佩服不已的是,羅伯伯還是1980年奧運會(huì )射箭的銀牌得主。他還是個(gè)頗為厲害的業(yè)余天文學(xué)家,設計的珈瑪射線(xiàn)望遠鏡差點(diǎn)被NASA用在航天飛機上。他還是兩本經(jīng)典,The Unix Programming Environment 和 The Practice of Programming 的作者之一。如果初學(xué)者想在編程方面精益求精,實(shí)在該好好讀讀這兩本書(shū)。它們都有中文版的說(shuō)。羅伯伯還寫(xiě)出了Unix下第一個(gè)基于位圖的窗口系統,并且是著(zhù)名的blit 終端的作者。當然了,羅伯伯還是號稱(chēng)銳意革新的操作系統,Plan9,的主要作者??上У氖?,Plan9并沒(méi)有引起多少人的注意。羅伯伯一怒之下,寫(xiě)出了振聾發(fā)聵的雄文Systems Software Research is Irrelevant,痛斥當下系統開(kāi)發(fā)的不思進(jìn)取,固步自封的弊病。雖然這篇文章是羅伯伯含忿出手,頗有偏激之詞,但確實(shí)道出了系統開(kāi)發(fā)的無(wú)奈:開(kāi)發(fā)周期越來(lái)越長(cháng),代價(jià)越來(lái)越大,用戶(hù)被統一到少數幾個(gè)系統上,結果越來(lái)越多的活動(dòng)是測量和修補,而真正的革新越來(lái)越少。就在羅伯伯郁悶之極的時(shí)候, google登門(mén)求賢來(lái)樂(lè )。如果說(shuō)現在還有一家大眾公司在不遺余力地把系統開(kāi)發(fā)推向極致的話(huà),也就是google樂(lè )。隨便看看google的成果就知道了。具有超強容錯和負載平衡能力的分布式文件系統GFS (現在能夠用100,000臺廉價(jià)PC搭起一個(gè)巨型分布系統,并且高效便宜地進(jìn)行管理的系統也不多哈),大規模機器學(xué)習系統(拼寫(xiě)檢查,廣告匹配,拼音搜尋。。。哪個(gè)都很牛的說(shuō)),更不用說(shuō)處理海量并行計算的各式google服務(wù)了。Rob在System Software Research is Irrelevant里蕭瑟地說(shuō)現在沒(méi)有人再關(guān)心系統研究的前沿成果了。想不到他錯了,應為google關(guān)心。google網(wǎng)絡(luò )了大批功成總是試圖吸取系統研究的最新成果。想必Rob Pike在google很幸福。愿他做出更棒的系統。 | |
聯(lián)系客服