2015年11月2日

布爾與電腦

作者/項 潔(臺灣大學資訊工程系特聘教授,兼任臺大數位人文中心與臺大出版中心主任)

布爾邏輯使得二進制在電子元件上得以實現,並且能夠進行基本的算術演算。從前巴貝奇雖然能設計,卻無法建造的可變換程序的計算機,到二十世紀中葉終於在布爾邏輯的基礎上得以完成。布爾對於電腦與資訊時代人類文明的影響,絕不亞於其他更著名的科學家,但是這樣的成就,卻是他所不曾預料的。

1946年,世界第一台電子計算機(以下簡稱電腦)誕生了, 它的名字叫做ENIAC(Electronic Numerical Integrator And Computer),主要設計者是莫克利(John Mauchly, 1907~1980) 和伊克特(J. Presper Echert, 1919~1995)(當時團隊裡負責除法和開方運算的是一位華裔科學家朱傳榘)。那一年,距離布爾誕生已經131年,布爾也已去世82年,他有生之年大概沒有想像到現代電腦發展的圖景。所以為何要在布爾誕生200周年之際,談論布爾和電腦的關係呢?這個問題要從更久遠的過去談起。

計算機的發展
早從人類文明開始有精緻的交易行為起,就知道快速計算的重要。人類的第一個算盤,在西元前2500年西亞的蘇美文明中就已出現,而且全世界每一個文明幾乎都有類似的工具。隨著工業革命帶來的商業和科技的發展,西方世界對計算的需求也越來越複雜,除了加減乘除外,還需要計算不同的函數,以及能儲存部分計算成果的機制等。換句話說,也就是需要從單純的計算器(calculator)進化到計算機(computer)。1801年,雅卡爾(Joseph-Marie Jacquard, 1752~1834)就透過打卡(punch card)的設計來編織複雜的布料花樣,從現代的角度來看,那已經是在寫初步的程式了。

另一個更重要的發展,是比布爾年長24歲的巴貝奇(Charles Babbage, 1791~1871)在1834年開始設計的分析引擎(Analytical Engine)。巴貝奇花了數十年功夫改進這個機器,但一直到1871年巴貝奇去世,分析引擎始終沒有被製造出來。(巴貝奇設計的另外一個比較簡單,專做多項式運算的差分引擎(Difference Engine),終於在1991年被完整實現。)雖然如此,巴貝奇的分析引擎已經有了現代計算機的大致模樣。這個分析引擎的設計也是用雅卡爾的打卡機制,不同的是一個分析引擎的運作需要兩組卡片,一組描述要計算的函數及運算的指令,另一組包含函數中各個參數的值。熟悉1970年代以前電腦的讀者,一定看得出這已經和當時的打卡機與電腦運作類似了。值得一提的是,巴貝奇最重要的同事叫做奧古斯塔.愛達.拜倫(Augusta Ada Byron, 1815~1852), 她是大詩人拜倫的女兒,也被公認為全世界第一位程式設計師。1980年代美國國防部發展的程式語言Ada就是以她命名的。......【更多內容請閱讀科學月刊第551期】

沒有留言: