日本免费精品视频,男人的天堂在线免费视频,成人久久久精品乱码一区二区三区,高清成人爽a毛片免费网站

在線客服
編程大師訪談錄圖書
人氣:67

編程大師訪談錄

本書是對19 位計(jì)算機(jī)行業(yè)先驅(qū)的采訪實(shí)錄,采訪對象包括查爾斯·西蒙尼、比爾·蓋茨、安迪·赫茲菲爾德、雷·奧奇、杰夫·拉斯金等。

內(nèi)容簡介

本書是對19 位計(jì)算機(jī)行業(yè)先驅(qū)的采訪實(shí)錄,采訪對象包括查爾斯·西蒙尼、比爾·蓋茨、安迪·赫茲菲爾德、雷·奧奇、杰夫·拉斯金等。訪談涉及他們軟件創(chuàng)造過程的靈感、技術(shù)、編程習(xí)慣、動機(jī)、反思,以及對未來軟件的暢想等。問答中集結(jié)了這些計(jì)算機(jī)先驅(qū)的精辟言論,處處閃爍著智慧的火花。

本書適合IT 從業(yè)人員閱讀。

作者簡介

Susan Lammers

現(xiàn)居華盛頓州西雅圖市,是手機(jī)應(yīng)用開發(fā)公司Flying Sofa的合伙人,也是風(fēng)險(xiǎn)投資資助的創(chuàng)業(yè)公司Headbone Interactive的董事長及創(chuàng)始人,這家公司專為互聯(lián)網(wǎng)、電視及其他面向兒童的媒體開發(fā)交互式多媒體軟件。Susan是多媒體領(lǐng)域的先鋒,曾是微軟公司早期的多媒體出版部聯(lián)合出版人和總監(jiān),負(fù)責(zé)微軟最早的交互式媒體項(xiàng)目,包括微軟的電子百科全書Encarta(英卡塔)。

1990年,Lammers離開微軟,加入一家創(chuàng)業(yè)公司,成為該公司的第三位員工。這家公司現(xiàn)名Corbis,已躋身世界的數(shù)字圖像公司之列。Corbis由比爾?蓋茨創(chuàng)立,旨在開發(fā)自然語言圖像的大型數(shù)據(jù)庫并進(jìn)行交互式電視程序設(shè)計(jì)。

Lammers畢業(yè)于斯坦福大學(xué),擁有英語文學(xué)士學(xué)位。

目錄

第1 篇 查爾斯·西蒙尼

第2 篇 巴特勒·蘭普森

第3 篇 約翰·沃諾克

第4 篇 加里·基爾代爾

第5 篇 比爾·蓋茨

第6 篇 約翰·佩奇

第7 篇 C.韋恩·萊特萊夫

第8 篇 丹·布蘭克林

第9 篇 鮑勃·弗蘭克斯頓

第10 篇 喬納森·薩奇

第11 篇 雷·奧奇

第12 篇 彼得·羅伊森

第13 篇 鮑勃·卡爾

第14 篇 杰夫·拉斯金

第15 篇 安迪·赫茲菲爾德

第16 篇 巖谷徹

第17 篇 斯科特·金

第18 篇 加隆·蘭尼爾

第19 篇 邁克爾·霍利

詞匯表

附 錄

在線預(yù)覽

中文版序

要描述技術(shù)領(lǐng)域革命性的巨變,20世紀(jì)可謂是美國人的世紀(jì)。20世紀(jì)的25年,也是本書最早出版的年代,我們看到了一場驚人的革命。個人電腦(PC)把大型機(jī)的威力和連通能力送到了每一個人的手中。新型的軟件——及時個電子表格軟件、及時套PC和Mac操作系統(tǒng)、及時個字處理程序——推動著這場革命。創(chuàng)作這些軟件程序的許多人都出現(xiàn)在本書中,他們進(jìn)一步創(chuàng)立了大型的技術(shù)公司。由PC掀起的這場革命,如今繼續(xù)在更小卻更全能的移動電話和平板電腦上上演,這些設(shè)備如今遍布全球各個角落。

那么,是誰在驅(qū)動本世紀(jì)的這場技術(shù)革命呢?談到對未來技術(shù)發(fā)展的影響,21世紀(jì)也可以叫做中國人的世紀(jì)。如今,在技術(shù)方面取得巨大進(jìn)展和革新的聰明的軟件工程師,不僅來自美國,而且同樣可能來自中國。本書匯編了一系列經(jīng)典的訪談筆錄,其中采訪了軟件創(chuàng)新產(chǎn)業(yè)里的一代天驕,幾十年來照亮了全世界程序員們前行的道路。通過這次新推出的中文版,我們希望將創(chuàng)新、靈感和智慧的種子,播撒到今日中國眾多朝氣蓬勃的編程學(xué)子心中。

為什么說這些舊日的訪談到了今天還意義重大呢?我對PC革命先驅(qū)的訪談,就是要把你直接帶入這些杰出的年輕程序員富有想象力和創(chuàng)造力的大腦中,看看他們是如何思考并迸發(fā)出新思想,然后怎樣逐步完善,再投入到艱苦卓絕的編程工作中,最終得出大眾需要使用的工具。多年以來創(chuàng)新過程的根本并沒有什么變化,因此,這些訪談內(nèi)容在今天看來依然很有價值,發(fā)人深省。這些訪談還揭示了偉大的人物是怎么開始創(chuàng)新并改變世界的,通常從一無所有開始,僅憑一支鉛筆、一個記事本以及堅(jiān)定的信念,就此開創(chuàng)出豐功偉業(yè)。以我們今日的學(xué)識,去看看上世紀(jì)80年代的訪談內(nèi)容,讀一下每個程序員的代碼和注解,讀者定能夠充分了解這些PC革命的領(lǐng)袖們?nèi)绾我孕切侵鸺て鹆窃畡荩谲浖I(yè)樹立起自己的游戲規(guī)則。今日的軟件行業(yè)里,也不斷重復(fù)著往日的故事。

這些訪談?wù)宫F(xiàn)了一些業(yè)界巨擘的遠(yuǎn)見卓識、創(chuàng)業(yè)激情和編程實(shí)踐,有比爾?蓋茨、邁克爾?霍利、巖谷徹、加隆?蘭尼爾、雷?奧茲,以及其他許多仍然在積極影響軟件行業(yè)發(fā)展的人。雖然說現(xiàn)在看這本書,它只是反映了這些程序員曾經(jīng)經(jīng)歷過的一個歷史時期(甚至有些程序、想法和關(guān)注的問題如今已經(jīng)不再需要考慮),但是訪談內(nèi)容的精髓依然能夠激起全世界追求創(chuàng)新、追求的程序員們的共鳴。我現(xiàn)在還會收到一些讀者的來信,傾訴他們怎樣在字里行間看到了一脈相承的編程精神、企業(yè)創(chuàng)新精神,那些對于經(jīng)典編程方法的生動探討,至今仍然深刻地影響著他們的生活。

谷歌研究中心主任彼得?諾維格最近提到這本書時說:

"我不得不說,這實(shí)在是一本好書,一本在計(jì)算機(jī)領(lǐng)域的好書,這樣的書越多越好。有關(guān)數(shù)學(xué)家的小傳很常見,有關(guān)計(jì)算機(jī)科學(xué)家的傳記也不少,但描寫編程大師的書卻寥寥無幾。你如果想了解一名程序員的工作,好的方法就是去讀讀他們寫的程序。如果沒有機(jī)會讀(或者讀過以后),就來讀讀本書這樣的訪談錄吧……成為一名程序大師可能要花上十年時間,但細(xì)細(xì)閱讀本書,會幫助你更快地迫近自己的目標(biāo),至少會讓你對身邊的程序員們有一個更清晰的了解。"

我希望本書在中國的出版,能夠深入下一代有遠(yuǎn)大志向的程序員的心扉,推進(jìn)他們的思想和技術(shù)生涯向前邁進(jìn),為我們的世界帶來更積極的改變。也許將來有那么24小時,我有機(jī)會和來自中國的新一代程序員坐在一起,進(jìn)行一段精彩的對話,聊聊他們是怎么創(chuàng)造性地工作的,于是我們可以再出些書,記錄下各個年代偉大程序員的聰明才智。

感謝圖靈公司這些的人士,是他們發(fā)現(xiàn)了本書對于讀者的價值,并著手讓譯本得以面世。他們?yōu)楸緯囊笄诟冻雠c不懈努力讓我深感榮幸且大為折服。我期待著Programmers At Work在中國的印行,內(nèi)心激動不已。

Susan Lammers

1

查爾斯?

西蒙尼

1948年9月10日,查爾斯?西蒙尼(Charles Simonyi)出生于匈牙利布達(dá)佩斯。上高中時,他開始接觸計(jì)算機(jī)和編程,父親安排他給一名從事計(jì)算機(jī)工作的工程師當(dāng)助手,當(dāng)時計(jì)算機(jī)在匈牙利屈指可數(shù)。

1966年,查爾斯高中畢業(yè),同時也完成了他的及時個編譯器。憑借開發(fā)編譯器時積累的經(jīng)驗(yàn),他在丹麥哥本哈根的A/S Regnecentralen 公司謀得了一個職位。1968年,他離開丹麥進(jìn)入美國加州大學(xué)伯克利分校學(xué)習(xí),并于1972年獲得理學(xué)學(xué)士學(xué)位,1977年獲得斯坦福大學(xué)博士學(xué)位。

西蒙尼曾先后在加州大學(xué)伯克利分校計(jì)算機(jī)中心、伯克利計(jì)算機(jī)公司、ILLIAC 4項(xiàng)目和施樂PARC工作。自1981年以來,他一直供職于微軟公司。在施樂公司,他開發(fā)了Alto個人電腦的Bravo和Bravo X程序。在微軟,他組建了應(yīng)用軟件小組,并領(lǐng)導(dǎo)開發(fā)出Multiplan、Microsoft Word、Microsoft Excel等廣受歡迎的應(yīng)用軟件。

在微型計(jì)算機(jī)世界的幾乎各個領(lǐng)域,查爾斯?西蒙尼都打上了他的烙印,要么通過他自己的作品,要么通過影響和他共事的那些人。他謙遜而活潑,臉上常掛著微笑,幾乎能夠就任何話題發(fā)表評論,不論是否與計(jì)算機(jī)相關(guān)。

我們跟查爾斯見過兩次面,一次是在午餐時間,一次是在他的辦公室,談話內(nèi)容無所不及,從Microsoft Excel的特性,到駕駛直升機(jī),乃至現(xiàn)代詩歌的某些話題。他說話時帶有很重的匈牙利口音,這已經(jīng)成了查爾斯講話和編程的獨(dú)特標(biāo)志。他每天幾乎都穿同一身行頭,褪色的牛仔夾克、襯衫和破舊的牛仔褲,看上去仍是一副20世紀(jì)60年代伯克利大學(xué)學(xué)生的模樣,不過他的學(xué)識、舉止和成就無不顯示出他的過人智慧和豐富經(jīng)驗(yàn)。

采訪者:你在匈牙利高中畢業(yè)之前就寫了自己的及時個計(jì)算機(jī)程序,是嗎?

西蒙尼:是的。上高中時,我寫了自己的及時個程序,還有及時個專業(yè)程序。我寫的及時個程序是填充幻方,讓每行、每列的數(shù)之和均相等。我編程用的是一臺古老的電子管計(jì)算機(jī)。一整個下午不停地推按鈕才把程序輸進(jìn)那臺機(jī)器。當(dāng)天晚上,我頭痛難耐,帶著幾大卷打印有8080幻方的紙回到家里。那是1964年。

采訪者:說說你用過的及時臺計(jì)算機(jī)?

西蒙尼:那是一臺俄制計(jì)算機(jī),Ural II。它只有4K內(nèi)存,支持40位浮點(diǎn)和20位操作指令。這臺計(jì)算機(jī)只能用八進(jìn)制機(jī)器碼編程(沒有匯編器)。我寫了幾千行八進(jìn)制機(jī)器碼。

這臺計(jì)算機(jī)的操作全部通過控制臺完成,你需要自己動手,跟它進(jìn)行一對一的交互。程序員不必站在一旁等待另一位計(jì)算機(jī)操作員執(zhí)行一批卡片。從這個角度看,Ural II酷似個人計(jì)算機(jī),因?yàn)槌藱C(jī)器和你,不用其他人介入。就4K的內(nèi)存和緩慢的速度而言,它跟1974年推出的Altair非常相似。1964年Ural II帶給我的興奮就和1974年Altair帶給比爾?蓋茨的興奮一樣。

顯然,Ural II在某些方面有別于個人計(jì)算機(jī)。Ural II體積龐大,要占用一間很大的房間,輸入和輸出的方法極為原始——主要是通過控制臺開關(guān)。控制臺看起來像一臺老式收銀機(jī),上面有整整六列開關(guān),右側(cè)有一個輸入鍵。每一列有8個鍵,編號從0到7。輸入數(shù)字的方式同操作收銀機(jī)差不多。因此,要輸入2275,你需要依次撥動2、2、7、5這幾個鍵。不小心按錯的話,只要還沒有按下右側(cè)的輸入鍵,都還可以修正。這種操作非常提神,因?yàn)樗鼤橛写罅吭胍簟C看伟磩娱_關(guān)都會發(fā)出響亮的喀噠聲,每當(dāng)清掉按鍵時——這全靠機(jī)械完成——所有按鍵一下子同時釋放,伴著巨大的 聲。

采訪者:你的及時個專業(yè)程序是什么樣的?

西蒙尼:我的及時個專業(yè)程序是為一種非常簡單、類似FORTRAN的高級語言寫的編譯器。我把它作為一項(xiàng)創(chuàng)新成果賣給了政府部門,并得到一大筆錢,不過我一分也沒花,因?yàn)椴痪弥笪揖碗x開了匈牙利。

機(jī)遇出現(xiàn)在布達(dá)佩斯的一次交易會上,我見到幾位從事計(jì)算機(jī)工作的丹麥人。我跟他們接洽,了解到他們新機(jī)器相關(guān)的大量信息。在隨后一次交易會上,我?guī)献约菏孪葴?zhǔn)備好的一個小演示程序,它能反饋任意時刻機(jī)器正在分析長表達(dá)式的哪一部分。我拜托其中一人把這個程序帶回丹麥,拿給他們的主管看。他們肯定很喜歡這個程序,因?yàn)樗麄兘o了我一份工作。我就這樣離開了匈牙利。

我在丹麥干了一年半的編程,攢夠了錢去加州大學(xué)伯克利分校求學(xué)。在校期間,我進(jìn)入伯克利計(jì)算機(jī)中心當(dāng)程序員,掙的錢剛好也夠付學(xué)費(fèi)的了。

在伯克利上學(xué)時,我寫了一個很不錯的SNOBOL編譯器。有個計(jì)算機(jī)科學(xué)教授,叫巴特勒?蘭普森,非常喜歡這個編譯器,他還讓計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生在課堂上使用它。后來,他跟另外幾個教授一起創(chuàng)辦了伯克利計(jì)算機(jī)公司,我便在那家公司謀得一份工作。伯克利計(jì)算機(jī)公司倒閉后,核心成員都去了施樂PARC。

采訪者:你的編程風(fēng)格主要受誰的影響?

西蒙尼:影響主要來自兩方面——一位匈牙利工程師,一臺我在丹麥工作時用的計(jì)算機(jī)。我在匈牙利的導(dǎo)師是一位使用Ural II計(jì)算機(jī)工作的工程師。我像個狂熱的追星族,卑躬屈膝外加免費(fèi)跑腿,以換取別人容許我待在一個我本不該待的地方。這不是孩子待的地方。它是全匈牙利(也許)僅有的五臺計(jì)算機(jī)中的一臺,被看作重要資產(chǎn)。

采訪者:你是怎么個卑躬屈膝法?

西蒙尼:我父親是電子工程學(xué)教授,這個工程師是他的學(xué)生。我猜是我父親托他幫忙讓我進(jìn)去的。我也盡量讓自己能派上用場。我先是給他帶午飯,后來幫他拿東西遞家伙,我主動提出幫他們守夜,看管機(jī)器。

他們一到晚上就把計(jì)算機(jī)關(guān)掉,到第二天早上再打開。開關(guān)真空管時,電熱絲加熱或冷卻很容易損壞。這臺機(jī)器有2000個真空管,每次打開時都會壞掉一個。因此,他們上班后的及時件事就是先花一個小時找出那個壞掉的真空管。我在那里守夜的話,計(jì)算機(jī)就可以一直開著,他們也不用浪費(fèi)那一個小時。于是,在晚上看管機(jī)器的時候,我也就可以用這臺計(jì)算機(jī)了。

總之,我和這位工程師成了好朋友。他是個數(shù)學(xué)天才。我早年學(xué)到的許多技巧都是他教的,有的是關(guān)于算術(shù)思考,有的是關(guān)于符號問題。

另外,那臺丹麥計(jì)算機(jī)對我影響也很大。當(dāng)時,它擁有的也許是世界上好的Algol編譯器,Gier Algol。去丹麥之前,我已經(jīng)把這個編譯器的全部代碼清單研究了個遍。它全都是用機(jī)器語言寫成的,因此我既學(xué)了機(jī)器語言編程,又學(xué)會了從美學(xué)層面上思考編譯過程。這個編譯器的設(shè)計(jì)者是彼得?諾爾(Peter Naur) 。語法等式巴科斯?諾爾范式(BNF)中的字母N就取自他的名字。我對這個程序知根知底,至今仍記憶猶新。

舉個例子,我在伯克利上學(xué)時寫的SNOBOL編譯器只是這個程序的變體。我覺得Gier Algol程序現(xiàn)在仍在我腦海中,也影響著我的編程風(fēng)格。我總是問自己:"如果這是Algol編譯器的一部分,他們會怎么做呢?"這個程序真是精妙無比。

有一點(diǎn)我印象很深,就是他們倒著掃描源代碼文本的做法。在某些情況下,如果你倒著做事情,之前顯得很復(fù)雜的問題突然之間會變得非常簡單。例如,解析前向引用(forward reference)可能很難。要是倒著掃描,它們就變成了后向引用(backward reference),很容易解析。只要從新的角度看待程序,原本可能很難解決的問題也會變得容易解決。這個Algol編譯器處處是玄機(jī)。

采訪者:你是怎么進(jìn)入微軟的?

西蒙尼:決定離開施樂之后,我開始四處打探。我請鮑勃?麥特卡爾夫(Bob Metcalfe)共進(jìn)午餐。鮑勃是以太網(wǎng)發(fā)明人,3Com公司的董事長和創(chuàng)始人,早我兩年離開施樂。他給了我一張名單,上面列有我應(yīng)該去找的人。名單上比爾?蓋茨排在及時位。誰排在第二我記不清了,因?yàn)槌吮葼?蓋茨我沒再找過其他人。

采訪者:編程是一種技巧或技能嗎?

西蒙尼:什么是編程?人們對此一直各持己見。有人說它是科學(xué),有人說它是藝術(shù),還有人稱之為技能或手藝。我認(rèn)為這三方面兼而有之。我們喜歡說它蘊(yùn)含大量藝術(shù)成分,但是我們都知道它里面更多的是科學(xué)。

孩子們在學(xué)校里學(xué)習(xí)數(shù)學(xué),高中畢業(yè)時,他們會以為數(shù)學(xué)就是加法和乘法,甚或代數(shù)和微積分。其實(shí),算術(shù),即使簡單如加法的運(yùn)算,背后也有令人難以置信的科學(xué)理論作支持。

計(jì)算機(jī)編程背后也有大量科學(xué)理論作支持。例如,哥德爾定理的數(shù)學(xué)證明冗長而復(fù)雜,但是如果借用計(jì)算機(jī)科學(xué)的圖靈定理,證明起來不費(fèi)吹灰之力。信息理論和計(jì)算機(jī)科學(xué)其他領(lǐng)域?qū)?shù)學(xué)影響巨大,反之亦然。

編程包含有大量科學(xué),同時,它也有點(diǎn)像手藝。實(shí)際上,在許多人看來,編程是一項(xiàng)復(fù)雜的技能,這跟工具制造很像,需要精雕細(xì)琢。我認(rèn)為,只要將科學(xué)、藝術(shù)和技能這三者拿捏得恰到好處,你就能取得一些引人矚目的成績。

采訪者:你覺得編程的哪部分可以視作藝術(shù)?是用戶界面設(shè)計(jì)嗎?

西蒙尼:在我看來,編程顯然有審美的一面,對用戶界面而言,不僅設(shè)計(jì)中存在,甚至連外觀也不例外。當(dāng)你看到那些丑陋的屏幕時,程序員在藝術(shù)上的不足便一覽無遺。在其他方面,計(jì)算機(jī)編程也堪稱藝術(shù),正如高能物理也可視作藝術(shù)一樣。

采訪者:審美是只關(guān)乎用戶對程序的感覺,還是它也直接影響到其他程序員分析該程序并探究其編寫方式?

西蒙尼:也會影響的,毋庸置疑。我覺得代碼清單和計(jì)算機(jī)自身的美感一直讓我陶醉其中。

例如,那臺俄制機(jī)器看起來像是科幻小說里的計(jì)算機(jī),因?yàn)闄C(jī)器里的每個觸發(fā)器(存儲1比特信息的開關(guān)裝置)都有一個小小的、橙色的老式氣體放電燈。數(shù)以百計(jì)的橙色小燈在玻璃門和柜子后面不停閃爍。機(jī)器整個生命的脈動仿佛就在眼前。

那臺丹麥計(jì)算機(jī)是件精美的家具。它的大小與舊式的衣櫥相當(dāng)。計(jì)算機(jī)正面有3扇柚木門。有一次,我看到有個美國來的主管半信半疑地盯著機(jī)器,就因?yàn)樗怯描帜厩栋宓摹K踔吝€有一個丹麥現(xiàn)代風(fēng)格的桌臺。整臺機(jī)器散發(fā)著迷人的柚木味道。

伯克利計(jì)算機(jī)個頭非常大,大約有6米長,1.8米高,0.6米深。它隱藏在漆成黑色的混凝土穹頂里。它放在穹頂里打著聚光燈的樣子看上去有點(diǎn)像電影《2001太空漫游》里的黑色獨(dú)石。

采訪者:當(dāng)你分析某個程序時,你認(rèn)為什么樣的代碼清單或算法結(jié)構(gòu)在審美上是優(yōu)美或悅?cè)说模?/p>

西蒙尼:我覺得代碼清單帶給人的愉快同整潔的家差不多。你一眼就能分辨出家里是雜亂無章(比如垃圾和沒洗的碟子到處亂扔)還是整潔如新。這也許意義不大。因?yàn)楣馐欠孔诱麧嵳f明不了什么,它仍可能藏污納垢!但是及時印象很重要,它至少反映了程序的某些方面。我敢打賭,我在3米開外就能看出程序拙劣與否。我也許沒法保障它很不錯,但如果從3米外看起來就很糟,我敢保障這程序?qū)懙貌挥眯摹H绻麑懙貌挥眯模撬谶壿嬌弦苍S就不會優(yōu)美。

不過假定它看上去不錯,然后你打算繼續(xù)深入。理解程序的結(jié)構(gòu)要困難得多。在結(jié)構(gòu)因何優(yōu)美的問題上也是見仁見智。純粹主義者認(rèn)為,只有那些按照極其嚴(yán)格的數(shù)學(xué)方式來使用某些很簡單的構(gòu)造的結(jié)構(gòu)化編程,才是優(yōu)美的。就20世紀(jì)60年代之前的情況而言,這種反應(yīng)非常合乎情理,因?yàn)楫?dāng)時程序員并不知道結(jié)構(gòu)化的概念。

不過在我看來,即使程序不遵循這些概念,只要它們有其他可取之處,也可以算是優(yōu)美的。這就像拿現(xiàn)代詩歌和古典詩歌比較。我覺得古典詩歌很棒,你可以欣賞它。但是你不能只欣賞古典詩歌而無視其他。另外,這也并不意味著,只要在紙上胡亂寫上一些字,稱之為詩歌,就有了美。但是,如果代碼有一些可取之處,我不認(rèn)為非得是數(shù)學(xué)意義上的結(jié)構(gòu)化才稱得上優(yōu)美。

采訪者:別人讀幾段你的源代碼,有沒有可能斷定"這代碼是查爾斯?西蒙尼寫的"?

西蒙尼:噢,是的,毫無疑問。是不是我本人寫的可能很難分辨,但有一點(diǎn)是確定無疑的:只要看了代碼,你就能知道它是不是我的團(tuán)隊(duì)寫的,或者是不是受我的影響寫的。這是因?yàn)槲覐?972年起寫的代碼都遵循特定的命名規(guī)范,許多人稱之為"匈牙利命名法"。你一眼就能分辨出哪些代碼是受我的影響寫出來的,包括Microsoft Word、Multiplan和Bravo,以及其他許多遵循這些規(guī)范寫成的程序。

采訪者:你提到的"匈牙利命名法"是指什么?

西蒙尼:稱它為"匈牙利命名法"是個玩笑。你知道,如果有人說"這對我來說就是希臘文",這表示他們看不懂,因此也可能它就真是用希臘語寫的。這里的"匈牙利"是句反話,因?yàn)檫@些命名規(guī)范其實(shí)是要讓代碼更易讀。這個玩笑說的是程序看起來這么難讀,說不定真是用匈牙利語寫的。其實(shí)這套規(guī)范能夠很好地控制程序中所有變量的命名。

要是分解一個程序,把它放進(jìn)磨床,然后對碎片進(jìn)行分類,你就會發(fā)現(xiàn)程序的大部分都是名字。寫下"apples + oranges",你會發(fā)現(xiàn)名字"apples"有6個字符,運(yùn)算符"+"只有1個字符,名字"oranges"有7個字符,一共14個字符,只有一個字符即加號與運(yùn)算有關(guān)。因此,對我來說,要起到作用或有所改進(jìn),合乎邏輯的做法就是盡力完善程序的主要部分,也就是名字。"匈牙利命名法"是一種根據(jù)變量的屬性自動為其創(chuàng)建名字的命名方法。這跟人們把當(dāng)裁縫(tailor)的叫做泰勒(Taylor)以及把當(dāng)鐵匠(blacksmith)的叫做史密斯(Smith)非常相似。

因此,面對一個具備某些屬性的結(jié)構(gòu),不要隨隨便便地取個名字,然后讓所有人去琢磨名字和屬性之間有什么關(guān)聯(lián),你應(yīng)該把屬性本身用作結(jié)構(gòu)的名字。這種方法有很多優(yōu)點(diǎn)。首先,造個名字很容易,想到那些屬性時,把它們寫下來,名字自然就有了。第二,它很容易理解,因?yàn)楫?dāng)你讀到某個變量時,從名字本身就能了解到與屬性有關(guān)的大量信息。這些屬性會越來越多,因此很難簡明地描述它們。為此"匈牙利命名法"引入了一種縮寫符號,以很小的空間就能展現(xiàn)具體屬性。當(dāng)然,這在不知情的人看來是一團(tuán)亂麻,那個玩笑就是這么來的。

有些人認(rèn)為,如果他們可以讀出代碼里的每個字,那么程序就是可讀的。實(shí)際上,這種意義上的可讀性并不可取。沒有人會拿著代碼清單,站到演講臺上大聲朗讀程序。關(guān)鍵在于理解。只是能閱讀單詞并發(fā)出音來,這毫無用處。當(dāng)人們看到采用"匈牙利命名法"的代碼清單時,他們發(fā)現(xiàn)這些詞很難念,可能就會認(rèn)為代碼不是可讀的。但實(shí)際上,由于名字和屬性之間存在關(guān)聯(lián),它更容易理解,也更便于溝通。那些使用匈牙利命名法編程的人,即使在離開我的部門之后,仍會繼續(xù)使用它。這種命名法已經(jīng)打入蘋果電腦、3Com及其他許多公司。

采訪者:下面說說你創(chuàng)建程序的整個過程。是否存在適用于所有程序的過程?

西蒙尼:當(dāng)然。嚴(yán)格來說,對編程而言,我認(rèn)為我們應(yīng)該知道自己想要做什么。如果不知道,那么有一個過程確實(shí)是解決各種問題的必經(jīng)之路,那就是要弄清楚:我試圖做什么?目標(biāo)是什么?

打個比方,我想開發(fā)一個菜單驅(qū)動的文本編輯器,要求響應(yīng)速度快,并且提供拼寫檢查器等。在開始真正編程之前,我需要先弄清楚最終產(chǎn)品。有時候,目標(biāo)的選擇取決于我都掌握了哪些技巧。以Bravo為例,這個程序是以算法為導(dǎo)引的。巴特勒?蘭普森描述了兩個很有意思的算法,于是我們試圖圍繞這些算法來編寫這個編輯器,以充分利用這些算法。此外,J. 斯特羅徹?摩爾(J. Strother Moore),就是Boyer-Moore字符串查找算法的Moore,在文檔編輯方面有幾個很有意思的算法。于是我們決定:"嘿,這個編輯器要包含摩爾編輯算法、蘭普森的屏幕更新算法還有兩個緩存。"等到對目標(biāo)有充分的把握之后,我才會開始真正的編程。我調(diào)整姿態(tài),關(guān)上房門,并且大聲宣布:"現(xiàn)在我要開始編程了。"

采訪者:當(dāng)你調(diào)整好狀態(tài)真正開始編程時,及時步會做什么?

西蒙尼:編程的及時步是想象。就是要在腦海中對來龍去脈有極為清晰的把握。在這個初始階段,我會使用紙和鉛筆。我只是信手涂鴉,并不寫代碼。我也許會畫些方框或箭頭,但基本上只是涂鴉,因?yàn)檎嬲南敕ㄔ谖夷X海里。我喜歡想象那些有待維護(hù)的結(jié)構(gòu),那些結(jié)構(gòu)代表著我想編碼的真實(shí)世界。

一旦這個結(jié)構(gòu)考慮得相當(dāng)嚴(yán)謹(jǐn)和明確,我便開始寫代碼。我會坐到終端前,或者換在以前的話,就會拿張白紙,開始寫代碼。這相當(dāng)容易。我只要把頭腦中的想法變換成代碼寫下來,我知道結(jié)果應(yīng)該是什么樣的。大部分代碼會水到渠成,不過我維護(hù)的那些數(shù)據(jù)結(jié)構(gòu)才是關(guān)鍵。我會先想好數(shù)據(jù)結(jié)構(gòu),并在整個編碼過程中將它們牢記于心。

采訪者:這是最重要的一步嗎?

西蒙尼:當(dāng)然,這是最重要的一步:算法的知識當(dāng)屬科學(xué),結(jié)構(gòu)的想象則是藝術(shù)。這些算法的細(xì)節(jié),以及編寫高效代碼實(shí)現(xiàn)這些結(jié)構(gòu)的轉(zhuǎn)換,是編程像手藝活的一面。從技術(shù)上講,這就是所謂維護(hù)結(jié)構(gòu)的不變性。編寫代碼以維護(hù)不變性是相對簡單的技藝,不過這需要非常用心并輔之以大量訓(xùn)練才能練就。

采訪者:你對編程感到過厭倦嗎?

西蒙尼:是的。

采訪者:編寫程序的過程是痛苦的還是快樂的?

西蒙尼:兩者兼而有之。假裝每時每刻都很快樂是做作。就像運(yùn)動員所說的:"要是沒受傷的話,肯定是你還不夠努力。"二十年后,我已經(jīng)體會不到剛開始編程一兩年時的那種新鮮感。當(dāng)然,有時我仍會有這種感覺,只不過不像以往那樣常有,這是沒辦法的事。

采訪者:你每天都有固定安排嗎?你每天都編程嗎,或者你會先把問題放一放,然后集中一周時間搞定它?

西蒙尼:我不是每天都有機(jī)會編程。我不用特意把問題放一放,因?yàn)榭倳腥舜驍辔摇N乙话阃砩暇幊蹋滋炜偸潜淮驍唷?/p>

采訪者:晚上你會到辦公室還是在家工作?

西蒙尼:我就在辦公室工作。我住得很近,非常方便。來辦公室就像進(jìn)自己家另一個房間。我不會窩在家里編程的,來辦公室也就是兩分鐘的事兒。

采訪者:你如何管理手下的程序員?你覺得現(xiàn)在自己做管理多過編程嗎?

西蒙尼:我兩樣都做,目前還是編程多一些。開發(fā)Bravo時,對程序員的管理非常非常直接。有一次,我其實(shí)寫了一份極為詳盡的工作指令,也就是所謂的元程序。這差不多就是個程序,只不過是用非常非常高級的語言寫的。我們從斯坦福大學(xué)找了兩個機(jī)靈鬼作為"試驗(yàn)對象"。他們寫的程序符合我的要求,這樣我們實(shí)現(xiàn)了雙贏:首先,對我來說,用這種非常高級的語言工作更容易,本質(zhì)上是在對這些人進(jìn)行編程;其次,他們真正弄清楚了這個程序,效果遠(yuǎn)遠(yuǎn)好過我直接交給他們寫好的代碼清單,并叮囑他們仔細(xì)研讀這個程序。他們掌握了這個程序,因?yàn)檫@是他們寫的。瞧,每個人都可以宣稱自己寫了這個程序。這個程序是我寫的,也是他們寫的。真是太棒了!我認(rèn)為管理的方法是言傳身教,經(jīng)常復(fù)審代碼。我們一直堅(jiān)持開展代碼復(fù)審。

采訪者:讓多名程序員開發(fā)一個程序,開發(fā)速度會更快嗎?

西蒙尼:不一定。編寫同一個程序的人員越多,人均產(chǎn)出的實(shí)際代碼量越少。結(jié)果,總的代碼產(chǎn)出一開始會更多,之后實(shí)際上可能會減少。以兩個人為例,也許單位時間只能多寫百分之五十的代碼。

順便提一下,代碼的效率還會隨著開發(fā)同一個程序的人員數(shù)量的增加而有所降低。較高效的程序往往是一個人寫的。的問題是,它可能需要寫上一輩子,而這顯然是無法接受的。因此你需要找上三五十個,甚或好幾百個人開發(fā)一個項(xiàng)目。

采訪者:你能預(yù)估編寫一個程序要用多長時間嗎?

西蒙尼:預(yù)估編寫程序要花的時間難度很大。之所以難度很大,原因多種多樣。這并不意味著我們就不用盡全力預(yù)估,因?yàn)轭A(yù)估時間可能用處很大,就像天氣預(yù)報(bào)不僅有經(jīng)濟(jì)效益還有其他好處一樣。

真正的好程序會永遠(yuǎn)存在,寫起來永無止境,至少只要硬件存在,程序就會存在,甚至更長久。當(dāng)然,只要Alto計(jì)算機(jī)存在24小時,Bravo就

網(wǎng)友評論(不代表本站觀點(diǎn))

來自無昵稱**的評論:

挺好

2012-01-17 02:45:09
來自無昵稱**的評論:

很喜歡,很快

2012-04-08 15:35:09
來自haijunz**的評論:

都是些牛人啊!

2012-05-09 14:08:45
來自shaobo7**的評論:

從前人的經(jīng)驗(yàn)中學(xué)習(xí)

2012-08-13 10:35:33
來自無昵稱**的評論:

好書,值得一看。

2013-03-02 16:04:20
來自無昵稱**的評論:

講述了大師們的編程故事。學(xué)師們的精神

2013-07-19 20:26:08
來自秦朝小**的評論:

看了看,好看,到貨很快,謝謝!

2013-10-08 16:38:02
來自圍巾的**的評論:

是計(jì)算機(jī)學(xué)習(xí)者必讀的書籍,好好讀,對工作很有幫助

2013-11-09 14:37:12
來自無昵稱**的評論:

這個商品不錯~

2013-12-13 21:10:48
來自無昵稱**的評論:

這個商品不錯~

2014-01-11 16:12:25
來自caopan2**的評論:

大師的人格魅力讓人起敬!好文章好書。

2014-02-02 10:01:03
來自iisun**的評論:

看起來還不錯,有空慢慢看

2014-04-19 17:34:49
來自無昵稱**的評論:

這個商品還可以

2014-07-06 23:14:37
來自無昵稱**的評論:

書折了,好幾頁變形,不是很滿意,湊合看。

2015-10-28 12:47:55
來自無昵稱**的評論:

2016-02-14 12:01:22
來自xueyufi**的評論:

看到對于此書的推薦,在當(dāng)當(dāng)上預(yù)訂了,拿到手后花了兩個晚上看完,覺得不錯,值得一看

2012-01-06 11:14:26
來自vanbor**的評論:

如果你有閑情,不妨一讀。雖然內(nèi)容有些舊,權(quán)當(dāng)了解歷史

2013-10-28 11:20:06
來自哥哥寶**的評論:

這本書寫了對大師的采訪,內(nèi)容馬馬虎虎,對編程什么的沒有什么深度。

2013-09-09 10:48:17
來自無昵稱**的評論:

編程大師的奮斗史,了解就好,每個人都有自己的路

2013-04-08 08:47:15
來自心靈診**的評論:

原版是1989年寫的,那個時候 Bill Gate 還沒那么成功,看看他當(dāng)時是怎么思考的也不錯

2014-04-19 18:50:36
來自圍巾的**的評論:

這么一本書purchase到59元(原價),真是太能瞎掰了。里面的人都算不上計(jì)算機(jī)大師,像比爾蓋茨那樣的人怎么可以算作是大師呢?人家書名原本就叫“Programmers at Work”,根本就沒有大師這兩個字眼,所以我覺得出版商和譯者這么搞,很讓我感到厭煩和反感。

2012-04-12 16:32:28
來自書雷**的評論:

這本書我只瀏覽,從客觀的角度,沒有什么技術(shù)知識,啟發(fā)性很好。書中至少有三個大師促進(jìn)我的思路提前成熟。這是目前得益最高的一本書,建議架構(gòu)師必讀,比那些死啃架構(gòu)概念的書好太多。讀書要注意跳過很多八卦。估計(jì)大部分人不能克服概念和八卦的干擾,未必能得益。這本書僅遜于德魯克的管理三部曲。

2013-05-21 06:56:51

免責(zé)聲明

更多出版社