Stiff對(duì)九位卓越程序員的采訪
前言:2006 年,波蘭程序員Jaroslaw “sztywny” Rzeszótko (亦稱 Stiff)寫了一篇文章《Stiff asks, great programmers answer》,不過(guò)原英文鏈接已掛。Dodgy Coder 的博主近期從 Stiff 那得到允許,把文章轉(zhuǎn)發(fā)布在他的博客中《Q&A With Nine Great Programmers》。以下為全文:
在一個(gè)炎熱無(wú)聊的下午, 我突發(fā)奇想。 我通過(guò)公眾可以取得的電子郵件地址列表, 向一干牛人們提了 10 個(gè)問(wèn)題, 他們都是我認(rèn)為很有趣, 而且很佩服的人, 都干了很多大事。 我只用了 5 分鐘來(lái)準(zhǔn)備這些問(wèn)題 — 這些問(wèn)題是我打算私底下如果有機(jī)會(huì)和牛人們說(shuō)話, 就說(shuō)談個(gè) 10 分鐘吧, 就會(huì)問(wèn)到的, 那時(shí)候我也不會(huì)有時(shí)間去想那么多。 最后的兩個(gè)問(wèn)題其實(shí)跟編程無(wú)關(guān), 只是我碰到誰(shuí)都會(huì)問(wèn)他的, 算是我個(gè)人的愛(ài)好好了。 不是人人都想回答這些問(wèn)題, 沒(méi)有關(guān)系。 這是我第一次”采訪”別人, 難免犯了一些小錯(cuò), 當(dāng)別人開(kāi)始回答問(wèn)題時(shí), 我自己卻跑開(kāi)了…… 但先別管這個(gè), 我從這些東東里學(xué)到很多東西, 這絕對(duì)是一次價(jià)值非凡的體驗(yàn)。
不是每個(gè)人都答復(fù)了我的郵件, 也不是所有的人都想回答這些問(wèn)題的, 可能以后我還會(huì)收到, 但我實(shí)在等不及了, 現(xiàn)在發(fā)表的這些可能隨時(shí)都會(huì)更新的哦。(更新:Bjarne Stroustrup 的回復(fù)內(nèi)容于 03.08.2006 補(bǔ)上 —— Jaroslaw)
明星陣容:
●Linus Torvalds :Linux kernel作者。
●Dave Thomas:《Pragmatic Programmer | 程序員修煉之道》和《Programming Ruby》和其他優(yōu)秀書籍的作者。 你可以到這里來(lái)了解他的編程思想。
●David Heinemeier Hansson:寫了 Rails Framework- 新鮮熱辣的 web 開(kāi)發(fā)框架。他的博客在這里。
●Steve Yegge:可能是最不為人所知的, 但也是回答得最有趣的一個(gè), 他的博客很有名, 也是關(guān)于編程的。 他也是游戲 “Wyvern” 的作者。
●Peter Norvig:Google 的研究部主管, 著名的 Lisper, 寫過(guò)很著名的 (至少在某些圈子里) AI 方面的書。 他的博客。(伯樂(lè)在線注:他的《Teach Yourself Programming in Ten Years》這篇文章非常有名,對(duì)應(yīng)中文譯文我們有翻譯《Peter Norvig:自學(xué)編程,十年磨一劍》
●Guido Van Rossum:Python發(fā)明者。
●Bjarne Stroustrup:C++ 之父,個(gè)人主頁(yè)。
●James Gosling:Java 之父。(個(gè)人博客)
●Tim Bray:XML 與 Atom 規(guī)范締造者之一,他的博客。
#p#
現(xiàn)在上主菜了:
1. 您如何學(xué)的編程? 上過(guò)什么學(xué)校? 有用嗎? 還是您根本就不鳥學(xué)校的事 :) ?
Steve Yegge:
我自己在一臺(tái) HP 計(jì)算器上開(kāi)始編程的, 用他們的 RPN 堆棧語(yǔ)言, 當(dāng)時(shí) 17 歲。 之前也學(xué)過(guò)幾次編程, 但都沒(méi)有真正去學(xué)。 HP 的 28c 和 48g 科學(xué)計(jì)算器性能強(qiáng)勁, 文檔也齊全。 我在 48g 上寫了一個(gè) 3D 線框查看器 — 我有一本 3D 圖形編程的書, Pascal 的, 花了好大力氣把書里的例程轉(zhuǎn)成 RPN 堆棧語(yǔ)言。 最后它成功運(yùn)行了, 真是甜蜜的回憶。 之后我就買了一臺(tái) PC 還有 Turbo Pascal, 努力地學(xué)習(xí)編程。 當(dāng)我去大學(xué)讀 CS 時(shí)我已經(jīng)是個(gè)象模象樣的程序員了。 (注意: CS 不是 Counter-Strike)
后來(lái)我去了 University of Washington 并在那里得到 CS 學(xué)位。 這是絕對(duì)值得努力的, 我建議所有的程序員在條件允許的情況下都要盡力攻讀 CS 學(xué)位。
Linus Torvalds:
我沒(méi)在學(xué)校里學(xué)編程, 大部分是我自己看書然后就動(dòng)手干了起來(lái)(一開(kāi)始在 Commodore VIC-20 上, 后來(lái)在 Sinclair QL 上)。
這么說(shuō)吧, 我尤其認(rèn)為大學(xué)是非常有用的。 我沒(méi)有選擇上技工學(xué)校, 而是上了 Helsinki University, 那里偏重理論, 所以那里的教學(xué)并不集中在編程上面(編程只是一小部份, 總之我算是很”不務(wù)正業(yè)”的), 大部分課程集中在基本概念和諸如復(fù)雜度分析上面。
那些東西看起來(lái)很悶甚至是在浪費(fèi)精神, 但我認(rèn)為很有用, 我非常喜歡它們。 我認(rèn)為我可能是那方面會(huì)做的更好。
David Heinemeier Hansson:
我從建立自己的個(gè)人主頁(yè)開(kāi)始學(xué)習(xí)編程。 后來(lái)我又想增加一些動(dòng)態(tài)的內(nèi)容, 就先學(xué)了 ASP 再后來(lái)學(xué)了 PHP。 當(dāng)我知道怎樣編程以后, 我就去攻讀一個(gè)計(jì)算機(jī)科學(xué)與工商管理的交叉學(xué)位。
Peter Norvig:
我在高中和大學(xué)里都學(xué)過(guò)編程, 但總覺(jué)得自己是自學(xué)的多。
Dave Thomas:
讀中學(xué)時(shí)我在當(dāng)?shù)匾婚g??茖W(xué)院上過(guò)電腦課。 我整個(gè)兒被迷住了: 我愛(ài)上了編程, 并四處找開(kāi)設(shè)有軟件課程的學(xué)校。 后來(lái)我上了 Imperial College, London University 的分部。 當(dāng)時(shí)他們才剛開(kāi)設(shè)軟件課程第二年, 說(shuō)起來(lái)很難相信: 教職員工和和學(xué)生們一起工作, 把那些東西弄好, 大家從中都獲益匪淺。 在那里讀的本科課程給我打下了強(qiáng)大的軟件開(kāi)發(fā)基礎(chǔ)。 我本想呆到博士畢業(yè), 但還沒(méi)等到開(kāi)始讀博士就被人挖走了。
但是問(wèn)題的重點(diǎn)是”你怎樣學(xué)的編程?” 真正的答案是”我還在學(xué)編程。” 我想優(yōu)秀的開(kāi)發(fā)者整個(gè)生涯都不斷在學(xué)習(xí)。 這可不僅是學(xué)習(xí)新語(yǔ)言和新庫(kù)的問(wèn)題: 優(yōu)秀的開(kāi)發(fā)者經(jīng)年不斷的磨練自己的技術(shù), 提升自己的體驗(yàn)。
Guido Van Rossum:
我上了大學(xué), 那里有一臺(tái)大型主機(jī), 很多計(jì)算機(jī)課程。 這(上學(xué)校)很重要。
James Gosling:
最初我是自學(xué)的。 上大學(xué)之前我就得到第一份編程工作了。 但我很高興我上了(大學(xué))。 其樂(lè)無(wú)窮。 我一直讀到拿到了博士學(xué)位。
Bjarne Stroustrup
現(xiàn)在?Aarhus ,后去了劍橋大學(xué)。學(xué)校教給我很多實(shí)用的東西,包括我未來(lái)工作中用到的基礎(chǔ)。此外,我也從為錢而編程中學(xué)到東東,理解了現(xiàn)實(shí)世界中的問(wèn)題,正確性、可維護(hù)性、實(shí)時(shí)交付等等。
Tim Bray:
我原來(lái)想當(dāng)數(shù)學(xué)教師來(lái)著。 數(shù)學(xué)教學(xué)大綱里要求學(xué)生研修幾門計(jì)算機(jī)課程。 (結(jié)果就糊里糊涂成了計(jì)算機(jī)科學(xué)家?)
2. 您認(rèn)為程序員最應(yīng)該擁有什么樣的技能?
Steve Yegge:
筆頭和口頭溝通的技能。 除非你事先把自己的意見(jiàn)清楚地傳達(dá)給每一個(gè)人, 否則當(dāng)程序員們開(kāi)始工作時(shí), 你說(shuō)什么他們都聽(tīng)不見(jiàn)。 程序員應(yīng)該不倦閱讀, 賦諸文字, 上寫作課, 甚至學(xué)會(huì)公開(kāi)演講。
Linus Torvalds:
是那種我稱之為”品味”的東西。
我向來(lái)不以”有多專業(yè)”為標(biāo)準(zhǔn)來(lái)評(píng)價(jià)與我共事的人: 有的人很會(huì)寫代碼, 一下就能弄出一大坨, 但他們給別人代碼造成的影響則還要大坨, 而這顯然是由他們自己的代碼風(fēng)格, 和他們選擇的解決方法所造成的。 這就能告訴我他們有沒(méi)有”品味”, 而真相就是, 沒(méi)”品味”的人通常也不太好讓他去判斷別人代碼的好壞, 而他自己的代碼到最后也不會(huì)是十分的好。
但是, 還有。 有一件事非常重要, 特別是在開(kāi)源的項(xiàng)目里, 那就是溝通好你想干什么, 怎么干的能力。 向別人解釋清楚你為什么非要用某種方式干某些事情的能力十分重要, 并非人人有這個(gè)能力。
這么說(shuō)吧, 到最后也會(huì)有人搞出好的代碼來(lái)。 他們可能解釋能力不行, 也沒(méi)什么品味, 但是代碼是可以正常工作的。 這是你往往會(huì)需要另一個(gè)人(一個(gè)”品味”特殊的人)去整理那些代碼, 使它的適用范圍更廣, 而僅僅是寫出干凈的代碼, 解決難題不過(guò)是作為程序員必需有的最基本的能力而已。
David Heinemeier Hansson:
強(qiáng)烈的價(jià)值觀。 有能力問(wèn)自己: 我做的事情有價(jià)值嗎? 太多太多的程序員把太多太多的精力浪費(fèi)在無(wú)關(guān)痛癢的事情上面。 卻忽略了那些真正重要的事情。
Peter Norvig:
我覺(jué)得沒(méi)有, 專注算是吧。
Dave Thomas:
激情。
Guido Van Rossum:
你的問(wèn)題問(wèn)得太泛, 無(wú)法回答。 :-) 我想有能力煮個(gè)雞蛋當(dāng)早餐就是無(wú)價(jià)。
James Gosling:
會(huì)自我鞭策。 想真正做得好, 你得熱愛(ài)你所做的東西。
Bjarne Stroustrup
清晰思考的能力:一個(gè)程序員必須理解問(wèn)題并表述解決方案。
Tim Bray:
以事實(shí)為依據(jù), 不跟著感覺(jué)走。
3. 您覺(jué)得數(shù)學(xué)和物理對(duì)程序員重要嗎? 為什么?
Steve Yegge:
數(shù)學(xué)上有一個(gè)分支對(duì)程序員非常重要, 它叫”離散數(shù)學(xué)”或”具體數(shù)學(xué)”。 包括概率學(xué), 組合學(xué), 圖論, 歸納證明和其它有用的東西。 我會(huì)鼓勵(lì)所有程序員去學(xué)離散數(shù)學(xué), 無(wú)論他們能學(xué)多少。 即使一點(diǎn)點(diǎn)也比完全不會(huì)強(qiáng)。
至于傳統(tǒng)數(shù)學(xué), 我倒不常用到, 但當(dāng)我需要用到它就會(huì)很方便。 舉例來(lái)說(shuō), 之前我只在工作中用到過(guò)一次微積分。 我必需為某個(gè)服務(wù)從象正弦波那樣的曲線圖中計(jì)算出每日交通高峰期負(fù)載。 最簡(jiǎn)單的方法就是求出特定時(shí)間內(nèi) 1/24 曲線的積分。 如果我不懂微積分, 我就做不出合理正確的估算。
在我寫 Wyvern 游戲的時(shí)候, 我扎實(shí)的平面幾何知識(shí)作用極大。 日常基本工作中用得更多的是代數(shù)和線性代數(shù)。 但是很少用到三角學(xué)和微分方程, 微積分也很少用。
我會(huì)說(shuō)我的數(shù)學(xué)基礎(chǔ)帶給我 5% 至 10% 的進(jìn)步。 如果我懂的更多, 毫無(wú)疑問(wèn)我會(huì)變得更好, 所以每個(gè)星期我都抽出幾個(gè)鐘頭來(lái)學(xué)習(xí)數(shù)學(xué)。
我喜歡物理, 畢生都在探索嘗試掌握量子力學(xué)的基本結(jié)構(gòu)。 但我沒(méi)覺(jué)得物理對(duì)我作為一個(gè)程序員的工作有任何幫助。 當(dāng)然了, 如果我在物理領(lǐng)域工作, 象 3D 游戲編程, 或某種類型的模擬, 那就不同了。
Linus Torvalds:
我個(gè)人認(rèn)為扎實(shí)的數(shù)學(xué)基礎(chǔ)是好事情。 我不大清楚物理會(huì)如何, 但我深信懂?dāng)?shù)學(xué), 有良好的數(shù)學(xué)基礎(chǔ)有助于使你成為更好的程序員。 如果只是因?yàn)樗鼈兊乃季S模式相近似 — 你可以建立起自己想要的法則, 但它必須和自我一致。
David Heinemeier Hansson:
一點(diǎn)用都沒(méi)有。 至少在商業(yè)目的的 web 編程上。 我考慮一個(gè)人的筆頭功夫好會(huì)比這重要的多。
Peter Norvig:
是的, 電腦的很多方面來(lái)自數(shù)學(xué): 歸納, 遞歸, 邏輯等。
Dave Thomas:
也許吧。 但是老實(shí)說(shuō), 我沒(méi)見(jiàn)到他們之間有多大的關(guān)聯(lián)。
然而, 我的的確確發(fā)現(xiàn)一個(gè)人的音樂(lè)才華與他的編程技能有很大的關(guān)聯(lián)。 我也不知道為什么, 我懷疑大腦的某個(gè)區(qū)域在提升你音樂(lè)才能的同時(shí)也會(huì)提升你的軟件開(kāi)發(fā)技巧。
Guido Van Rossum:
數(shù)學(xué), 是的(是一部分; 我不管微分方程, 但是代數(shù)和邏輯就很重要)。 物理嘛, 我認(rèn)為沒(méi)有, 但保持對(duì)不同事物的興趣是一件好事。
James Gosling:
是的! 它們教會(huì)你邏輯和推理。。。 。 擁有火眼金睛。 在分析算法時(shí)數(shù)學(xué)無(wú)物可替。
Bjarne Stroustrup
這取決于程序員和編程工作。某些形式的數(shù)學(xué)分類還是非常有用,物理用的少,但學(xué)習(xí)物理是學(xué)習(xí)實(shí)用數(shù)學(xué)的最佳方法之一。
Tim Bray:
就我個(gè)人來(lái)說(shuō), 我?guī)缀鯊臎](méi)用過(guò)我大學(xué)學(xué)到的數(shù)學(xué)知識(shí)。
#p#
4. 您認(rèn)為計(jì)算機(jī)編程的下一個(gè)熱點(diǎn)是什么? 面向 X 編程, y 語(yǔ)言, 量子計(jì)算機(jī), 還是?
Steve Yegge:
我認(rèn)為 web 應(yīng)用正逐漸在變成最重要的客戶端形式。 它將會(huì)逐步淘汰其它的客戶端技術(shù): GTK, Java Swing/SWT, Qt, 當(dāng)然還有 Cocoa 和 Win32/MFC/等那些依賴平臺(tái)的技術(shù)。
這不會(huì)在一夜之間發(fā)生。 它會(huì)在今后十年里慢慢地朝那個(gè)方向前進(jìn), 可能到 web 應(yīng)用完全”取得勝利”之前還需要另一個(gè)十年。 工具, 語(yǔ)言, API, 協(xié)議, 瀏覽器技術(shù)的發(fā)展會(huì)遠(yuǎn)遠(yuǎn)超過(guò)今天你所用到的。 這個(gè)差距每年都在縮小, 而我則決定從現(xiàn)在起把我所有的開(kāi)發(fā)工作轉(zhuǎn)移到瀏覽器上來(lái)。
Microsoft 和 Apple 當(dāng)然不愿意看到這些了, 所以至關(guān)重要的第一步就是要使一個(gè)象 Firefox 那樣的開(kāi)源瀏覽器取得統(tǒng)治性的市場(chǎng)份額, 然后還需要一些 Firefox-only 的殺手級(jí)應(yīng)用。 (殺手級(jí)應(yīng)用會(huì)象 iTunes, 人人都想用它, 會(huì)為了它去下載 Firefox。)
Linus Torvalds:
我不認(rèn)為會(huì)有什么”巨大的飛躍”。 我們已經(jīng)看到很多可以幫助我們減輕日常工作壓力的工具 — 高階語(yǔ)言或者把簡(jiǎn)單數(shù)據(jù)庫(kù)集成到語(yǔ)言里面可能會(huì)是主要的一個(gè)。 但大部分喋喋不休基本上沒(méi)起什么作用。
舉例來(lái)說(shuō), 我個(gè)人相信 “Visual Basic” 比”面向?qū)ο笳Z(yǔ)言”作用更大。 雖然人們嘲笑 VB, 說(shuō)它是爛語(yǔ)言, 而他們談?wù)?OO 語(yǔ)言談了幾十年。
是的, VB 不是很好的語(yǔ)言, 但是我認(rèn)為象 VB 集成的簡(jiǎn)單 DB 接口基本上比面向?qū)ο笾匾枚唷?/p>
所以我想會(huì)有很多逐步的改進(jìn), 硬件性能的提升也會(huì)有助于編程, 但我不指望有什么東西會(huì)使生產(chǎn)力大幅度提升或者出現(xiàn)什么革命。
至少當(dāng)真正的 AI 出現(xiàn)時(shí), 我不認(rèn)為真正的 AI 還需要你去搞什么編程。
David Heinemeier Hansson:
我盡量不去預(yù)言未來(lái)。 也不怎么相信運(yùn)氣。 預(yù)見(jiàn)未來(lái)的最好方法就是實(shí)現(xiàn)它。
Peter Norvig:
大規(guī)模分布式計(jì)算。
Dave Thomas:
電腦編程的下一個(gè)熱點(diǎn)會(huì)被下下一個(gè)熱點(diǎn)吞掉, 周而復(fù)始。 我對(duì)不停地尋找熱點(diǎn)有點(diǎn)反感, 因?yàn)楫?dāng)這樣會(huì)使人們忘記真正的重點(diǎn): 打好基礎(chǔ)。 我們必需更好地和我們的客戶交流, 關(guān)注所提供的價(jià)值, 并為此而自豪。 做到了這些那開(kāi)發(fā)者就能提供更好的軟件更好的工具, 而不需要去擔(dān)心自己是否跟得上潮流。
Guido Van Rossum:
Sorry, 我對(duì)水晶球不敏感。 我曾經(jīng)在 CGI 發(fā)明的 5 年后預(yù)言了它。 :-)
James Gosling:
我最關(guān)心的兩件事是并行復(fù)制和復(fù)雜度。
Bjarne Stroustrup
我不知道,我不喜歡猜測(cè)。
Tim Bray:
不知道。
5. 如果您有三個(gè)月去學(xué)一門新技術(shù), 您會(huì)選什么?
Steve Yegge:
我剛好有 3 個(gè)月時(shí)間(作兼職), 我正在學(xué) Dojo (http://dojotoolkit。org ) 和高級(jí) AJAX 和DHTML。 我在做一個(gè)巨 NB 的 web 應(yīng)用, 邊做邊學(xué)。 Dojo 真的很酷, 它也一定會(huì)與時(shí)俱進(jìn)。
Linus Torvalds:
唔,我真的很喜歡 FPGA 的, 就是一直沒(méi)有時(shí)間坐下來(lái)好好地學(xué)。 我喜歡直接和硬件對(duì)話的感覺(jué): 這說(shuō)明我為什么最后選擇了做 OS, 因?yàn)槟菢?和編譯器呆在一起)和硬件的距離最近, 就差你不能親自去設(shè)計(jì)和制造它了。
David Heinemeier Hansson:
Mac 上的 Cocoa 編程。
Peter Norvig:
我想多學(xué)一點(diǎn) Javascript。 還有 Flash。
Dave Thomas:
如果”新”指的是 Dave Thomas 的新, 我想去上高強(qiáng)度的鋼琴課。
如果”新”指那些技術(shù)玩意, 我會(huì)選擇可幫助殘疾人的相關(guān)技術(shù)。
Guido Van Rossum:
滑雪。
James Gosling:
為了樂(lè)趣, 我想學(xué)最新的 3D 渲染技術(shù)。 我可能會(huì)寫一個(gè)照片-地圖渲染器。
Bjarne Stroustrup
在三個(gè)月之內(nèi),很重要值得學(xué)習(xí)的東西不多。我認(rèn)為應(yīng)當(dāng)考慮好好完善某個(gè)領(lǐng)域的訓(xùn)練。
Tim Bray:
安全, 加密, 數(shù)字簽名, 身份驗(yàn)證等。 麻煩的是這些東東我從來(lái)沒(méi)學(xué)過(guò)。
6. 您認(rèn)為是什么使得有的程序員比別人高效 10 倍甚至 100 倍?
Steve Yegge:
我想如果你停下來(lái)想一下為什么運(yùn)動(dòng)員不是都一樣好的話, 你就會(huì)知道答案的。 愛(ài)迪生關(guān)于天才的那段話也會(huì)給你啟示。
Linus Torvalds:
我真的不知道。 我想有些人就是能夠更好地把精力集中在那些有用的事情上, 我想他們天生就是會(huì)這樣。 我認(rèn)識(shí)的很多程序員從小就這樣。
David Heinemeier Hansson:
把難題轉(zhuǎn)化成”易”題的能力。
Peter Norvig:
調(diào)整頭腦去適應(yīng)問(wèn)題的能力。
Dave Thomas:
他們關(guān)心自己所做的。
Guido Van Rossum:
遺傳性頭腦結(jié)構(gòu)差異。
James Gosling:
他們深思熟慮。 他們不會(huì)倉(cāng)促行事, 七拼八湊。 他們對(duì)結(jié)果胸有成竹。
Bjarne Stroustrup
首先,缺乏專業(yè)且足夠的訓(xùn)練,導(dǎo)致基礎(chǔ)太差。第二,有些人有“智慧”(清晰思考和直達(dá)事物本質(zhì)的能力)、經(jīng)驗(yàn)和工具知識(shí)。編程在這些方面有很大空間,因?yàn)榫幊淌抢碚摵蛯?shí)踐的結(jié)合,二者都離不開(kāi)領(lǐng)域知識(shí)。
Tim Bray:
人類思維的多樣性令人驚異。
7. 您最喜愛(ài)的工具(操作系統(tǒng), 編程/腳本語(yǔ)言, 編輯器, 版本控制系統(tǒng), shell, 數(shù)據(jù)庫(kù)引擎, 其它您賴以生存的工具)以及您喜歡它們的理由?
Steve Yegge:
操作系統(tǒng): Unix! 我用 Linux, cygwin, 現(xiàn)在也用經(jīng)常用 darwin。 它是無(wú)法代替的生產(chǎn)工具。 每個(gè)程序員必須學(xué)會(huì)用 /bin 和 /usr/bin 目錄里的所有工具。
腳本語(yǔ)言: Ruby。 我精通所有主流腳本語(yǔ)言: Perl, Python, Tcl, Lua, Awk, Bash, 還有一些已經(jīng)忘了。 但我是個(gè)懶人, 而 Ruby 是目前為止最輕松的, 這是天堂里才有的比賽。
編程語(yǔ)言: 沒(méi)有我最喜愛(ài)的; 它們都不好。 我會(huì)選擇 Java, 因?yàn)樗鼜?qiáng)壯, 可移植, 有好工具和庫(kù)。 但 Java 不進(jìn)化就得死; 照現(xiàn)在的樣子它不足以長(zhǎng)期掌握領(lǐng)導(dǎo)地位。
編輯器: Emacs, 因?yàn)楫?dāng)前沒(méi)用比它更好的。
版本控制: SVN。 Perforce 更好, 但很貴。
Shell: Bash, 因?yàn)槲覍?shí)在懶得去學(xué)其它的。
數(shù)據(jù)庫(kù)引擎: 當(dāng)然是 MySQL, 沒(méi)有更合適的了。
其它: 我發(fā)現(xiàn) GIMP 無(wú)法評(píng)價(jià), 它的不直觀也令人抓狂。 我用它多年卻總是干不成什么。 但我又離不開(kāi)它, 真是諷刺。
Firefox 是我工具庫(kù)陣容中日益重要的一員。 當(dāng)不得已去用 IE 或 Safari 時(shí)我會(huì)覺(jué)得自己就快死了。
注意這些工具(Unix, Emacs, Firefox, GIMP, MySQL, Bash, SVN, Perforce)都有一個(gè)共同點(diǎn): 它們可以擴(kuò)展; 也就是, 它們都有 API 可以編程。 優(yōu)秀的程序員懂得如何給它們的工具編程, 而不僅是用它們。
Linus Torvalds:
實(shí)際上我沒(méi)用那么多工具, 我花了些時(shí)間寫了我自己的工具。 操作系統(tǒng)這塊最大, 還有我自己的版本控制系統(tǒng)(Git), 我用的編輯器(micro-emacs)也是經(jīng)過(guò)我定制和擴(kuò)展的。
除了那三塊, 我最關(guān)心的是郵件閱讀器。 我一直用 Pine — 不是因?yàn)樗詈茫?而是因?yàn)槲伊?xí)慣了, 它也提供了我所需要的一切而且沒(méi)什么毛病。
David Heinemeier Hansson:
OS X, TextMate, Ruby, Subversion, MySQL。 這就是我當(dāng)前的組合。 我喜歡那些漂亮而且專注于自己職責(zé)的那些工具。
Peter Norvig:
不喜歡全部主流的 OS – Windows, Mac, Linux。 喜歡 Python, Lisp 和 Emacs。
Dave Thomas:
用了 Linux 10 年, 幾年前改用 Macs 了。 工具不需要好到特別好, 但不能是需要經(jīng)常去維護(hù)的, 而必須是能讓人用的。
我不會(huì)永遠(yuǎn)只用一種工具: 我經(jīng)常盡可能地切換不同的工具以獲得更好的體驗(yàn)。 目前我用的是 OSX, Emacs, TextMate, Rails, Ruby, SVN, CVS, Rake, make, xsltproc, TeX, MySQL, Postgres, 還有一大堆小工具。 誰(shuí)知道明年我會(huì)用什么。
Guido Van Rossum:
Unix/Linux, Python, vi+emacs, Firefox。
James Gosling:
這些天來(lái)我住在 NetBeans 里面。 他幫我做了我想要的一切, 非常清晰直接和有效。 這是我住過(guò)的最舒服的環(huán)境。
Bjarne Stroustrup
Unix、sam(一個(gè)極簡(jiǎn)的文本編輯器),當(dāng)然還得有一個(gè)出色的 C++ 編譯器。
Tim Bray:
我喜歡類 Unix 操作系統(tǒng), 象 Python 和 Ruby 那樣的動(dòng)態(tài)語(yǔ)言跟象 Java 那種靜態(tài)類型語(yǔ)言(特別是 Java 的 API), Emacs, 隨便, bash, 隨便, NetBeans。
#p#
8. 您最喜愛(ài)的電腦編程方面的書是哪一本?
Steve Yegge:
老兄, 這問(wèn)題真要命。 也許是 GEB(《哥德?tīng)枴釥?、巴赫?/a>:集異璧之大成》) 吧, 雖然這本書不是嚴(yán)格的編程類書籍。 如果你特指”最喜愛(ài)的編程書”, 那也許就是 SICP (mitpress。mit。edu/* sicp*/) 了。
Linus Torvalds:
呃。 我最近喜歡讀幻想小說(shuō), 或非電腦類的書(舊書一本: Richard Dawkins 的 “The Selfish Gene”)
說(shuō)到編程方面, 躍然腦海的唯一真正編程書就是 Kernighan 和 Ritchie 經(jīng)典的 “The C Programming Language”, 因?yàn)樗鼘?shí)在是太有用了, 而且又薄又耐讀。 想想你基本能從這本書中學(xué)會(huì)我們這個(gè)時(shí)代最重要的編程語(yǔ)言之一, 而它又是那么薄那么耐讀, 這不能不說(shuō)是一個(gè)奇跡。
還有很多我喜愛(ài)的書是跟編程本身無(wú)關(guān)的, 而是關(guān)于計(jì)算機(jī)結(jié)構(gòu)和硬件方面的。 這里面當(dāng)然有 Patterson 和 Hennessy 關(guān)于計(jì)算機(jī)結(jié)構(gòu)的書, 對(duì)我個(gè)人而言可能還應(yīng)該包括 Crawford 和 Gelsinger 的 “Programming the 80386″, 它是我剛開(kāi)始 Linux 時(shí)的工具書。
基于相同的原因, 我還喜歡 Andrew Tanenbaum 的 “Operating Systems: Design and Implementation”。
David Heinemeier Hansson:
我喜歡 《Extreme Programming Explained | 解析極限編程》, 因?yàn)樗磦鹘y(tǒng)的思想; 《Patterns of Enterprise Application Architecture》, 因?yàn)樗蚱瞥橄笈c具體之間的平衡。
Peter Norvig:
《Structure and Interpretation of Computer Programs | 計(jì)算機(jī)程序的構(gòu)造和解釋》
Dave Thomas:
這取決于你如何定義”最喜愛(ài)”。 可能這方面我讀過(guò)的最好的書是 IBM 的 “IBM/360 Principles of Operation”。
Guido Van Rossum:
Neil Stephenson 的 “Quicksilver”。
James Gosling:
Jon Bentley 寫的《編程珠璣》。
Bjarne Stroustrup
K&R 的《C程序設(shè)計(jì)語(yǔ)言》
Tim Bray:
Bentley 的《編程珠璣》
9. 您最喜愛(ài)的非電腦編程類書籍?
Steve Yegge:
只有一本? 這不可能。 太多了, 太難選。
這個(gè)月我讀過(guò)的好書有 “Stardust” (Neil Gaiman) 和 “The Mind’s I” (Hofstadter/Dennet)。
我最喜愛(ài)的作家是 Kurt Vonnegut, Jr。 和 Jack Vance。
Linus Torvalds:
嗯, 我已經(jīng)提到過(guò) Dawkins 的 “The Selfish Gene”。 在幻想小說(shuō)方面, 我讀過(guò)很多, 都很好, 但是很少有稱得上”最喜愛(ài)的”。 我很少再去讀讀過(guò)的書, 選擇也會(huì)隨時(shí)間改變。 多數(shù)是科幻類的, 象 Heinlein 的 “Stranger in a Strange Land” 就是我少年時(shí)期最喜愛(ài)的, 但現(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’s Aubrey/Maturin 系列書
Tim Bray:
Ivan Denisovich 的 “One Day in the Life”
10. 您最喜愛(ài)的樂(lè)隊(duì)/歌手/組合?
Steve Yegge:
最喜愛(ài)種類: 古典, 動(dòng)漫音樂(lè), 游戲音樂(lè)
最喜愛(ài)作曲家: Rachmaninoff, Chopin, Bach
最喜愛(ài)歌手/演奏家: David Russell (classical guitar), Sviatoslav Richter(piano)
最喜愛(ài)動(dòng)漫音樂(lè): Last Exile, Haibane Renmei
Linus Torvalds:
我不常聽(tīng)音樂(lè), 要是聽(tīng)的話, 我會(huì)聽(tīng)老搖滾歌曲, 范圍從 Pink Floyd 到 Beatles 到 Queen 到 The Who。
David Heinemeier Hansson:
種類很多。 Beth Orton, Aimee Mann, Jewel, Lauryn Hill。 其實(shí), 你看看我舉的例子她們都是彈吉他的女孩
。Guido Van Rossum:
Philip Glass。
James Gosling:
我比較喜歡民謠歌手: Christine Lavin, Woody Guthrie, Pete Seeger…
Bjarne Stroustrup
樂(lè)隊(duì): The Dixie Chicks;作曲家:貝多芬
Tim Bray:
去看我的博客。
英文原文:http://sztywny.titaniumhosting.com/2006/07/23/stiff-asks-great-programmers-answers/