小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

高德納:講故事停不下來的計算機科學(xué)先驅(qū)

 taotao_2016 2020-05-05
選自QuantaMagazine
作者:Susan D'Agostino機器之心編譯參與:熊貓、杜偉
對計算機科學(xué)先驅(qū)高德納(Donald Knuth)來說,良好的編程就相當(dāng)于美好的表達?,F(xiàn)年 82 歲高齡的高德納老爺子至今仍堅持寫作已經(jīng)持續(xù)幾十年的計算機科學(xué)巨著《計算機程序設(shè)計藝術(shù)》(The Art of Computer Programming)。近日,《量子雜志》采訪了這位孜孜不倦講述計算機科學(xué)故事的計算機科學(xué)家,也讓我們看到了這位計算機科學(xué)先驅(qū)的另一面。

高德納老爺子一生都在用計算機程序講述計算機程序的故事。圖源:Vivian Cromwell


一場糖果名稱組詞比賽讓高德納認(rèn)清了自己的才能

高德納是一位計算機科學(xué)家,他的年齡差不多就和他投身領(lǐng)域誕生的時間一樣長。在上世紀(jì)中葉計算機編程剛剛誕生的那些年,當(dāng)?shù)匾患颐麨?Ziegler 的糖果公司舉辦了一場比賽,這讓當(dāng)時僅 13 歲的高德納看清了自己的才能。這場比賽是讓孩子們確定能用一種糖果名稱(即 Giant Bar)的字母組成多少個單詞,這是一個界定清晰明確的問題,也正是他所喜歡的那類問題。
「我有一種強迫癥,而它讓我產(chǎn)生了對數(shù)字離散問題的興趣。并且,我也很熱愛鉆研大量信息?!垢叩录{說。
在他家的地下室中,高德納系統(tǒng)性地翻閱了他家那本 2000 頁厚的 Funk&Wagnalls 無刪節(jié)版詞典。他甚至說服了父母,讓相信自己生病了,這樣兩周時間都沒去上學(xué),而是把時間投入到了這個問題上?;谶@種糖果名稱的字母,他標(biāo)注了以 Aa、Ab 和 Ba 等可能在單詞前面的字母串,并將它們做成了索引卡片。之后,他開始檢索詞典中滿足條件的條目。他發(fā)現(xiàn)詞典中有些部分可以完全跳過,比如以字母 C 或 BU 開頭的單詞部分。
賽事官方預(yù)計最后的勝者能找到大約 2000 個單詞,而高德納整整找到了 4700 多個。他為他的班級贏得了在電視上露臉以及巧克力獎勵。
在那以后,他還將繼續(xù)為自己贏得更多「巧克力」,包括第一屆 ACM 格蕾絲·穆雷·赫柏(Grace Murray Hopper)獎以及美國國家科學(xué)獎?wù)潞?1974 年圖靈獎。
孜孜不倦編撰計算機科學(xué)巨著《計算機程序設(shè)計藝術(shù)》
高德納甚至將自己對離散數(shù)字問題和大量信息的熱愛融入到了他的皇皇巨著《計算機程序設(shè)計藝術(shù)》中,這套書從 1962 年他還是一個研究生時就已經(jīng)開始寫了,但到現(xiàn)在還未完成。
1968 年他出版了該書的第 1 卷,目前該卷已經(jīng)印了 27 版。第 2 和 3 卷分別出版于 1969 和 1973 年。那時候他已經(jīng)是斯坦福大學(xué)的一位計算機科學(xué)教授了,但他也擔(dān)心教職工作會妨礙自己寫完這套書。因此他在 1990 年告假,接著在 1993 年退休,打算余生都用來完成這套七卷巨著。
現(xiàn)在,他已經(jīng) 82 歲了,仍在努力撰寫第 4 卷的 B 部分,他預(yù)計這一卷至少有 A 到 F 共 6 部分。

高德納正努力撰寫《計算機程序設(shè)計的藝術(shù)》第 4 卷 B 部分。他預(yù)計這一卷至少還有 4 部分,而整套書還有 5、6、7 三卷要完成。照片來自高德納的妻子高精蘭(Jill Knuth)。

高德納訪談實錄:一個不一樣的高德納老爺子
高德納接受了《量子雜志》的采訪,并就提出的問題一一進行了回答。從這些采訪中可以瞥見高德納老爺子的科研理念和人生態(tài)度。
您一直都對寫作有興趣嗎?
之前,有人告訴我說現(xiàn)實世界對我而言太難了。我并沒有想要發(fā)現(xiàn)任何新東西的想法,但我熱愛通過寫作來表達我享受這些思想的喜悅。

高德納總是講述帶有科學(xué)內(nèi)容轉(zhuǎn)折的故事。上大學(xué)時他寫了一篇短篇小說,里面的每個詞都是一個化學(xué)式。照片來自高德納的妻子高精蘭(Jill Knuth)

上六年級時,我和幾個朋友在一臺油印機上寫了兩頁的文章,不過內(nèi)容全是笑話。上高中時,作為新聞報編輯,我每周一晚上都要通宵達旦趕稿子。上大學(xué)時,我作為??庉媽懥俗约旱牡谝恍形淖?。在大學(xué)三四年級時,我們開始寫工程和科學(xué)評論。舉個例子,我寫了《Th_5E_4 CH_3EmIC_2Al_2Ca_3P_4Er》,其中每個詞都是一個化學(xué)式。
這是您撰寫這部巨著的原因嗎?您是否將其視為又一個故事?

《計算機程序設(shè)計藝術(shù)》是一個宣言。它講述了我多么喜歡數(shù)學(xué)以及我希望的學(xué)習(xí)方式。從第 1 頁開始,我開始講關(guān)于算法的故事。那時候大多數(shù)教科書都沒有探索科學(xué)發(fā)現(xiàn)中人的一面。它們只是說「這是化學(xué)的工作方式」或「那是物理學(xué)的工作方式」。
我也講了一個關(guān)于技術(shù)的故事。我說:「有些東西是沒有效果的,這里有一種可以解決問題的方法。我不只是單純地陳述事實,我還增加了戲劇性?!谷绻阒腊l(fā)現(xiàn)的先后順序,那么科學(xué)學(xué)習(xí)來就變得容易多了。另外,我也沒法拒絕一個好故事。我沒把自己視為一個先驅(qū),而是將自己看作是一個記錄者。
那么除了故事之外,《計算機程序設(shè)計藝術(shù)》還講了什么?

在我寫了兩年書之后,我意識到這套書的新穎之處在于它可以定量地確定一個程序的優(yōu)劣程度。我不只是想說一個程序比另一個程序更好。我想說的是一個程序比另一個程序好 13.8%,并且對這種比較結(jié)果做出了解釋。
作者 A 會談?wù)撍惴?A,作者 B 會談?wù)撍母偁幩惴?B。并且,作者 A 從來不寫關(guān)于算法 B 的東西,作者 B 也從來不寫有關(guān)算法 A 的東西。另外,作者 A 和 B 使用的計算機也不一樣。那么,作為一個中立的記錄者,我會從這樣一個角度解釋這兩個算法,即「一個算法究竟有多好?」。提出這樣的問題是很有意思的,這就是算法分析。
「算法分析」只是「計算機程序設(shè)計藝術(shù)」的另一種說法嗎?

1967 年,我在參加工業(yè)與應(yīng)用數(shù)學(xué)學(xué)會會議(Industrial and Applied Mathematics conference)時,有人問我做了些什么。那時候,計算機科學(xué)被劃分成了數(shù)值分析、人工智能和編程語言幾個領(lǐng)域。我意識到我需要為我的工作起個名字。
我的書的新穎性在于對算法的優(yōu)劣程度展開了嚴(yán)格的探究。所以我決定下次有人問我這個問題時,我會回答自己在做「算法分析」。我的定義是:如果我對此感興趣,那這就是算法分析。這不是一個非常好的定義。
但對您而言,程序設(shè)計關(guān)乎的不僅僅是功能。比如說,當(dāng)您在設(shè)計 TeX 時,您想要找到連接特定點的「最賞心悅目的曲線」。您當(dāng)時想把美編寫成程序嗎?

我的程序連接點的方式就像是對優(yōu)秀書法家的工作進行反向工程(reverse-engineered)。比如字母 S 中有一個點是曲率由正變負(fù)的點,然后會穩(wěn)定一段時間。這個字母的設(shè)計者遵循了一些邏輯來讓該線條變成字母的形狀。我不僅希望體驗這種設(shè)計結(jié)果,還想理解其背后的智力過程。這就像編寫一個計算機程序。

1980 年,高德納與字體設(shè)計師 Herman Zapf 在他的斯坦福大學(xué)辦公室,這時候高德納的排版程序 TeX 剛發(fā)布僅幾年時間。圖片來自:Chuck Painter / Stanford News Service
我與設(shè)計師進行了交談,希望理解他們想要實現(xiàn)什么。這里涉及到的數(shù)學(xué)是希望能以量化的方式來理解這些設(shè)計。借助數(shù)學(xué),我在所有東西上都放上了一個小刻度盤。比如對于字母 A,我可以說它的粗細(xì)程度、這里的角度是多少、那里逐漸變細(xì)、底部有個凸起以及有特定的襯線長度等等。
我從沒想過取代設(shè)計師。我只是想讓后代了解我們當(dāng)時是怎樣做的。使用 TeX,我們可以將設(shè)計重現(xiàn)出來。
當(dāng)時您是否預(yù)見到 TeX 會被全世界接納或者它的泛化能力?

當(dāng)時 TeX 只是為了給我的秘書和我自己用。Phyllis(Astrid Benson Winkler)是一位出色的秘書。她能讀懂我的手寫內(nèi)容并讓它們以更美麗的方式呈現(xiàn)出來。打印技術(shù)日漸式微,因為這種方法雖然經(jīng)過驗證,但成本卻過于高昂。1970 年代發(fā)表的幾乎所有數(shù)學(xué)著作看起來都非常丑陋。在《美國數(shù)學(xué)月刊(American Mathematical Monthly)》上,下標(biāo)字體與正文主體字體都不一樣。我知道計算機編程能讓這些書也變得好看。
1973 年 4 月,我完成了 TeX 一個試驗版本的調(diào)試。5 月份,我有了 10 個用戶。6 月份,我有了 100 個用戶。7 月份,我有了 1000 個。每個新的用戶群都會說:「TeX 必須具有這樣那樣的功能」。五年之后,我發(fā)布了基本上就是現(xiàn)在這樣的 TeX。這個軟件最早是為美國人設(shè)計的,然后歐洲人也開始使用它。所以在 20 世紀(jì) 80 年代,我為 TeX 添加了世界語言支持。
聽起來您的開發(fā)過程一直伴隨著新的發(fā)現(xiàn)。到如今依然如此嗎?

我平均每周寫 5 個新程序。詩人必須寫詩,而我必須寫計算機程序。
對于我是否理解某些東西,終極測試就是看我能否向計算機解釋這個東西。我可以向你解釋說明,你可能會點頭表示理解,但我不能確定我是否解釋清楚了。但計算機「不會點頭」,它只會精準(zhǔn)地重復(fù)我讓它去做的事。在生活中的很多時候,你可以虛張聲勢,但這對計算機不起作用。

「人類之間溝通的最好方法是故事」高德納說。這種方法讓他可以更嚴(yán)格更中立地分析算法。圖片來自 Vivian Cromwell

您夜日繼日地寫作,您還有其它愛好嗎?您怎樣度過日常的每一天?

杰克·倫敦每天都要寫作 1000 詞之后才會與人談話。他完全就是「在我完成 1000 詞之前不要打擾我」,然后他剩下的時間就是喝酒或校對。但我不同,我的日程安排原則是優(yōu)先做我最厭惡的事情。到周末時,我會非常開心。
真的嗎?怎么做您討厭的事會讓您開心?
在我看來,這樣說很簡單:「讓我做個天才吧,永遠(yuǎn)不用清理廁所。」但即使清理廁所也是可以做的。我的妻子 Jill 和我有能放 409 清潔劑插槽的制服。你去廁所打掃然后噴水,清理廁所的感覺非常好。
決定一個人生活成功的因素是要有一個較高的最小值,而不是較高的最大值。如果你能很好地做成一些事情,其它事情又會失敗,那么后者就拖累了你。但如果你幾乎能把每件事都做得不錯,那么你就有一個好的人生。所以我盡力去學(xué)習(xí)其他人可能覺得做起來不愉快的事情。

2020 年,高德納在自己家中。1993 年他退休了,以便完成自己的巨著《計算機程序設(shè)計藝術(shù)》。照片來自高德納的妻子高精蘭(Jill Knuth)
您也有很多與計算機科學(xué)無關(guān)的項目,比如您的音樂作品《Fantasia Apocalyptica》。您的房子甚至都是您繞著一組兩層樓高的管風(fēng)琴建造的。這樣的活動也讓您感到快樂嗎?
我寫了好幾本關(guān)于神學(xué)的書,包括《計算機科學(xué)家很少談?wù)摰氖虑椋═hings a Computer Scientist Rarely Talks About)》,里面的東西與數(shù)學(xué)或計算機科學(xué)不一樣,你沒法證明它們。如果我的生活都是分析和厘清事物,那么就會不完整。我不理解的神秘事物給我了謙卑。有一些事情超出了我的理解。
在數(shù)學(xué)領(lǐng)域,我知道定理何時是正確的。我喜歡那樣。但如果一切都可做可行,那么生活就毫無意思。這樣的知識不會讓我絕望。相反,它能確保我的生活不一成不變。
您覺得順利完成《計算機程序設(shè)計藝術(shù)》是不是非常重要?

哦,我知道計算機科學(xué)還會繼續(xù)長存并發(fā)展下去。有一種情況是所有人都不再研究現(xiàn)在的計算機了。他們?nèi)寂苋パ芯繖C器學(xué)習(xí)和量子計算機。那么我可以走到非量子計算機的終點。如果我可以說「這就是故事的終點」,我當(dāng)然很高興。這是想象我自己會完成的最簡單的方法。但我不會回答你的問題。
你知道特里斯特拉姆·項狄(Tristram Shandy)嗎?18 世紀(jì)后期,勞倫斯·斯特恩(Lawrence Sterne)寫了一本自傳性的書《紳士特里斯特拉姆·項狄的人生和觀點》(The Life and Opinions of Tristram Shandy, Gentleman),并以分冊或分期的形式發(fā)表了它。其中寫了他人生第一周的大約 100 頁的故事。他想要完成這個人生故事,但當(dāng)然他最后完不成。斯特恩一直在寫特里斯特拉姆·項狄的故事,直到他再也寫不動了。
我想要以我知道的最好的方式繼續(xù)寫優(yōu)質(zhì)內(nèi)容,介紹那些我有一些原創(chuàng)性看法的事情。我會盡可能地去做,而不會說我要在某個截止日期前完成些什么。我一直都非常幸運,正好趕上了時代的浪潮,出生在了我可以做特別適合我做的事情的時代?,F(xiàn)在除了《計算機程序設(shè)計藝術(shù)》,我已經(jīng)完成了我所有的人生目標(biāo)。在現(xiàn)在這種情況下,我還將繼續(xù)講述我可以找到的各種故事,并將它們傳遞下去。
原文鏈接:https://www./computer-scientist-donald-knuth-cant-stop-telling-stories-20200416/
本文為機器之心編譯,轉(zhuǎn)載請聯(lián)系本公眾號獲得授權(quán)。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多