2010年9月26日 星期日

Charles Babbage


Babbage (1791--1871,讀音類似 cabbage) 二十二歲從劍橋獲得數學博士學位,當時是位被認為很具潛力的年輕數學家。在他還是學生的時候,就對計算機的設計產生興趣。他獲得英國皇家學院的資助,他應用當時的數學新知,著手設計並製造一台功能更廣泛的機械型計算機:差分機 (Difference Engine)。十年過去,就在差分機即將完成的時候,他領悟到:一台理想的計算機,必須能夠依指令改變其執行程序。也就是可變程式的概念。這是個前所未有的偉大理想。他立刻棄置了差分機,開始埋首設計分析機 (Analytical Engine) 以實現他的理想。整個設計在 1838 年完成,就連寫程式的方法都想好了。可惜當時的技術無法配合,Babbage 終其一生未能完成一台計算機。雖然 Babbage 是一位很優秀的數學家兼工程師,可惜他的時代環境還不能配合他的發明。這就好像一個人,在橡膠、內燃機都還未知之前,就想要發明汽車。但是他始終受到英國皇家學會的信任和資助,而且留下巨細無靡的設計圖 300 多張、筆記 6000 多頁,和許多半成品。他那未完成但是已經知道可以工作的差分機,後來整個版權贈送給了英國皇家學會,也許算是報答知遇之恩吧。
除了數學和計算機之外,Babbage 也是當時重要的經濟學者之一。他還搞了一些政治,但是這方面頗不成功,據說他不是個 EQ 很高的人。
在 Babbage 的時代,物理、航海與天文等科學都有了相當的理論和經驗。人類開始有更大的野心,想要瞭解自然現象的細節,更加掌握自然界的資源。於是我們開始須要作較大量的計算。科學家,甚至哲學家,開始想像:如果有一個會自動計算的機器,那該多好。今天所謂的科學計算,也在那時候開始了。最戲劇性的例子,該當是海王星的發現。
在 Herschel 以望遠鏡發現了天王星之後,科學家發現其運行軌道與牛頓力學所預測的不合。宗教界人士非常樂意聽到這個消息,他們或許認為上帝「顯靈」了。但是,令一批篤信牛頓學派的人並不服輸。 1845 年, 英國的 Adams 以計算的結果,斷言另一個行星的存在,甚至預測了它的軌道。但是 Adams 不敢正式發表他的結果。幾乎一年後,法國的 Leverrier 得到同樣的計算結果,而且立即公布。柏林天文臺接獲消息之後,當晚就按照計算預測的軌道而發現了一顆新的行星:海王星。這個計算問題牽涉到聯立微分方程式的數值解。 Adams 發明的解法,到今天仍出現在數值分析的教科書上。

[Ada] 年近半百的時候,Babbage 結識了當時的名才女,Augusta Ada Byron (1815--1852)。她是盛名詩人拜倫的女兒,後來成為伯爵夫人 (Countess of Lovelace)。但是她在滿月的時候,父母就離異了。她一生中沒機會見到那位詩人父親。後來根據她的遺囑,她與父親並排葬在一起;兩人都恰好各享年三十六歲。 Ada 不但能詩善畫,還是當時主要數學家 de Morgan 的學生。她因為某個機緣,參觀了 Babbage 的工作室。雖然零件散落滿地,屋子中央座落著一台怪物般的半成品,在聽到解釋之後,她說她看到了一個 「偉大而美麗的發明」。
Ada 參加了 Babbage 一部份的工作,尤其是程式設計方面。今天有些人認為,最早的計算機應該歸功給 Babbage,而最早的程式設計應該歸於 Ada (也有些人認為這樣太抬舉 Ada 了)。 1980 年代由美國國防部委託設計的一套程式語言,就以 Ada 命名。
然而 Ada 卻把這種可以因軟體而改變硬體功能的設計理念,歸功於法國人 Jacquard,原文是
We may say most aptly that the Analytical Engine weave algebraicl patterns just as the Jacquard-loom weaves flowers and leaves. Here, it seems to us, resides much more of originality than the Difference Engine can be fairly entitled to claim.
1805 年,Jacquard 製造了可變程式型自動織布機。它使用不同式樣的厚紙卡來控制紡綞和飛梭的交互作用,始其編出不同花式的布料。這個發明啟動了紡織工業的一次革命。根據記錄,到了 1812 年,這種機器一共賣出一萬一千台。

在 1840 年代,Babbage 和 Ada 已經認識到:
計算程式的核心技術在於重複
我認為這個說法並不誇張。試想,如果在今天的程式語言中不許使用 whilefor 這些迭代方法,也不許利用 ifgoto,那麼程式語言將有何用? Babbage 和 Ada 曾經明確地寫了下來:
自動計算機的真正重要之處,在於它可以重複執行一套給定的程序。其重複次數可以在計算前確定,也可以依計算結果而臨時決定。
顯然前者就是 for-loop,後者是 while-loop。原文是
(The real importance of an automatic computer) lies in the possibility of using a given sequence of instructions repeatedly, the number of times being either preassigned or dependent upon the results of the computation.


資料來源http://libai.math.ncu.edu.tw/bcc16/pool/3.01.shtml

沒有留言:

張貼留言