這篇訪談源自2006年,最先發(fā)布在波蘭程序員 Jaroslaw “sztywny” Rzeszótko (AKA “Stiff”) 的博客上。但是這篇博文現(xiàn)在找不到了。非常感謝他能授權(quán)我重新發(fā)布這個(gè)博文。 在一個(gè)炎熱無聊的下午,我突發(fā)奇想。我想通過電子郵件的方式對那些我非常感興趣和非常敬重的程序員問10個(gè)問題。準(zhǔn)備這10個(gè)問題我只花了5分鐘,這些都是我個(gè)人想問他們的問題,所以,我基本上沒想太多要問他們什么。最后兩個(gè)問題和編程沒有什么關(guān)系,我就是想問題這些人的一些興趣愛好。另外,不是每一個(gè)人都想回答我的,這是我第一次做“訪談”,所以,我犯了一些錯誤,讓一些問題沒有回答。不管怎么樣,我得到了很多很有意思的內(nèi)容,所以,這對我絕對是一次很有意義的經(jīng)歷。 并不是沒一個(gè)人都回了我的郵件,也并不是每一個(gè)人都同意回答我的這些問題,也許在我發(fā)布這篇文章后我會得到那些回答,但是我已經(jīng)迫不及待想把這些東西發(fā)布了,所以,我可能會更新這篇文章(更新:2006年3月8日,我收到了Bjarne Stroustrup的回信) – Jaroslaw 介紹
Q 1: 你是怎么學(xué)編程的?是從學(xué)校里學(xué)的嗎?或者你沒有上過學(xué):) ?Steve Yegge 在我17歲的時(shí)候,我在HP的計(jì)算器中用他們的RPN 棧語言自學(xué)編程的。在這之前,我嘗試過學(xué)習(xí)編程一兩次,但都沒有學(xué)成。HP 28c 和 48g 的科學(xué)計(jì)算器是一個(gè)很牛的東西,而且還有不錯的文檔。我搞了一本3D圖形的書,并很費(fèi)力地把其中的Pascal語言轉(zhuǎn)成RPN棧語言,并用48g畫了一個(gè)3D的線框架圖。運(yùn)行的還不錯,在我買了PC和Turbo Pascal之后,我開始認(rèn)真地學(xué)習(xí)編程。在我進(jìn)入大學(xué)計(jì)算機(jī)科學(xué)專業(yè)之前,我已經(jīng)是一個(gè)不錯的程序員了。 我在華盛頓大學(xué)拿到了計(jì)算機(jī)科學(xué)學(xué)位,這絕對是有價(jià)值的,所以,我建議所有的程序員都應(yīng)該得到計(jì)算機(jī)科學(xué)專業(yè)的學(xué)位。 Linus Torvalds 我沒有在學(xué)校里學(xué)過編程,我在主要是讀我自己想讀的書,或是就直接去編程 (一開始在 Commodore VIC-20 學(xué)編程, 然后是 Sinclair QL上編程)。 當(dāng)然,我覺得上大學(xué)非常有用。我沒有去一個(gè)工科大學(xué),我上了赫爾辛基大學(xué),這是一個(gè)比較偏理論的大學(xué),所以,那里的教育并沒有那么多的編程的東西(編程只是很少一部分),這里大多數(shù)的課程都傾向于教一些基礎(chǔ)概念的東西,如:復(fù)雜性分析??瓷先ズ軣o聊,甚至有點(diǎn)浪費(fèi)時(shí)間,但是我還是覺得這些課有用,我對大多數(shù)課都還比較enjoy。所以,我覺得我可能在這些方面是一個(gè)比較好的程序員。 David Heinemeier Hansson 我學(xué)編程是從用HTML做我的第一個(gè)網(wǎng)頁開始的。那時(shí),我想當(dāng)我的網(wǎng)頁能動態(tài)地顯示一些內(nèi)容,所以,我選擇了ASP和PHP。在做完這個(gè)網(wǎng)頁后,我知道了怎么去編程,于是我開始我的計(jì)算機(jī)科學(xué)和商業(yè)管理學(xué)位的學(xué)習(xí)。 Peter Norvig 我是從高中和大學(xué)課程中學(xué)編程的,但是我還是覺得我自己學(xué)得更多。 Dave Thomas 我是在高中學(xué)編程的。我完全地迷住了,我對編程愛得無法自拔,然后,我開始挑選那些提供軟件開發(fā)課程的大學(xué)。最終,我去了倫敦大學(xué)的帝國學(xué)院。第二年我就開始學(xué)習(xí)軟件開發(fā)的課程了,那絕對是非凡的,學(xué)生和教員在一起工作把教材做得更好,每一個(gè)人都可以從中學(xué)到很多。這些課程給了我難以置信和非常雄厚的軟件開發(fā)背景。我在那里讀到了博士,最后去創(chuàng)業(yè)了。 關(guān)于“我是怎么學(xué)編程的”這個(gè)問題,我的回答是“我現(xiàn)在還在學(xué)編程”。我認(rèn)為好的程序員一生都在學(xué)編程。這并不是去學(xué)一門語言或是一個(gè)代碼庫,好的程序員會對他們的編程技藝一年又一年地精益求精。 Guido Van Rossum 我去的那個(gè)大學(xué)有一個(gè)大型主機(jī)和很多不同的計(jì)算機(jī)課程。這對我很重要。 James Gosling 起初,我是自學(xué)的。在我去上大學(xué)之前,我就找到了一份程序員的工作。但是我很高興我去了大學(xué),在那里有很多樂趣,最終我學(xué)到了博士。 Bjarne Stroustrup 我先上的是Aarhus大學(xué), 然后是 劍橋大學(xué)(Cambridge),這兩個(gè)大學(xué)教了我很多很有用的東西,這些東西為了以后的工作打下了基礎(chǔ)。另外,我對編程和錢的關(guān)系學(xué)得非常好——知道了真實(shí)世界的問題,正確性,維護(hù)性,準(zhǔn)時(shí)交付,等等,這些比教育可能更重要。 Tim Bray 我本來想去做一個(gè)數(shù)學(xué)老師的。但是,那個(gè)學(xué)數(shù)學(xué)的大學(xué)要我去學(xué)幾個(gè)計(jì)算機(jī)的課。 Q 2: 你們覺得對程序員最重要的事是什么?Steve Yegge 溝通能力(寫和說)。除非你可以讓你的想法更有效率地傳遞出去,否則你不可能做得比編程更多的事。程序員應(yīng)該瘋狂地閱讀,鍛煉寫作能力,參加一些寫作培訓(xùn)課程,甚至鍛煉在公開場合演講的能力。 Linus Torvalds It’s a thing I call “taste”. 有一件事,我把它叫做“品味”。 我傾向于不從熟練程度來評判那些和我工作過的人。這些人能非常艱苦地寫出很多代碼,但是我想從他們對別人的代碼的反應(yīng)做出評判,這樣我們就可以明白他們自己寫的代碼怎么樣,知道他們使用的方法怎么樣。他們對別人的評判還告訴我,他們是不是有好的“品味”。是這樣的,如果一個(gè)人沒有“好的品味”,那么他一般不會很好的評判他人的代碼,他自己寫的代碼通常也不會很好。 哦,這并不只是唯一的事。還有一件事,尤其在開源項(xiàng)目里,那是他是否有能力能和別人進(jìn)行簡單的溝通,告訴別人他要干什么,怎么干。這個(gè)能力可以告訴別人為什么你干的事是非常重要的,并不是所有的人都有這個(gè)能力。 也就是說,有一些人可以寫出很不錯的代碼,但他們并不一定能解釋這些代碼,他們也并不一定有好的品味,但是代碼可以運(yùn)行得不錯。有時(shí),你需要另一個(gè)人(有那種不錯的品味的人)把他的代碼轉(zhuǎn)成更好的形式。也就是說,任何一個(gè)程序員都需要那種可以用清晰的代碼來解決復(fù)雜問題的基礎(chǔ)能力。 David Heinemeier Hansson 很強(qiáng)的對有價(jià)值的事的感覺。你可以問問自己這個(gè)問題你有沒有這種能力:我現(xiàn)在做的這個(gè)事值不值得做?很多程序員浪費(fèi)了如大海一樣的時(shí)間去做一些無意義的事。 Peter Norvig 我不覺得只有一個(gè),如果要我說一個(gè)的話,我說是“專注”。 Dave Thomas 熱情。 Guido Van Rossum 你的問題很難回答啊:-) 我猜,如果程序員會在早晨煎個(gè)雞蛋做早餐,那真是無價(jià)的能力。 James Gosling 自我激發(fā)。你需要全身心地投入到你要做的事中。 Bjarne Stroustrup 把事想清楚的能力:程序必需要能清楚地理解問題并能清楚地表述解決方案。 Tim Bray 能為自己的直覺提供證據(jù)的能力。 Q 3: 你是否認(rèn)為數(shù)學(xué)和/或物理是一種很重要的編程技能?為什么?Steve Yegge 數(shù)學(xué)有很多的分支和程序員相關(guān),他們是“離散數(shù)學(xué)”和“具體數(shù)學(xué)”。這些分支包括的學(xué)科有,概率論,組合數(shù)學(xué),圖論,歸納證明,和其它有用的東西。我會鼓勵所有的程序員都去學(xué)習(xí)離散數(shù)學(xué),無論能學(xué)多少,因?yàn)檫@總比什么都不懂強(qiáng)。 對于傳統(tǒng)的數(shù)學(xué),我也不經(jīng)常用,但是我需要的時(shí)候這些數(shù)據(jù)知識會很管用。例如,在我之前的工作中我就用到了微積分。我需要估計(jì)每個(gè)小時(shí)中某服務(wù)的高峰時(shí)間的流量負(fù)載,所以,他的負(fù)載是跟著太陽走的就像一個(gè)正弦曲線一樣。最簡單的方式就是把每個(gè)小時(shí)的負(fù)載曲線給整合起來。如果我不知道微積分,我就不知道怎么更為準(zhǔn)確地估計(jì)。 當(dāng)年我在開發(fā)我的Wyvern游戲的時(shí)候,我的平面幾何的知識對我非常有幫助。而且經(jīng)常使用代數(shù)和線性代數(shù)的知識。但我很少在工作中使用三角學(xué)或微分方程,微積分同樣也很少。 我想說,簡單的數(shù)學(xué)基礎(chǔ)讓我的技能比一般程序員好過5%到10%。如果我了解更多的數(shù)學(xué),我確信我會比今天做得更好,所以,我每周都會花幾個(gè)小時(shí)學(xué)習(xí)數(shù)學(xué)。 我喜歡物理,我還在學(xué)習(xí)物理,我會花我一生去理解量子力學(xué)。但是我個(gè)卻沒有發(fā)現(xiàn)物理對我的程序員工作有多有用。當(dāng)然,如果我從事一些和物理相關(guān)的工作,可能會有用,例如:3D游戲編程,或是某種物理特性仿真。 Linus Torvalds 我個(gè)人認(rèn)為有很強(qiáng)的數(shù)學(xué)背景是一件好事。但我不確信物理是不是這樣的,但是我深信懂?dāng)?shù)學(xué)的人會讓你成為一個(gè)更好的程序員。這些智力模型都是相通的。 David Heinemeier Hansson 根本沒用。至少對業(yè)務(wù)編程和Web應(yīng)用來說沒用。但是數(shù)學(xué)可能對一個(gè)人的寫作有很重要的幫助。 Peter Norvig 是的。很多相法都是從數(shù)學(xué)來的:歸納,遞歸,邏輯,等等。 Dave Thomas 也許吧。但老實(shí)說,我沒見到過懂這些學(xué)科和好的程序員有很大的相關(guān)性。 然而,我見過有音樂背景和好的編程技能有很強(qiáng)的相關(guān)性。我不知道這為什么,但是我懷疑大腦中的某個(gè)區(qū)域可以讓人即可以寫出好的音樂,也可以寫出好的代碼。(陳皓注:@Sir阿怪 貌似就是這個(gè)例子) Guido Van Rossum 數(shù)學(xué),當(dāng)然(對于一些學(xué)科是很重要的,我不關(guān)心微分方程,但是代數(shù)和邏輯學(xué)是很重要的),物理,我不覺得對編程技能有關(guān),當(dāng)然物理在其它很多地方很有意思。 James Gosling 當(dāng)然!數(shù)學(xué)教會了我邏輯和推導(dǎo)……讓我有了一雙懂分析的眼睛。當(dāng)我們分析算法的時(shí)候,數(shù)學(xué)是無法被取代的。 Bjarne Stroustrup 這要看程序員自己和項(xiàng)目性質(zhì)了。以前的數(shù)據(jù)很有用,物理一般,但是學(xué)好物理是是學(xué)習(xí)應(yīng)用數(shù)據(jù)最好的一條路。 Tim Bray 對我來說,在我的編程生涯中我從來都沒有用過大學(xué)里教的數(shù)學(xué)。 Q 4: 關(guān)于編程,你們認(rèn)為接下來的大事是什么?X-Oriented編程,Y語言,量子電腦 ?Steve Yegge 我認(rèn)為Web編程會逐漸變成最最重要的客戶端編程。而對于原來傳統(tǒng)的客端端編程都會被廢棄,如: GTK, Java Swing/SWT, Qt, 當(dāng)然,所有的和平臺有關(guān)的東西,例如 Cocoa 和 Win32/MFC/等。 當(dāng)然,這不會一晚上就發(fā)生了。這會在第一個(gè)十年內(nèi)緩慢地發(fā)生,而在第二個(gè)十年內(nèi),Web Apps最終會勝利。工具,語言,協(xié)議,和瀏覽器技術(shù)都會進(jìn)步得非???,并會完全超出你今天能干的事。每一年都會向前進(jìn)一步,而從今天開始,我會最終決定把我所有的應(yīng)用開發(fā)全部切換到基于瀏覽器的應(yīng)用。(陳皓注:我也是這么認(rèn)為的,參看《來信,創(chuàng)業(yè),移動互聯(lián)網(wǎng)》) 微軟和蘋果最終不愿意這個(gè)事發(fā)生,所以,觸發(fā)這個(gè)事的第一步會是一個(gè)開源的瀏覽器(如:Firefox)開始到了支配市場的地位,然后會出現(xiàn)某種Firefox的殺手級應(yīng)用(這種殺手級應(yīng)用可能會像iTunes一樣,所有的人都會用它,只需要下載Firefox) Linus Torvalds 我并不認(rèn)為我們會看到一個(gè)“大的跳躍”。我們只會看到很多的工作幫助我們把那些沉悶辛苦的工作變得更簡單——會有一個(gè)更高級別的語言,也許把簡單的數(shù)據(jù)庫集成到語言中來會是其中最主要一個(gè)。 例如,我個(gè)人相信“Visual Basic”在編程方面比“面向?qū)ο蟆弊龅酶?。?dāng)然,人們都在取笑VB是一個(gè)很爛的編程語言,并且人們在談?wù)揙O語言都十多年了。但我還覺得不是這樣的,Visual Basic 不是一個(gè)好的語言,但是我覺得VB那簡單的數(shù)據(jù)庫接口比OO更重要。 所以,我認(rèn)為會語言有很多的改進(jìn),并且,硬件的改進(jìn)會讓編程更容易,但我并不期望會有巨大的生產(chǎn)力或是革命性的改進(jìn)。 至少,你不會開始搞真正的AI的東西,我也不認(rèn)為真的AI會變成某種你不需要編程的東西。 David Heinemeier Hansson 我從不試圖預(yù)測未來。我也不相信命運(yùn)一說。最好預(yù)測未來的方式就是去實(shí)現(xiàn)未來。 Peter Norvig 大規(guī)模的分布式處理 Dave Thomas 下一個(gè)最牛的事會被再下一個(gè)最牛的事所掩蓋,然后再被再再下一個(gè)所掩蓋,再再再下一個(gè)所掩蓋……。這是一件沒完沒了的事,所以,我并不會試圖去找最牛的事,因?yàn)檫@會讓人們忘了那些最真實(shí)的問題:把基本的東西做對。我們要讓用戶更滿意,專注于交付有價(jià)值的東西,自豪于我們做的事。一個(gè)程序員可以使用很多工具把這些事做得更好,而不是去追逐時(shí)尚和流行。 Guido Van Rossum 對不起,我沒有那么多水晶球。我CGI被發(fā)明了5年后預(yù)測過它 :-) James Gosling 有兩個(gè)事是我現(xiàn)在最關(guān)心的,那就是要對付并行和復(fù)雜。 Bjarne Stroustrup 我不知道,我也不愿猜。 Tim Bray 不知道。 Q 5: 如果你有3個(gè)月學(xué)一個(gè)相對較新的技術(shù),你會學(xué)什么?Steve Yegge 我的確有3個(gè)月的業(yè)余時(shí)間,我準(zhǔn)備學(xué)一下 Dojo (http://) 和高級 AJAX 及 DHTML。我會通過開發(fā)一個(gè)相當(dāng)牛的Web應(yīng)用來學(xué)習(xí)他們。Dojo 真的酷,并且我確信它會越來越好。 Linus Torvalds 嗯,我真的很愛做 FPGA(可編程芯片),但我部是太忙了而不是坐來來開始學(xué)習(xí)。我喜愛和硬件打交道:很明顯這個(gè)原因是因?yàn)槲易罱K在做操作系統(tǒng),因?yàn)椴僮飨到y(tǒng)(除了編譯器)基本上都是在和硬件打交道,但我沒有真正地自己去設(shè)計(jì)和做一個(gè)硬件。 David Heinemeier Hansson Mac 的 Cocoa 編程 Peter Norvig 我想把 Javascript 學(xué)得更好,然也也想學(xué) flash. Dave Thomas 如果“新”是對于我來說,那么我會去學(xué)鋼琴課。 如果“新”是說技術(shù),我猜 我會選擇學(xué)習(xí)某種和為殘疾人服務(wù)的有關(guān)的技術(shù)。 Guido Van Rossum 單板滑雪。 James Gosling 搞點(diǎn)有樂趣的東西,我會學(xué)習(xí)最新的3D渲染技術(shù)。我可能會寫一個(gè)光子映射渲染器。 Bjarne Stroustrup 3個(gè)月只有很少的東西你可以學(xué),我覺得你只能參加某個(gè)成熟領(lǐng)域的培訓(xùn)。 Tim Bray 安全,加密,數(shù)字簽名,身份標(biāo)識,等等。對我來說,從沒學(xué)過這些東西對我來說是個(gè)很大的問題。 Q 6: 你們覺得如何讓一些程序員可能有超過其它程序員10倍或100倍的生產(chǎn)力?Steve Yegge 我想你應(yīng)該考慮一下為什么不是讓所有的程序員都一樣牛。托馬斯愛迪生有一句關(guān)于天才的名言也許會給你一些啟示。 Linus Torvalds 我真的不知道,我想,一些人之所以更牛是因?yàn)樗麄兛梢詫W⒂谀切┲匾氖?,而更多的只不過是在應(yīng)付。那些我所知道的真的很牛的程序員從很年輕的時(shí)候就在做事了。 David Heinemeier Hansson 把難題變簡單的能力。 Peter Norvig 把整體問題一次性放入大腦的能力。 Dave Thomas 他們關(guān)心他們做的事。 Guido Van Rossum 大腦結(jié)構(gòu)基因不同。 James Gosling 他們知道他們要做什么,他們不并不急于倉促行事。他們有他們要做的事的整個(gè)藍(lán)圖。 Bjarne Stroustrup 首先,缺少足夠的職業(yè)培訓(xùn),或基礎(chǔ)不夠。其次,這些人要即聰明(那種可以把事情想清楚,直達(dá)核心的能力),又有經(jīng)驗(yàn),并有使用工具的知識。編程需要把理論和實(shí)踐結(jié)合起來 – 并不是使用沒有實(shí)際業(yè)務(wù)的知識。 Tim Bray 令人驚訝的思維改變。 Q 7: 什么工具是你的最愛(操作系統(tǒng),編程/腳本語言,文本編輯器,版本管理,shell,數(shù)據(jù)庫,或其它沒它你活不了的工具),為什么不是別的?Steve Yegge 操作系統(tǒng): Unix! 我用Linux,cygwin,和 darwin。你無法打敗那些高效的工具。每一個(gè)程序員都應(yīng)該學(xué)習(xí)使用/bin和/usr/bin下的所有命令。 腳本語言:Ruby。我?guī)缀鯇λ械闹匾哪_本語言都很熟悉: Perl, Python, Tcl, Lua, Awk, Bash, 和一些我忘了的。但是我太懶了,而Ruby是目前所有腳本語言中最簡單的,它應(yīng)該是天堂制造的。 編程語言:沒有一個(gè)我喜歡的,我覺得所有的編程語言都很扯。我傾向于Java,因?yàn)樗軓?qiáng),可跨平臺,有多不錯的工具和類庫。但是Java未來會進(jìn)化或是滅亡,Java還沒有好到可以永遠(yuǎn)保持其領(lǐng)先地位。 文本編輯器:Emacs,因?yàn)檫@是迄今最好的編輯器。 版本管理:SVN,Perforce更好一些,但是也很貴。 Shell腳本: Bash, 因?yàn)槲姨珣辛巳W(xué)一個(gè)更好的。 數(shù)據(jù)庫: 當(dāng)然是MySQL,沒有之一。 其它:我發(fā)現(xiàn)GIMP是無價(jià)的,但也是令人惱炎的。我用這個(gè)東西好幾年了,但什么也沒干,但是我沒它活不了。很諷刺吧。Firefox 越來越是我最重要的工具。如果讓我去用IE和Safari,我會有嚴(yán)重的窒息感。 注:所有的這些工具 (Unix, Emacs, Firefox, GIMP, MySQL, Bash, SVN, Perforce) 都有一個(gè)共同點(diǎn):他們是可擴(kuò)展的。例如:他們都有可編程的API。偉大的程序員知道怎么編寫他們的工具,而不只是去使用。 Linus Torvalds 實(shí)際上,我最終也沒有用過幾個(gè)工具,而我卻花了一些時(shí)間讓這些工具為我工作。最大的事是我自己寫了個(gè)操作系統(tǒng),我也自己寫了個(gè)版本管理系統(tǒng)(git),我用的文本編輯器是 micro-emacs – 最終我也定制和擴(kuò)展了它。 除了上面三個(gè),其它的東西,我深度關(guān)心我的郵件閱讀軟件,我使用“pine”,并不是因?yàn)樗鞘飞献詈玫泥]件閱讀軟件,因?yàn)槲伊?xí)慣了,用它我會有最低限度的大驚小怪。 David Heinemeier Hansson OS X, TextMate, Ruby, Subversion, MySQL. 這些組合讓我很快樂。我希望那些有好的品味的專注于重要的事的工具。 Peter Norvig 我不喜歡那三大操作系統(tǒng) – Windows, Mac, Linux。我喜歡 Python 和 Lisp. Emacs. Dave Thomas 在使用Linux10年后我轉(zhuǎn)到Mac平臺有兩年多了。Mac并不見得有多好,但是它不需要很牛的技術(shù),也不需要經(jīng)常維護(hù),這讓我可以讓我更專心得使用它。 我并不是一個(gè)單一工具的信仰者,我喜歡換來換去的,這樣可以讓我有更多的經(jīng)驪。現(xiàn)在,我使用 OSX, Emacs, TextMate, Rails, Ruby, SVN, CVS, Rake, make, xsltproc, TeX, MySQL, Postgres, 還有一堆高效的小工具。沒人知道我明年會用什么。 Guido Van Rossum Unix/Linux, Python, vi+emacs, Firefox. James Gosling 這些天,我在用 NetBeans. 用它可以干我想干的所有的事,清潔,簡單和高效。這是最好的我永遠(yuǎn)要生活在其中的環(huán)境了。 Bjarne Stroustrup Unix, sam (一個(gè)非常簡單的文本編輯器), 當(dāng)然,一個(gè)好的C++編譯器。 Tim Bray 我喜歡 Unix-like 的操作系統(tǒng),像 Python 和 Ruby 的動態(tài)語言,像Java的靜態(tài)語言(具體說來是Java API) Emacs, 還有, bash, whatever, NetBeans. Steve Yegge 大哥,這個(gè)問題太難了。也許是”G?del, Escher, Bach: an Eternal Golden Braid” (作者Hofstadter)?雖然這不是嚴(yán)格意義上的編程的書,如果你要明確意義上的編程書,那么可能是 SICP (mitpress.mit.edu). Linus Torvalds 嗨。這兩天我在讀一些小說,或是非計(jì)算機(jī)讀物(老的但是有用的 “The Selfish Gene” 作者 Richard Dawkins)。 如果要問我編程的書,我腦子里只出現(xiàn)了唯 一一本真正的經(jīng)典的編程的書 Kernighan & Ritchie 的 “The C Programming Language”,因?yàn)檫@本書太牛了,可讀性強(qiáng)并且很短。考虛一下你想學(xué)到這世上一門最重要編程語言,并且它很要很薄,而且還有可讀性,這真是一個(gè)奇跡。 也就是說,其它我很喜歡的書并不是編程的,而是關(guān)于計(jì)算機(jī)結(jié)構(gòu)和硬件的。那顯然是 Patterson & Hennessy 的計(jì)算機(jī)結(jié)構(gòu)的書,但是我個(gè)人也許更喜歡 Crawford & Gelsinger 的 “Programming the 80386?,這是我在開始寫Linux時(shí)用的書。 相似的原因,我還喜歡 Andrew Tanenbaum 的 “Operating Systems: Design and Implementation”. David Heinemeier Hansson 我喜歡 Extreme Programming Explained 其摒棄了一般的編程實(shí)踐,我還喜歡 Patterns of Enterprise Application Architecture 其出眾地說明了抽象和具現(xiàn)的平衡。 Peter Norvig Structure and Interpretation of Computer Programs Dave Thomas 這關(guān)系到你所謂的“喜歡”,也許我最喜歡的是IBM的 “IBM/360 Principles of Operation.” Guido Van Rossum Neil Stephenson的 Quicksilver. James Gosling Programming Pearls 作者Jon Bentley. Bjarne Stroustrup K&R. Tim Bray Bentley的 Programming Pearls Q 9: 你最喜歡的和編程無關(guān)的一本書是什么?Steve Yegge 只能是一本嗎?這不可能。有太多太多我喜歡的書了。 我這個(gè)月讀過最喜歡的書是 “Stardust” (Neil Gaiman) 和 “The Mind’s I” (Hofstadter/Dennet). 我最喜歡的作者是 Kurt Vonnegut, Jr. 和 Jack Vance. Linus Torvalds 我在前面說過 Dawkins的 Selfish Gene。在小說方面,有很多很多我enjoy的,但是幾乎沒有我特別喜歡的一本。我一般不會重讀一本書,我的選擇總是會變。我可能更喜歡科幻小說,如:”Stranger in a Strange Land” 作者 Heinlein,這是我青少年時(shí)期最喜歡的書,但現(xiàn)在并不是我喜歡的了。 David Heinemeier Hansson 1984, George Orwell. Guido Van Rossum Neil Stephenson 的 Quicksilver. James Gosling Guns, Germs & Steel 作者 Jared Diamond Bjarne Stroustrup 我沒有固定喜歡的書。目前是 O’Brian 的 Aubrey/Maturin 系列。 Tim Bray One Day in the Life of Ivan Denisovich Steve Yegge 喜歡的風(fēng)格:古典音樂,動漫原聲音樂,電腦游戲音樂 喜歡的作曲家:Rachmaninoff, Chopin, Bach 喜歡的演奏者:David Russell (古典吉它), Sviatoslav Richter (鋼琴) 喜歡的動漫音樂: Last Exile, Haibane Renmei Linus Torvalds 實(shí)際上我并不太喜歡音樂,但是當(dāng)我聽音樂的時(shí)候,我一般聽經(jīng)典搖滾樂,如: Pink Floyd ,Beatles ,Queen 和 The Who 樂隊(duì)。 David Heinemeier Hansson 我喜歡很多風(fēng)格。 Beth Orton, Aimee Mann, Jewel, Lauryn Hill. Actually, 所有的這些都可以歸到 Girls with Guitars ;). Guido Van Rossum Philip Glass. James Gosling 我喜歡聽民歌: Christine Lavin, Woody Guthrie, Pete Seeger… Bjarne Stroustrup 樂隊(duì): The Dixie Chicks. 作曲家: Beethoven. Tim Bray 看我的博客吧。 |
|