日韩偷拍一区二区,国产香蕉久久精品综合网,亚洲激情五月婷婷,欧美日韩国产不卡

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

編程大師訪談錄

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

內(nèi)容簡(jiǎn)介

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

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

作者簡(jiǎn)介

Susan Lammers

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

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

Lammers畢業(yè)于斯坦福大學(xué),擁有英語(yǔ)文學(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ì)可謂是美國(guó)人的世紀(jì)。20世紀(jì)的25年,也是本書最早出版的年代,我們看到了一場(chǎng)驚人的革命。個(gè)人電腦(PC)把大型機(jī)的威力和連通能力送到了每一個(gè)人的手中。新型的軟件——及時(shí)個(gè)電子表格軟件、及時(shí)套PC和Mac操作系統(tǒng)、及時(shí)個(gè)字處理程序——推動(dòng)著這場(chǎng)革命。創(chuàng)作這些軟件程序的許多人都出現(xiàn)在本書中,他們進(jìn)一步創(chuàng)立了大型的技術(shù)公司。由PC掀起的這場(chǎng)革命,如今繼續(xù)在更小卻更全能的移動(dòng)電話和平板電腦上上演,這些設(shè)備如今遍布全球各個(gè)角落。

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

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

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

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

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

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

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

Susan Lammers

1

查爾斯?

西蒙尼

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

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

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

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

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

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

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

采訪者:說(shuō)說(shuō)你用過(guò)的及時(shí)臺(tái)計(jì)算機(jī)?

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

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

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

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

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

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

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

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

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

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

采訪者:你是怎么個(gè)卑躬屈膝法?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

采訪者:你對(duì)編程感到過(guò)厭倦嗎?

西蒙尼:是的。

采訪者:編寫程序的過(guò)程是痛苦的還是快樂(lè)的?

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

采訪者:你每天都有固定安排嗎?你每天都編程嗎,或者你會(huì)先把問(wèn)題放一放,然后集中一周時(shí)間搞定它?

西蒙尼:我不是每天都有機(jī)會(huì)編程。我不用特意把問(wèn)題放一放,因?yàn)榭倳?huì)有人打斷我。我一般晚上編程,白天總是被打斷。

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

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

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

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

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

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

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

采訪者:你能預(yù)估編寫一個(gè)程序要用多長(zhǎng)時(shí)間嗎?

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

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

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

來(lái)自無(wú)昵稱**的評(píng)論:

挺好

2012-01-17 02:45:09
來(lái)自無(wú)昵稱**的評(píng)論:

很喜歡,很快

2012-04-08 15:35:09
來(lái)自haijunz**的評(píng)論:

都是些牛人啊!

2012-05-09 14:08:45
來(lái)自shaobo7**的評(píng)論:

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

2012-08-13 10:35:33
來(lái)自無(wú)昵稱**的評(píng)論:

好書,值得一看。

2013-03-02 16:04:20
來(lái)自無(wú)昵稱**的評(píng)論:

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

2013-07-19 20:26:08
來(lái)自秦朝小**的評(píng)論:

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

2013-10-08 16:38:02
來(lái)自圍巾的**的評(píng)論:

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

2013-11-09 14:37:12
來(lái)自無(wú)昵稱**的評(píng)論:

這個(gè)商品不錯(cuò)~

2013-12-13 21:10:48
來(lái)自無(wú)昵稱**的評(píng)論:

這個(gè)商品不錯(cuò)~

2014-01-11 16:12:25
來(lái)自caopan2**的評(píng)論:

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

2014-02-02 10:01:03
來(lái)自iisun**的評(píng)論:

看起來(lái)還不錯(cuò),有空慢慢看

2014-04-19 17:34:49
來(lái)自無(wú)昵稱**的評(píng)論:

這個(gè)商品還可以

2014-07-06 23:14:37
來(lái)自無(wú)昵稱**的評(píng)論:

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

2015-10-28 12:47:55
來(lái)自無(wú)昵稱**的評(píng)論:

2016-02-14 12:01:22
來(lái)自xueyufi**的評(píng)論:

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

2012-01-06 11:14:26
來(lái)自vanbor**的評(píng)論:

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

2013-10-28 11:20:06
來(lái)自哥哥寶**的評(píng)論:

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

2013-09-09 10:48:17
來(lái)自無(wú)昵稱**的評(píng)論:

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

2013-04-08 08:47:15
來(lái)自心靈診**的評(píng)論:

原版是1989年寫的,那個(gè)時(shí)候 Bill Gate 還沒(méi)那么成功,看看他當(dāng)時(shí)是怎么思考的也不錯(cuò)

2014-04-19 18:50:36
來(lái)自圍巾的**的評(píng)論:

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

2012-04-12 16:32:28
來(lái)自書雷**的評(píng)論:

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

2013-05-21 06:56:51

免責(zé)聲明

更多出版社
主站蜘蛛池模板: 镇雄县| 双桥区| 封丘县| 北票市| 西华县| 历史| 自贡市| 宁安市| 敦煌市| 珲春市| 通海县| 岳阳市| 宁南县| 东阳市| 罗山县| 嵊州市| 平阳县| 义马市| 湘西| 读书| 乳源| 黄大仙区| 嘉禾县| 桂平市| 贵溪市| 额敏县| 翁源县| 灌阳县| 景德镇市| 嘉义县| 厦门市| 垦利县| 东宁县| 松原市| 务川| 来宾市| 崇州市| 三都| 宜黄县| 江都市| 白银市|