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

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

編程大師訪談錄

本書是對19 位計算機行業先驅的采訪實錄,采訪對象包括查爾斯·西蒙尼、比爾·蓋茨、安迪·赫茲菲爾德、雷·奧奇、杰夫·拉斯金等。
  • 所屬分類:圖書 >計算機/網絡>項目管理 IT人文  
  • 作者:[美] [Susan] [Lammers] 著,[李琳驍],張菁,[吳詠煒]譯
  • 產品參數:
  • 叢書名:--
  • 國際刊號:9787115264312
  • 出版社:人民郵電出版社
  • 出版時間:2012-01
  • 印刷時間:2012-01-01
  • 版次:1
  • 開本:16開
  • 頁數:--
  • 紙張:膠版紙
  • 包裝:平裝
  • 套裝:

內容簡介

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

本書適合IT 從業人員閱讀。

作者簡介

Susan Lammers

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

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

Lammers畢業于斯坦福大學,擁有英語文學士學位。

目錄

第1 篇 查爾斯·西蒙尼

第2 篇 巴特勒·蘭普森

第3 篇 約翰·沃諾克

第4 篇 加里·基爾代爾

第5 篇 比爾·蓋茨

第6 篇 約翰·佩奇

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

第8 篇 丹·布蘭克林

第9 篇 鮑勃·弗蘭克斯頓

第10 篇 喬納森·薩奇

第11 篇 雷·奧奇

第12 篇 彼得·羅伊森

第13 篇 鮑勃·卡爾

第14 篇 杰夫·拉斯金

第15 篇 安迪·赫茲菲爾德

第16 篇 巖谷徹

第17 篇 斯科特·金

第18 篇 加隆·蘭尼爾

第19 篇 邁克爾·霍利

詞匯表

附 錄

在線預覽

中文版序

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

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

為什么說這些舊日的訪談到了今天還意義重大呢?我對PC革命先驅的訪談,就是要把你直接帶入這些杰出的年輕程序員富有想象力和創造力的大腦中,看看他們是如何思考并迸發出新思想,然后怎樣逐步完善,再投入到艱苦卓絕的編程工作中,最終得出大眾需要使用的工具。多年以來創新過程的根本并沒有什么變化,因此,這些訪談內容在今天看來依然很有價值,發人深省。這些訪談還揭示了偉大的人物是怎么開始創新并改變世界的,通常從一無所有開始,僅憑一支鉛筆、一個記事本以及堅定的信念,就此開創出豐功偉業。以我們今日的學識,去看看上世紀80年代的訪談內容,讀一下每個程序員的代碼和注解,讀者定能夠充分了解這些PC革命的領袖們如何以星星之火激起燎原之勢,在軟件業樹立起自己的游戲規則。今日的軟件行業里,也不斷重復著往日的故事。

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

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

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

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

感謝圖靈公司這些的人士,是他們發現了本書對于讀者的價值,并著手讓譯本得以面世。他們為本書的殷勤付出與不懈努力讓我深感榮幸且大為折服。我期待著Programmers At Work在中國的印行,內心激動不已。

Susan Lammers

1

查爾斯?

西蒙尼

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

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

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

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

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

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

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

采訪者:說說你用過的及時臺計算機?

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

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

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

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

西蒙尼:我的及時個專業程序是為一種非常簡單、類似FORTRAN的高級語言寫的編譯器。我把它作為一項創新成果賣給了政府部門,并得到一大筆錢,不過我一分也沒花,因為不久之后我就離開了匈牙利。

機遇出現在布達佩斯的一次交易會上,我見到幾位從事計算機工作的丹麥人。我跟他們接洽,了解到他們新機器相關的大量信息。在隨后一次交易會上,我帶上自己事先準備好的一個小演示程序,它能反饋任意時刻機器正在分析長表達式的哪一部分。我拜托其中一人把這個程序帶回丹麥,拿給他們的主管看。他們肯定很喜歡這個程序,因為他們給了我一份工作。我就這樣離開了匈牙利。

我在丹麥干了一年半的編程,攢夠了錢去加州大學伯克利分校求學。在校期間,我進入伯克利計算機中心當程序員,掙的錢剛好也夠付學費的了。

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

采訪者:你的編程風格主要受誰的影響?

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

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

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

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

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

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

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

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

采訪者:你是怎么進入微軟的?

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

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

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

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

計算機編程背后也有大量科學理論作支持。例如,哥德爾定理的數學證明冗長而復雜,但是如果借用計算機科學的圖靈定理,證明起來不費吹灰之力。信息理論和計算機科學其他領域對數學影響巨大,反之亦然。

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

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

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

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

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

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

那臺丹麥計算機是件精美的家具。它的大小與舊式的衣櫥相當。計算機正面有3扇柚木門。有一次,我看到有個美國來的主管半信半疑地盯著機器,就因為它是用柚木嵌板的。它甚至還有一個丹麥現代風格的桌臺。整臺機器散發著迷人的柚木味道。

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

采訪者:當你分析某個程序時,你認為什么樣的代碼清單或算法結構在審美上是優美或悅人的?

西蒙尼:我覺得代碼清單帶給人的愉快同整潔的家差不多。你一眼就能分辨出家里是雜亂無章(比如垃圾和沒洗的碟子到處亂扔)還是整潔如新。這也許意義不大。因為光是房子整潔說明不了什么,它仍可能藏污納垢!但是及時印象很重要,它至少反映了程序的某些方面。我敢打賭,我在3米開外就能看出程序拙劣與否。我也許沒法保障它很不錯,但如果從3米外看起來就很糟,我敢保障這程序寫得不用心。如果寫得不用心,那它在邏輯上也許就不會優美。

不過假定它看上去不錯,然后你打算繼續深入。理解程序的結構要困難得多。在結構因何優美的問題上也是見仁見智。純粹主義者認為,只有那些按照極其嚴格的數學方式來使用某些很簡單的構造的結構化編程,才是優美的。就20世紀60年代之前的情況而言,這種反應非常合乎情理,因為當時程序員并不知道結構化的概念。

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

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

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

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

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

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

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

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

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

西蒙尼:當然。嚴格來說,對編程而言,我認為我們應該知道自己想要做什么。如果不知道,那么有一個過程確實是解決各種問題的必經之路,那就是要弄清楚:我試圖做什么?目標是什么?

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

采訪者:當你調整好狀態真正開始編程時,及時步會做什么?

西蒙尼:編程的及時步是想象。就是要在腦海中對來龍去脈有極為清晰的把握。在這個初始階段,我會使用紙和鉛筆。我只是信手涂鴉,并不寫代碼。我也許會畫些方框或箭頭,但基本上只是涂鴉,因為真正的想法在我腦海里。我喜歡想象那些有待維護的結構,那些結構代表著我想編碼的真實世界。

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

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

西蒙尼:當然,這是最重要的一步:算法的知識當屬科學,結構的想象則是藝術。這些算法的細節,以及編寫高效代碼實現這些結構的轉換,是編程像手藝活的一面。從技術上講,這就是所謂維護結構的不變性。編寫代碼以維護不變性是相對簡單的技藝,不過這需要非常用心并輔之以大量訓練才能練就。

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

西蒙尼:是的。

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

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

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

西蒙尼:我不是每天都有機會編程。我不用特意把問題放一放,因為總會有人打斷我。我一般晚上編程,白天總是被打斷。

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

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

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

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

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

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

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

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

西蒙尼:預估編寫程序要花的時間難度很大。之所以難度很大,原因多種多樣。這并不意味著我們就不用盡全力預估,因為預估時間可能用處很大,就像天氣預報不僅有經濟效益還有其他好處一樣。

真正的好程序會永遠存在,寫起來永無止境,至少只要硬件存在,程序就會存在,甚至更長久。當然,只要Alto計算機存在24小時,Bravo就

網友評論(不代表本站觀點)

來自無昵稱**的評論:

挺好

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

很喜歡,很快

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

都是些牛人啊!

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

從前人的經驗中學習

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

好書,值得一看。

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

講述了大師們的編程故事。學師們的精神

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

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

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

是計算機學習者必讀的書籍,好好讀,對工作很有幫助

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**的評論:

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

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

如果你有閑情,不妨一讀。雖然內容有些舊,權當了解歷史

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

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

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

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

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

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

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

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

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

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

2013-05-21 06:56:51

免責聲明

更多出版社