紐約時報長文:矽谷的尤達—演算法大師Donald Knuth
雷鋒網AI科技評論按:Donald Knuth,著名計算機科學家,譽滿全球的圖靈獎獲得者,斯坦福大學計算機系榮譽退休教授。作為現代計算機科學的先驅人物,他發明了計算機排版系統 TEX 和 METAFONT,創造了演算法分析的領域,在計算機科學及數學領域發表了多部具廣泛影響的論文和著作。日前,紐約時報對他進行了一次專訪。在這次訪談中,Knuth 博士談到了他對演算法的一些看法,反思了他 50 年來的作品《The Art of Computer Programming》,並表示:「我擔心演算法變得太過重要。一開始,我們這些計算機科學家擔心沒有人聽我們的,但現在,聽我們的人太多了。」 關於紐約時報的撰文,雷鋒網 AI 科技評論編譯整理如下:
打開今日頭條,查看更多圖片Donald Knuth 在加利福尼亞州斯坦福的家中。他是個臭名昭著的完美主義者,願意對任何在他的書中發現錯誤的人給予獎勵。
斯坦福大學的計算機科學家 Donald Knuth 與《星球大戰》中的尤達略有相似,半個世紀以來,他一直是演算法領域的精神導師——儘管他身高 6 尺 4 英寸(約 1 米93),戴著眼鏡。
他是《The Art of Computer Programming》一書的作者,這部作品是他的終生工作,共有四卷。第一卷於 1968 年出版,這卷書籍(盒裝出售,售價約 250 美元)2013 年被 American Scientist 雜誌評選為塑造上世紀科學的書籍,一起被列入的書籍包括《The Autobiography of Charles Darwin》特別版、Tom Wolfe 的《The Right Stuff》、Rachel Carson 的《Silent Spring》以及 Albert Einstein、John von Neumann 和 Richard Feynman 的專著。
《The Art of Computer Programming》出版了一百多萬冊,是計算機領域的聖經。谷歌研究主管 Peter Norvig 曾說過:「這本書就像一本真正的聖經,它很長,也很全面,沒有一本書能像它那樣全面。」翻過 652 頁,第一卷結束,可以看到後封面上比爾·蓋茨的推薦語:「如果你能讀懂全部內容,一定要給我發份簡歷。」
本書開頭摘錄自《McCall』s Cookbook》:
你們寫了上千封信要求我們出版的那本書來啦。我們花了很多年的時間反覆檢查書裡面那些數不盡的食譜,只為給您帶來最好的、有趣的、完美的內容。
這本書主要講演算法,儘管 Knuth 博士指出,在 3800 年前的巴比倫刻寫板上也能找到演算法,但這本書能滿足數字時代的需求。Knuth 是一位受人尊敬的演算法專家;他的名字與該領域一些最重要的方法關聯在一起,例如 Knuth-Morris-Pratt 字元串搜索演算法。這個演算法是在 1970 年設計的,它可以在文本中查找給定單詞或字母的所有匹配內容——例如,當你點擊 Command + F 在文檔中搜索關鍵字時採用的就是這種演算法。
工作時,現年 80 歲的 Knuth 博士通常穿得像個年輕的極客:上身長袖T恤,外面套件短袖T恤,下身牛仔褲,他在每年這個時候都是這種打扮。在早些年,他總是和機器打交道,寫一些原始的二進位編碼。
Norvig 博士說:「Knuth 證明了計算機系統實際上可以一直被理解到二進位編碼級別。」但如今,隨著演算法對二進位編碼的主宰(和破壞),普通程序員不再有時間去處理那些二進位「垃圾」,而是使用抽象的層次結構和一層又一層的代碼,並且還經常使用從代碼庫找來的一連串代碼。但是精英階層的工程師偶爾還是會深入研究底層代碼。
Norvig 博士在加利福尼亞州山景城的一次 Google 旅行小組會議上說:「在 Google,有時我們只是把東西整合在一起,但是更多時候,比如你正在為數十億用戶提供服務,高效很重要。效率提高 10% 就可以創造數十億美元的價值,為了獲得足夠高的效率,你必須明白到底發生了什麼。」
1963年,加利福尼亞理工學院,在這裡Knuth獲得博士學位
或許正如 Google 著名科學家 Andrei Broder 和 Knuth 博士以前的一個研究生在會議中所說的那樣:「我們想為我們正在做的事情提供一些理論基礎。我們不需要輕浮的、草率的或二流的演算法。我們不希望其他的演算法工程師說,『你們這些傢伙是白痴』」。
Google Trips 應用程序創建於 2016 年,採用了「定向運動演算法」,用於繪製一天的推薦旅遊活動。該團隊正在致力於「最大限度地讓一天看起來不那麼糟糕」,例如,避免將用戶反覆送到同一地區,只是因為看的景點不同。他們從 300 年前的瑞士數學家萊昂哈德.歐拉的演算法中得到靈感,歐拉想繪製一條穿越普魯士城市科尼斯堡的路線,這條路線只穿過科尼斯堡的七座橋各一次。Knuth 博士在他的書的第一卷中闡述了歐拉的經典問題(他曾經將歐拉方法用於控制縫紉機的計算機編碼)。
遵循 Knuth 博士的教義有助於避免代碼的堆砌。眾所周知,他引入了「編碼可讀性」的概念,強調代碼對於人類和計算機都具有好的可讀性的重要性,如今這個概念已經成為了共識。Knuth 博士甚至認為,一些計算機程序就像伊麗莎白·畢曉普的詩歌和菲利普·羅斯的《美國牧歌》一樣,可讀性和普利策文學獎作品並無二致。
他也是一位臭名昭著的完美主義者。xkcd 漫畫家、《事物解釋者》的作者 Randall Munroe 第一次聽說 Knuth 博士,還是別人提到 Knuth 博士會提供獎金給任何在他的書中發現錯誤的人。Knuth 回憶道,「他們說得到 Knuth 博士的獎金就像獲得計算機科學界的諾貝爾獎。」
Knuth 博士具有對自己要求嚴格、博學等諸多特質,這些特質也解釋了為什麼他這本書的完成遙遙無期。他和 Google 的聯合創始人謝爾蓋·布林打賭,布林是否會在他結束自己的作品之前獲得博士學位。
演算法的曙光
19 歲時,Knuth 博士在《瘋狂》雜誌上發表了他的第一篇技術論文《The Potrzebie System of Weights and Measures》。在計算機科學這門學科存在之前,他就成為了一名計算機科學家,在克利夫蘭的一所學校學習數學,這所學校就是如今的 Case Western Reserve University。他看了學校的 IBM 650 大型機(一台十進位計算機)的示常式序,發現了一些不足之處,就重寫了該軟體和在課堂上使用的教科書。作為一項輔助項目,他編寫計算機程序來執行統計數據,幫助籃球隊贏得聯賽冠軍。
在暑假期間,Knuth 博士編寫編譯器賺的錢比當教授一年掙的還多。編譯器就像一個翻譯器,將高級編程語言(類似於代數)轉換為低級編程語言(有時是神秘的二進位),並在轉換過程中對其改進。在計算機科學中,「優化」確實是一門藝術,Knuthian 有一句名言:「過早的優化是萬惡之源。」
最終,Knuth 博士自己成為了「編譯器」,他無意中開闢了一個新的領域,並稱之為「演算法分析」,有個出版商委託他寫一本關於編譯器的書,這本書最後成為一本他所知道的所有計算機編程方法的集合,成為了一本關於演算法的書。
攝於 1981 年,Knuth 正在看 1957 年出版的《瘋狂》雜誌,這本雜誌里有他發表的第一篇技術論文,發表這篇論文的時候他才 19 歲。
《The Art of Computer Programming》1-4卷。比爾·蓋茨在推薦語中寫道:「如果你能讀懂全部內容,一定要給我發份簡歷。」
「文藝復興時期,人們開始懷疑演算法這個詞的起源。」 Knuth 博士說道,「早期的語言學家試圖通過組合像 algiros [痛苦] + arithmos [數字] 這些詞來猜測它的起源。」「事實上,」,Knuth 博士繼續說,「在 9 世紀波斯教科書作者 Abū 『Abd Allāh Muhammad ibn Mūsā al-Khwārizmī 的書中就有這個詞的拉丁語。」。1979 年,Knuth 博士去了烏茲別克,到 al-Khwārizmī』s 的故鄉朝聖。
當 Knuth 博士剛開始寫作時,他沒打算寫得這麼複雜。不久之後,計算機科學經歷大爆炸,所以他重新構思了這部作品並重鑄成七卷。現在,他開始分冊,把它們分成一系列叢書。接下來要寫的是系列 5 的第 4 卷,包含 「backtracking」 和 「dancing links」 演算法,原計划出版的時間為聖誕節,但它被推遲到第二年四月出版,因為 Knuth 博士不斷發現越來越多有意思的問題,他想把這些問題寫進書中。
為了儘早完成這本書,Knuth 博士一直惜時如金。他 55 歲退休,極少參加公眾活動,並停止使用電子郵件(至少停止了因公電子郵件)。Andrei Broder 回憶說,即使是在 20 世紀 80 年代早期,Knuth 對時間也管理得非常嚴格。
Knuth 博士通常在周五上午約見學生,在這之後他便在人工智慧學科創始人 John McCarthy 的實驗室度過夜晚,在這裡他可以使用空閑的計算機。隨著數字出版的出現,Knuth 博士對他心愛的書在書頁上的樣子感到不滿,他承擔了創建 TeX 計算機排版系統的任務,現在這一系統仍然是所有科學出版物的形式的黃金標準。有些人認為這是 Knuth 博士對世界最大的貢獻,也是自 Gutenberg 以來人類對印刷術最大的貢獻。
這條長達十年的迂迴之路發生在用戶之間共享計算機的時代,那時,在大多數人都睡覺的晚上,計算機跑得更快。因此,Knuth 博士的作息開始日夜顛倒,他把作息時間調整了 12 個小時,並將約見學生的時間改為周五晚上 8 點到午夜。Broder 博士回憶說:「當我告訴我的女朋友周五晚上不能做任何事情,因為周五晚上 10 點,我必須和我的導師見面時,她想,『這件事太愚蠢了,真的是太愚蠢。』
當 Knuth 出現時,他一定會 100% 投入到當前的事情中。微軟研究院董事總經理Jennifer Chayes 說:「和他在一起你會很高興。」「他在社區里是最棒的。如果說有個人在某種程度上既溫暖又有深度,那這個人就是 Don。」
Knuth 與字體設計師 Hermann Zapf 討論字樣。許多人認為 Knuth 博士在 TeX 電腦排版系統上的工作,是自 Gutenberg.CreditBettmann的Getty Images 以來對排版最大的貢獻。
拜訪 Knuth 的星期天
Knuth 住在斯坦福,允許周日來訪。他這一天的時間很獨特,通常他的空閑時間是從下午 1 點到到 4 點(稱為 「modulo nap time」 ),他會進行一場神聖的每日儀式。他很早就起床,去帕洛阿爾托的第一路德教堂,在這裡他給人們上一門「Sunday」 學校課程。在開車回家時,他會對數學進行一些哲學上的思考。
「我永遠不可能全都知道,」他說,「如果我對問題的答案一無所知,或者我什麼都知道,生活將會糟糕得多。」然後他帶我們參觀了他加州現代風格的房子,這所房子是他和他的妻子 Jill 在 1970 年建造的,Jill 是一名平面設計師。他的辦公室里亂七八糟地堆放著成堆的 USB 線,還裝飾著 Jill 設計的情人節心形藝術品。最令人印象深刻的是音樂廳,環繞著他定製的 812 管風琴。在這天的最後,我們開了一場益智派對,並喝了啤酒。
拼圖和遊戲,寫一本關於超現實數的中篇小說,寫一部 90 分鐘的多媒體音樂白日夢——「幻想啟示錄」,這些都是他真正感興趣的東西。他的書有一部分名為「謎題與真實世界」。他把這裡的一段發給了藝術家 Martin Demaine 和計算機科學家 Erik Demaine,因為他用到了他們的「algorithmic puzzle fonts」。他們是倆父子,都在麻省理工學院。
「我很激動,」Erik Demaine 說。「能出現在這本書裡面真是榮幸。」他提到了 Knuth的另一句名言,這句鼓舞人心的話是兩年一度的 「FUN with Algorithms」 會議的座右銘:「快樂也許是一直以來的主要目標。」
「但是後來,」 Demaine 博士說,「這個領域崛起並且追求實際應用。」工程師、科學家和藝術家們正在聯合起來解決現實世界的問題,如蛋白質摺疊、機器人技術、安全氣囊等問題,他們使用 Demaine 父子的數學摺紙設計方法來將紙片和連桿摺疊成不同的形狀。
當然,演算法繁瑣性會導致現實問題。人類編寫的演算法正解決著越來越難的問題,但是會出現存在錯誤和偏見的代碼,這些已經足夠麻煩了。更令人擔憂的也許是那些不是由人類編寫的演算法,即機器通過學習後編寫的演算法。
程序員仍然訓練機器,關鍵是,他們會給機器輸入數據。(數據是偏見和錯誤的新領域,並且這裡的錯誤和偏見更難被發現和修正)。然而,正如麻省理工學院媒體實驗室研究員 Kevin Slavin 所說:「我們現在正在編一些自己看不懂的演算法。這是一個獨一無二的時代,我們受制於那些源於我們,但是我們並不理解的思想、行動所支配。」正如 Slavin在TED 中提到的那句話,「如果你是一個演算法,那你將有光明的未來。(「It』s a bright future, if you』re an algorithm.」)」
1999 年,Knuth 博士在家辦公
一些筆記
「如果你是一個精通 Knuth 所述知識的演算法,那未來將更加光明。」Google 的 Norvig 博士表示,「今天,程序員使用 Knuth 和其他人已經完成的內容作為他們演算法的組成部分,然後他們把這些內容與他們需要的其他內容相結合。」
「AI 也是一樣,只是這些組合將會基於數據自動完成,而不是由程序員來完成。你希望 AI 能夠基於數據,將之前的內容組合起來,得到好的結果。但是你必須決定這些內容是什麼。可能所有內容都出自 Knuth 作品的某個頁面或章節,因為這是完成某些任務的最佳方式。」
Knuth 一直在堅持完成他的作品,他估計還需要 25 年才能完成《The Art of Computer Programming》,儘管自 1980 年他就已經在做這件事情。「會不會有一章,或者有一頁談到會寫演算法的演算法?」「當然不會!」Knuth 表示。
「我擔心演算法變得太過重要。」他補充道,「一開始,我們這些計算機科學家擔心沒有人聽我們的,但現在,聽我們的人太多了。」
來源:https://www.nytimes.com/2018/12/17/science/donald-knuth-computers-algorithms-programming.html?smid=tw-nytimesscience&smtyp=cur
雷鋒網
※77GHz毫米波雷達基礎及其典型ADAS應用
※實現量子計算前,還需要微軟、英特爾、谷歌都支持的冷計算
TAG:雷鋒網 |