丹尼爾·希利斯講計算機 | 被動收入的投資秘訣 - 2024年8月
![](https://www.books.com.tw/img/CN1/172/00/CN11720089.jpg)
丹尼爾·希利斯講計算機
● 雖然電腦技術及應用以及程式設計技術都取得了巨大進步,對社會產生的影響也遠遠超出了預言家的預期,但電腦背後的工作原理,即本書所闡述的關於電腦的概念,仍沒有改變。本書聚焦電腦背後不曾改變的基本原理,是每一個想要瞭解電腦,或從事與電腦相關工作的讀者都不能錯過的一本經典之作。
● 《丹尼爾·希利斯講電腦》深入淺出地闡述了電腦科學中許多基本而重要的概念,包括布林邏輯、有限自動機、程式設計語言、圖靈機的普遍性、資訊理論、演算法、平行計算、量子計算、神經網路、機器學習乃至自組織系統。全書既不失深度,又妙趣橫生,幫你瞭解電腦運行背後的奧秘。
丹尼爾·希利斯
● 著名電腦科學家、發明家、企業家,麻省理工學院媒體實驗室客座教授。曾就讀于麻省理工學院,在馬文·明斯基的指導下研究人工智慧。
● 他還創立了思維機器公司(Thinking Machines Corporation),建立了一支由科學家、工程師和設計師組成的團隊,成員包括諾貝爾獎得主悉尼·布倫納、著名物理學家理查·費曼等,他們共同致力於打造超級平行電腦。
● 除了設計公司的主要產品外,希利斯還與其他用戶密切合作,將其產品應用在天體物理學、飛機設計、金融分析、遺傳學等領域。
前 言 石頭中的魔術- 001
01基礎知識- 007
布林邏輯 010
二進位位元和邏輯塊 021
液壓電腦 025
萬能工匠—積木 029
不必擔憂那些非同小可的差異 031
02通用構件- 033
邏輯功能 035
有限狀態機 047
03程式設計- 059
與電腦對話 063
建立連接關係 077
翻譯語言 086
層次結構 087
04圖靈機的通用性- 089
圖靈機 092
計算能力等級 094
亂數 097
可計算性 099
量子計算 103
05演算法和啟發式方法- 111
演算法的保證性 114
解決問題的萬能方法 121
適應度地形 127
06存儲:資訊和密碼- 131
壓縮 136
加密 144
查錯 146
07速度:平行電腦- 153
並行性 157
08能自我學習和進化的電腦- 173
訓練電腦 179
神經網路 182
自組織系統 189
09超越工程- 193
大腦 197
模組化的問題 201
模擬進化 203
進化出會思維的機器 207
致 謝
序
電腦背後不曾改變的基本原理
本書初版問世很久之後,我的出版商驚訝地發現:它在當下仍然很受歡迎。這也是我有機會為本書寫再版前言的原因。本書已被翻譯為十幾種語言,至今仍有眾多讀者。自本書問世以來,電腦技術及應用發生了天翻地覆的變化。不過本書並不著眼於電腦的具體技術及應用,而是關注電腦背後不曾改變的基本原理,這也是本書能持續熱賣的關鍵所在。
我必須承認,令我感到詫異的不是在數位革命之初就已存在的那些關於電腦科學的原理如今依然很重要,而是迄今為止,幾乎沒有新的原理補充進來。10 多年過去了,雖然電腦技術及應用以及程式設計技術都取得了巨大進步,對社會產生的影響也遠遠超出了預言家的預期,但電腦背後的工作原理,即本書所闡述的關於電腦的概念,仍沒有改變。我本來想利用再版的機會增添一些新內容,但令我感到吃驚的是,並無新的基本原理可供補充。
在目前的版本中,我選擇性地刪除了一些無須再費筆墨解釋的概念。不過,這並非意味著這些內容是錯誤的。例如,在一個每天都享受雲平行計算服務的讀者看來,平行計算方面的內容並無新意。真正令人費解的是,為何20 世紀有如此多的專家都堅信,平行電腦永遠不會被投入使用。此外,如今的你們可能會對本書中有關人工智慧的觀點有所抵觸,因為目前你們與智慧型機器相處得十分融洽。事實上,20 世紀時許多人對智慧電腦的概念感到惶恐不安,比如,當電腦第一次擊敗人類國際象棋冠軍時,許多人感到很沮喪。然而,過了不到20 年,當電腦在一項流行的益智電視節目中再次擊敗人類冠軍時,更多人開始為電腦鼓勁加油。從那時起,人們普遍將電腦視為助手而非威脅。
除了修訂拼寫錯誤之外,我盡可能地保持了本書初版的原汁原味,不去刻意提高文字的感性程度,實際上,感性是一種不斷變化的浮動目標。與其緊跟必將過時的當下潮流,還不如讓作品定格在某一時刻更為有趣。同時,本書寫成於電腦科學發展歷程中的一個特殊時期,雖然那時電腦已經顯示出了足以改變我們生活的潛力,但這一切很大程度上還未實現。那時的電腦非常簡單,以至於我對自己設計的電腦的每個電晶體和所編寫的每行代碼都瞭若指掌。不過,正如本書最後一章預期的那樣,我們現在到達了一個臨界點,即電腦系統的複雜度已經超出了任何人所能完全理解和掌握的程度。
關於未來的發展,本書提出了兩個可能的方向。第一個是量子計算,正如書中所述,它具有巨大的潛力,但目前並無可行的實現方式。當我寫下這句話時,現實情況仍是如此。從理論和技術方面來說,量子計算取得了巨大突破,但它們中的任何一個的計算速度都比不上傳統電腦。正如本書初版所述,量子計算仍是“一個值得關注的領域”。本書預測的第二個可能方向是,電腦能像生物進化過程那樣實現自我設計。目前,這個方向已經顯現出了隱約的曙光,不過在很大程度上,它只是一個未實現的可能方案。目前,我們還缺乏相關理論來說明這個過程如何才能成為現實。我對未來發現這些新原理持樂觀態度,期待能夠在本書的後續版本中繼續討論。
前言
石頭中的魔術
在一塊石頭上,我蝕刻了一系列幾何圖案,在外行看來,這些圖案顯得神秘而又複雜,但我清楚地知道,只要佈局正確,這些圖案就會賦予這塊石頭一種特殊的能力,即對人類從未說過的一種咒語做出回應。如果我用這種語言提問,石頭便會應答:這是一個我用符咒創造的世界,一個在石頭圖案中想像的世界。
如果我在幾百年前的老家新英格蘭說出自己從事的職業,可能會被當作巫師送上火刑柱。實際上,我的工作和巫術沒有任何關係,我從事的是電腦設計和程式設計,而上文提到的石頭是矽晶片,符咒是軟體程式。雖然蝕刻在晶片上的幾何圖案和指示計算機工作的程式看起來複雜且神秘,但根據一些基本的生成原理,我們很容易將其解釋清楚。
雖然電腦是人類有史以來最複雜的人造物,但從基本原理上來說,它們又十分簡單,僅有數十人的團隊就能設計並製造出包含數十億個零部件的各類電腦。如果將其中一台電腦的線路圖在紙上畫出來,那麼所用的紙張便能塞滿一座大型公共圖書館,沒有人會有耐心將其流覽一遍。幸運的是,電腦的設計具有規律性,沒有必要將線路圖看一遍。電腦是由不同層次的部件構建起來的,而每一層次的部件都會被重複多次。只要理解了這些層次結構,你就能讀懂電腦。
還有一個使電腦易於理解的原理,那就是其各部件之間交互作用的本質。這些交互作用很簡單,而且定義明確,通常具有單向性,可以準確地排列成一系列因果關係,這使電腦內部的運行原理比汽車發動機或者收音機的運行原理更容易理解。雖然相比於汽車和收音機,電腦擁有更多零部件,但這些部件協同工作的方式非常簡單。電腦更多依據的是概念,而非技術。
這些概念與組成電腦的電子元件沒有任何關係。現代電腦由電晶體和電路組成,不過,根據同樣的原理,電腦也可以由閥門和管道,或者棍棒和繩索搭建起來。這些原理是電腦能夠進行計算的根本所在。電腦最引人稱道的一點是,其本質遠勝於技術,而本書就旨在介紹電腦的本質。
我多麼希望在剛開始學習電腦這門學科時就能讀到這樣一本書。大多數電腦類書籍不是介紹電腦的使用方法,便是介紹具體的創造技術,比如唯讀記憶體(ROM)、隨機記憶體(RAM)、磁碟機等。這本書討論的重點是“概念”,而且會介紹電腦科學領域的大多數重要概念,包括布林邏輯、有限狀態機、程式設計語言、編譯器和解釋程式、圖靈準則、資訊理論、演算法及其複雜度、啟發式方法、不可計算的函數、平行計算、量子計算、神經網路、機器學習和自組織系統等。對電腦感興趣的讀者可能已經聽說過其中的許多概念,但對於非電腦專業出身的人來說,很難明白這些概念是如何結合在一起的。本書將會介紹這些關聯—從類似開關的閉合等簡單的物理過程開始,一直深入到自組織平行電腦所呈現出來的學習和自我調整能力。
電腦的本質基於幾條基本原則。第一條原則是功能抽象原理(functional abstraction),它奠定了前文提到的因果關係層次結構。電腦的結構就是這一原理的應用範例,即許多層次結構能夠被不斷重複。電腦之所以易於理解,是因為你可以專注於某一層次結構發生的情況,而不必擔心較低層次結構上發生的細節。功能抽象原理是使概念與技術脫離的關鍵。
第二條原則是通用電腦原理(universal computer),即所有的電腦都屬於同一種類型,更確切地說,所有類型的電腦在能做和不能做哪些事上是相似的。我們也可以這樣說,一台通用電腦能夠類比所有類型的電腦,無論其組成材料是電晶體、棍棒、繩索,還是神經元。這是一個非常重要的假設,它表明,製造一台能像大腦一樣思考的電腦只是一個進行正確程式設計的問題,我將在後面詳細解釋這一點。
從某種意義上來說,第三條原則是第一條原則的對立面,我將在最後一章展開詳述。也許存在一種全新的電腦設計和程式設計方式,它並不基於標準的工程設計方式。這一設想令人感到無比興奮,因為當系統過於複雜時,常規的系統設計方式將不再有效。實際上,第一條原則會導致系統帶有一定程度的脆弱性和低效性。這個缺點與資訊處理器的基礎性缺陷沒有關係,而是層次設計方式的一個缺陷。那麼,如果我們採用一種與生物進化相似的設計過程,情況會如何呢?在這個設計過程中,系統行為源自很多簡單交互作用的累積,而非“自上而下”的控制。通過這種進化過程設計出來的電腦可能具有生物體的某些健壯性和適應性。至少,這是一種希望。我們還未完全參透這一設計方式,它也可能會被證明行不通。這是目前我研究的一個課題。