石頭上的神奇魔力
我在石頭上蝕刻一些幾何形狀的圖案。對不熟悉這些圖形的人來說,它們看起來相當神秘、複雜,但我知道,只要經過正確的排列,這些圖案就賦予這塊石頭特殊的能力,使它能回應某種人類未曾使用、撰寫過的咒語。透過這種咒語我將對石頭提出問題,它則示我以幻影:一個由我的咒語衍生的世界,一個由石上圖樣孕育的世界。
幾百年前,在我的故鄉新英格蘭,如果我這麼精確地向人描述我的職業,可能會遭致火刑。弔詭的是,我的工作與巫術絲毫扯不上關係,實際上,我設計電腦並撰寫程式。所謂的石頭是用矽做成的薄晶片,咒語則是指軟體(software)。矽晶片上蝕刻的圖形及指揮電腦的程式,看起來可能既複雜又神秘,但它們都是根據一些基本原理設計出來的,而解釋這些原理則非常容易。
電腦是人類創造物中最複雜的,不過,若從最根本的觀點來看,它們其實還是相當簡單。藉由與幾個小組人員的合作,我已經設計、建造出含有數十億個活動元件的電腦。若把這些機器中任何一個線路圖呈現出來,那會填滿大型圖書館裡的所有書籍,而且沒有任何人有耐心全數讀完。幸而計算機的設計有規則可循,所以我們並不需要這樣的線路圖。電腦是由其元件按階層架構(hierarchy)建構起來的,而每個元件則被重複利用,因此當你想了解電腦,只需要了解這個階層架構就可以了。
另一個讓我們容易了解電腦的原理是元件間交互作用的本質。這些交互作用非常單純且定義明確,它們通常是單方向的,因此電腦的動作便能清楚地分為因與果,也使得電腦內部的運作方式,比汽車引擎或無線電的運作方式更容易讓人理解。電腦所用的元件比汽車或收音機還多,不過電腦元件彼此間的運作方式卻單純多了,它對於概念、思想上的依賴程度比其技術層面要高得多。
此外,這些概念與製造電腦所用的電子學幾乎沒有任何關係。現今的電腦雖由電晶體及線路構成,但依照相同原理,它也可以用活門及水管或是木棍及繩線製造,此原理正是電腦能執行運算的精髓。電腦最引人注目的地方之一就在於它的原始本質超越了技術層面,而這樣的本質正是本書所要介紹的。
這樣的書是我希望自己在初次接觸計算(computing)這個領域時,就有機會讀到的。一般電腦書不是說明如何使用電腦,就是介紹電腦零組件(ROM、RAM和磁碟機等)的製作技術。有別於其他電腦書,本書的目的則在描述電腦運作的概念。我會介紹電腦科學領域的大部分重要概念,包括:布耳邏輯(Boolean logic)、有限狀態機(finite-state machines)、程式語言(programming language)、編譯器(compiler)及直譯器(interpreter)、杜林普遍性(Turing universality)、資訊理論(information theory)、演算法複雜性(algorithmic complexity)、啟發式解法(heuristics)、不可計算功能(computable functions)、平行運算(parallel computing)、量子計算(quantum computing)、神經網路(neural network)、機器學習(machine learning)以及自我組織系統(self-organizing system)。對電腦有興趣的人,可能早已接觸過其中許多種概念,但在電腦科學正規教育之外,我們鮮少有機會去了解這些概念彼此如何配合、協調。這本書提供全方位的電腦概念,從最簡單的啟閉開關(switch)物理程序,到自我組織的平行電腦所呈現的學習及適應行為,幫助您將這些概念連貫起來。