![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtGKndz7ZNmUPS-sP7bCAHDKMGH9mPVfgX0buPDDavm3eLurepG4Jhure3x5a6zfgYulr3A2gAFdWWm0MpUuni4lzmXQmJLz7XZ-b69pvizGBSeQjx3n9p15r4cBDGxSpK0UoenQnXMso/s320/Babbage.gif)
在 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
沒有留言:
張貼留言