色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

高德納(Knuth)談計算機程序設(shè)計藝術(shù)(上)

  英文原文:The Art of Computer Programming

  高德納(D. E. Knuth)教授是備受尊崇的系列巨著《計算機程序設(shè)計藝術(shù)》(The Art of Computer Programming)和數(shù)十篇受到高度贊譽的計算機科學(xué)論文的作者。2011年6月,結(jié)束了在英國的書籍研討和系列演講的高德納教授,跟 BCS 編輯 Justin Richards 暢談了自己的人生和工作。

  您最廣為人知的成就應(yīng)該是《計算機程序設(shè)計藝術(shù)》系列著作了。1999年,這個系列被美國科學(xué)家(American Scientist)期刊評選為20世紀(jì)最重要的12部理學(xué)專著之一。這個系列最初是如何創(chuàng)作出來的?您是如何看待美國科學(xué)家期刊的這一評價呢?

  這系列書籍大約從1960年代開始創(chuàng)作。那時候,因為沒有合適的資源,所以大家都在重新發(fā)明一些已有的東西。我一直都很喜歡寫作,在學(xué)校參與報紙和雜志的工作,認(rèn)為自己是一個作家。我意識到,需要有人記錄下所有已經(jīng)發(fā)表而我們正在遺忘的優(yōu)秀思想。

  這又要回溯到最初的年代,當(dāng)時真正研究計算技術(shù)的人很可能還不到一千個。我沒有把這看作將要影響世界的事情,但仍然覺得這些很酷的資料是值得認(rèn)真整理的。

  那時候,我就考慮還有什么人合適寫作這樣的書籍。我能想到的每個人,他們都很可能只會關(guān)注自己所研究的那個領(lǐng)域。在我所知道的人當(dāng)中,只有我自己是沒有發(fā)明創(chuàng)造過什么東西的,因此我設(shè)想自己能夠以中立的立場來擔(dān)任他們的代言人。坦白說,那就是初始動機,我認(rèn)為存在那樣的需求。

  我寫作這樣的書,還有一個很自然的理由。那就是,我要嘗試將很多人的不同想法結(jié)合起來。我會看到,A君以某種方式來分析他的方法A,而B君會以另一種方式來分析與之競爭的方法B。因此,我就要用B君的方式來分析方法A,用A君的方式來分析方法B。

  因此,我最終就是以單純分析以上內(nèi)容的形式來創(chuàng)作書的雛形。很快,我認(rèn)識到,有些被我捆綁使用的科學(xué)方法,在我所受的教育中其實是不允許同時出現(xiàn)的。然而,一次又一次地,我真的看到只有這樣的思維方式才可以正確地闡述問題。

  長話短說,很快我也有了自己的不同意見,并且開始發(fā)現(xiàn)新東西,這樣就難以繼續(xù)中立地寫作了。不過,我仍然嘗試在最大限度內(nèi)以公允、合理的態(tài)度去總結(jié)每個人的有價值思想。

  至于這本書入選世紀(jì)最佳書籍,我還覺得不太好意思。他們把我推到愛因斯坦和費曼的偉大隊列中,而我實際上并不屬于那樣的級別。這可能僅僅是因為他們必須從計算機科學(xué)領(lǐng)域選出一個人,而我又沒有太多的競爭者罷了。雖然我也覺得自己在研究領(lǐng)域的努力工作是值得提及的,但這樣把我挑選出來代表計算機科學(xué), 總有點關(guān)公戰(zhàn)秦瓊的意味了。

  是什么促使您投身計算機科學(xué)這個領(lǐng)域的呢?

  我天生就是一個計算機科學(xué)家——我的頭腦里有一種組織東西的思維方式,注定讓我成為一個好的程序設(shè)計員。我覺得任何人都可以學(xué)習(xí)使用計算機,但是五十個人里面大概只有一個人會成為像我這樣的極客。這意味著我們這些人將在這個領(lǐng)域中的不斷創(chuàng)新,并與計算機產(chǎn)生共鳴。我們的思維方式會幫助我們更容易地學(xué)習(xí)如何制造機器。

  您為什么會認(rèn)為計算機科學(xué)是如此重要呢?

  計算機科學(xué)之所以重要,是因為它改變了溝通的方式。它還影響了金融業(yè),這是我不太情愿提及的。可惜的是,世人是以我和我的同行們對華爾街產(chǎn)生的影響來衡量我們的工作的。在這個意義上,我是很嫉妒天文學(xué)家的,因為世人認(rèn)為天文學(xué)家由自己的興趣去研究天文學(xué)是值得尊重的。其實,我研究計算機科學(xué)也是同樣出于興趣啊。

  我對 IT 這個說法并沒有太大的共鳴,真正打動我的是科學(xué)。對我而言,IT 是不錯的東西,但并非我所擅長的領(lǐng)域。我的太太就能比我更快地掌握某個圖標(biāo)的含義、找到要點擊什么地方。但要讓機器完成復(fù)雜、細致的工作,在科學(xué)上是有許多難題需要攻克的。我曾經(jīng)覺得很多問題是無法找到答案的,但事實上我們已經(jīng)一步步地知道要如何解決它們。對我來說,即便沒有任何金錢上的回報,我也會做這些工作。

  所以說您對此充滿激情嗎?

  那是,就像每天早上醒來我都會想著今天要好好寫個程序。

  您是受到繆斯女神的眷顧了吧?

  是啊,有些日子她給予我的要比給予其他人的多。甚至有某個階段,我?guī)缀跽J(rèn)為自己是有個專屬的繆斯女神的。

  在您看來,您在計算機科學(xué)領(lǐng)域最大的成就是什么?

  我想我的第一個成果是研究編譯器的理論。我曾經(jīng)研究過代數(shù)語言的理論,而在我寫這本書(第10章)的時候,我正試圖描述人們在這個領(lǐng)域的種種發(fā)現(xiàn)和成果,然后我突然意識到,可以有一種方法把這些發(fā)現(xiàn)和成果都關(guān)聯(lián)起來。由于這個發(fā)現(xiàn)過于新奇,我不知道該怎樣在書里面闡釋它,于是就把它發(fā)表成一篇學(xué)術(shù)論文。后來,其他的人讀懂了我的意思并開始應(yīng)用,最終讓這個發(fā)現(xiàn)成為了今天所有代數(shù)編譯器的分析原理。

  不過我覺得我最大的成就是發(fā)明了比較算法優(yōu)劣的數(shù)學(xué)方法。為了了解一個程序到底好不好,我創(chuàng)造了一種量化的比較方法,例如你可以說一個程序優(yōu)于另外一個程序2.3倍。這個數(shù)學(xué)方法叫做算法分析,是我最引以為豪的學(xué)術(shù)成就,也是成功應(yīng)用計算機的關(guān)鍵。

  當(dāng)我發(fā)明這套數(shù)學(xué)方法的時候,我跟我的出版商說,不如把這本書改名作“算法分析”吧。但是他們說不行,這樣的話這書就永遠賣不出去了!但實際上那就是此書的核心內(nèi)容,它除了綜合總結(jié)計算機學(xué)者發(fā)明的算法,還幫助我們從量化的角度去評價每個算法的優(yōu)劣。

  在您的網(wǎng)站上有關(guān)于“你為何不用 Email”的回覆。“對于那些生活在事務(wù)的頂端的人們而言,Email 是個美妙的東西。但那不是給我用的,我的角色是在事件的底層。”您是否可以再解釋一下自己對 Email 的立場,以及“在事件的底層”的含義?

  某些人是不能整天聒噪不休的,他們要考慮的事情,需要長時間的專注、對材料進行組織并營造堅實的基礎(chǔ),而不是僅僅對前沿問題的驚鴻一瞥。將某些內(nèi)容以精確的形式表達出來,是需要很長時間的。要正確地做好事情,我就必須專注地耗費大量的時間。當(dāng)我被大家當(dāng)作權(quán)威的時候,世上數(shù)不清的人們要來問這問那。 因此,用了15年 Email 之后,我覺得真的足夠了。

  之前的一位圖靈演講者 Grady Booch 非常主張編程的簡潔性,而您在贏取西班牙“知識邊界獎”的導(dǎo)言中也有相同的論調(diào)。您可否解釋一下您為何希望程序保持簡單、緊湊、易懂?

  我想我們要先溫習(xí)愛因斯坦的名言“要讓它盡可能的簡潔,而又不至于過分簡潔”。事實上并非樣樣事情都存在捷徑,都是簡單易懂的。然而我發(fā)現(xiàn),如果我們有再三思考的機會,幾乎沒有一件事情是不能被簡化的。正因為如此,人們時不時會說:“好吧,基于我們現(xiàn)有的知識,讓我們把舊的東西推到重來吧!”

  幾年前在斯坦福有一個名為“清白歷史”的項目,口號是“讓我們找個更好的方法來實現(xiàn)因特網(wǎng)”。當(dāng)東西不斷地累積,你就會發(fā)現(xiàn)已經(jīng)存在太多的垃圾而實在沒有必要再去添加?xùn)|西了。

  那就像人的闌尾,也許曾經(jīng)某個時候它是有存在的意義的,但是現(xiàn)在已經(jīng)不再需要了。我覺得這個項目有潛力,盡管實現(xiàn)的可能性微乎其微,因為整個世界已經(jīng)離不開現(xiàn)存的因特網(wǎng)了。要一個人跳出來說“讓我們重新設(shè)計整個因特網(wǎng),從把程序?qū)胗嬎銠C開始”,那是非常困難的。這有點像當(dāng)時 Linux 的出現(xiàn),其目的就是嘗試去簡化操作系統(tǒng)。

  您跟 Grady Booch 還擁有另外一個共同的思想,你們都講過“不必寫代碼和編程就能欣賞到程序之美”,您這樣講的真正含義什么呢?

  我是從幾層不同的含義來看待“藝術(shù)”這個詞的。通常,藝術(shù)意味著人類創(chuàng)造的某種東西,并非自然的。還有一層含義,那就是賦予美學(xué)價值的精致藝術(shù)品。

  很多情況下,美感都是在旁觀者的眼中產(chǎn)生的。但是,人們會因某個事物本身的優(yōu)雅和諧調(diào)而去創(chuàng)造它,那與評論和欣賞其他人的作品是類似的,我們會覺得自己感受到美。當(dāng)這個作品達到某種標(biāo)準(zhǔn)的時候,我們會因之而滿足。

  對于所謂的“某種標(biāo)準(zhǔn)”,可能 Grady 跟我的意見是不一樣的,那就如沒有任何兩個人能對哪種音樂是最好的問題達成完全一致的意見。但是,音樂家無疑是清楚自己喜歡和不喜歡什么音樂的,也很清楚自己什么時候創(chuàng)造出好音樂。這就很類似我看待程序的方式了。

  我想最終都是個人喜好的問題?

  的確如此。沒有一個算法你會在輸入以后問自己:這到底夠不夠漂亮呢?盡管的確有人嘗試去這樣做——美國最偉大的數(shù)學(xué)家之一 George [David] Birkhoff 曾經(jīng)在三十年代寫過一本書,名為“美學(xué)衡量”。這本書充斥了形形色色的數(shù)學(xué)公式,還有一頁滿滿的印著各式各樣的希臘骨灰甕,并在每一個旁邊都給了一個美的評分。

  他還給很多不同的設(shè)計系統(tǒng)評分。其中比較有趣的是,在他的一百強名單里面,排行第二還是第三的是萬十字章——他本身是同情納粹的。我想這個圖標(biāo)的旋轉(zhuǎn)方向要是反過來,對印度教來說可能有更大的宗教意義。我不認(rèn)為可以衡量這些東西的美丑,但是他的確這樣做了,而且也有其他人作了同樣的嘗試。

  那么說,還沒有人編出能評判程序的美丑程度的程序啰?

  實際上還沒有。有些軟件工程師因評測的需要而嘗試做這樣的事情,我也不是很清楚。大家都知道,像你這樣的記者或作家都有很多題材,你們需要量化數(shù)字來充實文字內(nèi)容。例如,有人在開羅的沖突中喪生,你們就需要弄清楚是300人還是315人,這是新聞報道的必備部分。量化資料可以提升質(zhì)量。我也在嘗試尋找數(shù)字化的方法。不過,實際上軟件工程師試圖衡量的是某個程序員的優(yōu)秀程度。其實他們?nèi)柪习寰托辛耍?/p>

  我覺得數(shù)字的使用是讓人們在心里面能做個比較,例如20個人在這個事件中喪生,50個人在另外一個事件中喪生,那么人們通過對比就會覺得后面這個事件更為嚴(yán)重。

  但這很可能其實是在用蘋果和橙子比較。因為一旦涉及到數(shù)字,人們就可能篡改某些數(shù)據(jù)來扭曲事實。你也可以想象教育學(xué)生,總想著學(xué)生怎么樣才能通過考試,然后你就可能會編寫一本關(guān)于應(yīng)試的書,而不是一本關(guān)于學(xué)習(xí)科學(xué)的書。

  這樣一來一切都是為了在學(xué)科考試中獲取高分。然而問題是這些數(shù)字評分并不是總能很好的反映事物的本質(zhì)。當(dāng)你把一些事情量化了,假如你想的話你總是可以找到作弊的方法,因而也最終忘記了學(xué)習(xí)的初衷。

  英文原文鏈接

it知識庫高德納(Knuth)談計算機程序設(shè)計藝術(shù)(上),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 宁安市| 玛多县| 乌鲁木齐县| 甘孜| 全椒县| 白河县| 嵩明县| 太白县| 开鲁县| 邛崃市| 吉首市| 周至县| 新乡县| 灯塔市| 峡江县| 江永县| 天津市| 芒康县| 宣城市| 汨罗市| 金沙县| 唐海县| 依兰县| 建昌县| 齐齐哈尔市| 云阳县| 馆陶县| 当雄县| 鸡东县| 汨罗市| 蓝田县| 东至县| 蒲城县| 融水| 射洪县| 福清市| 金坛市| 涿鹿县| 葫芦岛市| 徐州市| 稷山县|