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