程式設計師聖經再添新作,比爾·蓋茨直言:讀完立馬給我遞簡歷!

比爾·蓋茨曾說:“讀完這套書的人,可以直接給我遞簡歷!”
有人坦言:“我可能一輩子都看不懂它。”
也有人戲稱:“只要這書砸下去,Bug 都不敢響一聲。”
有人把它供在案頭,當作珍寶;有人把它壓在枕下,伴夢入眠。
別被這套“神書”的名聲嚇退,它背後藏著一位傳奇大佬的故事——
寫書寫了近 60 年,拿過圖靈獎,還親手設計了最牛的排版系統 TeX。
這部被譽為“演算法聖經”的鉅著——《計算機程式設計藝術》,終於迎來了卷 4B 中文版!
今天,就讓我們一探這位用半個世紀書寫演算法傳奇的大佬,到底有多牛!
#1
少年的字典大作戰
在上世紀中葉,計算機程式設計剛剛興起的年代,一家糖果公司舉辦了一場比賽,題目是:用“Ziegler’s Giant Bar”這幾個字母能儘量多地拼出英文單詞。
“我從小就有點強迫症,特別喜歡那種數字化的、離散型的問題。而且我還特別愛鑽研海量的資訊。”高德納回憶說。
於是,他跑回家裡地下室,翻起那本厚達 2000 頁的《Funk & Wagnalls 未刪節詞典》,一頁頁地找。為了完成比賽,他還騙過爸媽請了病假,整整在家待了兩週,全心投入地解題。
他用卡片整理詞彙,把可能開頭的字母組合,比如“Aa”、“Ab”、“Ba”等做成標籤,然後一列列瀏覽詞典,找到能用糖果名字字母拼出的詞。他很快發現,有些頁完全可以跳過,比如所有以 C 開頭的詞,或以 “Bu” 開頭的詞,根本湊不出。
比賽主辦方原本估計會有約 2000 個有效詞,但高德納竟找出了 4700 多個!最後他不僅上了電視,還為全班贏得了巧克力獎品。
#2
卷4B中文版終上線
高德納被譽為“現代計算機科學的鼻祖”,是計算機界的傳奇人物。他 36 歲便榮獲圖靈獎,成為當時最年輕的獲獎者。
他將對離散數學的熱愛與對資訊結構的執著,傾注於一生的代表作——《計算機程式設計藝術》。這套書自他 1962 年攻讀研究生時動筆,至今仍在持續創作中。
儘管尚未完結,《計算機程式設計藝術》已被 Scientific American 選入“塑造科學世紀的 100 本書”之一,並與愛因斯坦的《相對論》、狄拉克的《量子力學》、費曼的《量子電動力學》等物理經典齊名
這部鉅著的第一卷 1968 年出版,到現在已經印刷了 42 次。第二卷是 1969 年,第三卷是 1973 年出版,那時他已是斯坦福的計算機教授了,但他擔心教學工作會讓他寫不完這套書。於是 1990 年他請了長假,專心寫作。1993 年他乾脆退休,打算把餘生都用來完成這套計劃中的七卷書。
2025 年,87 歲的高德納為這部程式設計師聖經再添新作,《計算機程式設計藝術卷 4B 》中文版,終於出版了!英文版也同步上市!
#3
一種理想的教學方式

高德納來說,這不僅是一部鉅著,更像是一份宣言。書中展現了他理想中的數學思維,也體現了他少年時代對知識的渴望——希望能被那樣啟發和教導。
當時,大多數教材只會告訴學生“這是化學公式”“這是物理定律”,很少有人講清這些結論是怎麼一步步得出的。高德納不想寫這種書。他希望筆下的技術知識帶著過程和情境,有“戲劇性”。他常寫:“你看,這樣不行,那該怎麼辦?”他關心的不只是答案,更在乎問題是怎麼被解開的。
他說自己不是開創者,更像技術記者。他想寫那種讀者願意一路跟隨、願意一起思考的書。
他還有個程式設計師界流傳多年的梗:只要有人在書裡發現錯誤,就能收到他親手簽發的支票一張。這張支票雖然只有幾美元,卻被全球程式設計師視作榮譽勳章,很多人寧願裝裱收藏也不去兌現。
#4
演算法分析概念的誕生
那麼,《計算機程式設計藝術》這套書的真正核心是什麼呢?
高德納曾說:“寫到第二年,我才意識到,我的真正突破,是用量化的方法分析程式優劣。我不想只說這個程式更好,我要說它比另一個快 13.8%,並說明為什麼。”
當時,不同作者各寫各的演算法,幾乎沒人橫向比較,更沒有統一評價標準。高德納則嘗試以“中立記者”的視角,把不同演算法放在一個框架下比較。他覺得這太有意思了:“到底什麼演算法更好?”這也自然引出了他後來的方向——演算法分析。
1967 年,一次 SIAM 會議上,有人問他:你是做什麼的?當時計算機科學只有數值分析、人工智慧和程式語言三個分支,他突然意識到,自己做的事似乎都不屬於其中任何一類。
於是,他給自己研究的方向起了個新名字——演算法分析。這命名很高德納式“只要是我感興趣的,都叫演算法分析。”不過後來他也說,這個定義可能不太嚴謹。
他認為,演算法分析就是研究“一個演算法到底有多好”。它既包括找出所有可能的演算法解法,也包括深入分析某個具體演算法的效率。
他甚至一度想把書名從《計算機程式設計藝術》改為《演算法分析》。但出版社堅決否決了,說這個名字肯定賣不出去。
現在回頭看,高德納承認對方判斷得對。但他也欣慰地看到,幾十年後“演算法分析”已成為業界共識,還有五六本書乾脆直接用了這個名字。對他來說,那也是一種遲來的認可。
#5
一次設計,永久復現
1980 年,高德納 和字型設計師 Herman Zapf 一起在斯坦福的辦公室中,那時正值他釋出排版程式 TeX 的幾年之後。
1970 年代,他在給第二卷修訂版做審稿時,出版社寄來了清樣。但他一看就犯難了,頁面上數字、符號和文字的排版怎麼看都彆扭,完全無法忍。為此他專門飛了一趟洛杉磯,去考察一臺能做出高質量雜誌排版效果的數位印刷機,想找點排版美學的靈感。結果一問價格,貴得那叫一個離譜。
雖然這趟考察沒解決排版問題,卻點燃了他一個大膽的想法——自己動手,寫個排版系統。
高德納來說,程式設計從來不只是技術活。比如在設計 TeX 時,他提出要找出“最令人愉悅的曲線”——程式要連線一些點,而這條路徑,得能還原優秀書法家的手感。
像“S”這個字母,曲率從正到負,要平滑過渡。每個字母背後,都有一套設計邏輯。他的目標不是還原線條,而是還原“那隻看不見的手”。
為此,他請教了許多字型設計師,試圖把他們腦中的視覺感受轉化成數學公式——字母在哪變彎、厚度怎麼變、角度、曲線、襯線,全都能精確控制。
他並不是要替代設計師,而是想為後人保留當時的美學邏輯。一旦設計完成,就能永久復現——這就是 TeX。
起初,TeX 只是他和秘書 Phyllis 使用的排版工具。但當時印刷業已走下坡路,1970 年代出版的數學書排版尤其慘不忍睹。高德納意識到,TeX,可以讓書重新變得美觀。
1978 年 4 月,TeX 的試用版除錯成功。5 月,10 個使用者;6 月,100 個;7 月,1,000 個。使用者不斷提出建議。五年後,TeX 變成了今天我們熟悉的樣子。後來隨著歐洲使用者加入,他又開發了多語言版本。
#6
你永遠騙不過程式碼
如今,他仍然堅持每週寫 5 個新程式。他說,詩人要寫詩,自己就必須寫程式。
他有一個判斷自己是否理解某事的標準:是否能把這件事講清楚給一臺電腦聽。“人可以點頭表示理解,但他並不確定對方是否真正明白,而電腦不會點頭,它只會照人說的去執行。如果人表達不清楚,程式就會直接報錯。”
在生活裡,人們有時可以矇混過關,但在寫程式這件事上,電腦根本不會給你面子。
#7
未知的事,更值得去做
高德納的生活裡從不只有計算機。他甚至圍繞一臺兩層樓高的管風琴設計了自己的房子。他創作音樂《末世幻想曲 Fantasia Apocalyptica》,也寫宗教隨筆《一個計算機科學家不常談論的事》——那些“無法證明”的事物。數學世界讓他知道什麼是確定的,但不可知的東西卻讓他保持謙卑。
“生活不會只追求能完成的事情,那樣太單調。正是那些神秘和無法完成的東西,讓我的人生不落俗套。”
#8
一直寫到不能寫為止
那《計算機程式設計藝術》會不會最終完成?
高德納也給出了自己的說法:“計算機科學終將繼續發展下去,也許未來大家都去研究量子計算了,而我剛好可以把非量子時代的程式故事寫到句號。”
但他也坦言,不會給自己設定 deadline,他想寫自己覺得重要、值得講的內容,一直到不能寫為止。
他還說自己這輩子的夢想,除了《計算機程式設計藝術》這套書,其餘的全都都實現了。他將會繼續寫下去,繼續講那些值得留下的故事。

《計算機程式設計藝術》全系列圖書
《計算機程式設計藝術 卷4B:組合演算法(二)》
高德納 | 著
楊熊鑫,胡光,李錫涵,柳飛 | 譯
計算機程式設計藝術》系列被公認為計算機科學領域的權威之作,深入闡述了程式設計理論,對計算機領域的發展有著極為深遠的影響。本書是該系列的卷 4B,以 7.2.2 節開篇,討論回溯程式設計,內容包括舞蹈鏈、精確覆蓋問題、演算法謎題、可滿足性問題等。

《計算機程式設計藝術 卷1:基本演算法(第3版)》
高德納|著
李伯民,範明,蔣愛軍|譯
卷 1 講解基本演算法,其中包含了其他各卷都需用到的基本內容。本卷從基本概念開始,然後講述資訊結構,並輔以大量的習題及答案。

《計算機程式設計藝術 卷2:半數值演算法(第3版)》
高德納|著
巫斌,範明|譯
卷 2 全面講解了半數值演算法,分“隨機數”和“算術”兩章。書中總結了主要演算法範例及這些演算法的基本理論,廣泛剖析了計算機程式設計與數值分析間的相互聯絡。

《計算機程式設計藝術 卷3:排序與查詢(第2版)》
高德納|著
賈洪峰|譯
卷 3 擴充套件了卷1 中資訊結構的內容,主要講排序和查詢。書中對排序和查詢演算法進行了詳細的介紹並對各種演算法的效率做了大量的分析。

《計算機程式設計藝術 卷4A:組合演算法(一)》
高德納|著
李伯民 賈洪峰|譯

4A卷(一)主要介紹了組合演算法,內容涉及布林函式、按位操作技巧、元組和排列、組合和分割槽以及所有的樹等。

《計算機程式設計藝術:MMIX增補》
高德納 馬丁·魯克特|著
江志強 黃志斌|譯
本書由兩本小冊子合併而成,第一部分描述了 MMIX 的記憶體、暫存器、指令、載入與儲存等基礎概念,並介紹了關於 MMIX 的一些基本程式設計技術;第二部分使用該語言重新實現了 TAOCP 前 3 卷中的所有演算法。


🎁 感謝各位讀到最後,小編特意為你們準備了福利:
三連本文(點贊、分享和推薦),並在留言區評論,我們將隨機抽取三名幸運讀者贈送一本計算機科學領域的聖經:《計算機程式設計藝術卷 4B》中文版
購買地址:

相關文章