1. 程式人生 > >從巴貝奇、愛達到圖靈

從巴貝奇、愛達到圖靈

資訊簡史》,最近終於讀完了。這是一本從資訊的視角來描述其進化史的書,一本充滿了技術性描述的科普性書籍。也不乏一些有趣的故事,其中就有那麼幾個人,他們實際是和計算機和程式有關,而計算機和程式在今天這個資訊時代早已是資訊的載體和處理者了。

十八世紀

查爾斯·巴貝奇(Charles Babbage),90 後,恩,一個十八世紀的 90 後(1791 年生),出生於工業革命的高峰時期。那時英國工業革命的巔峰作品 —— 蒸汽機,在他出生前沒幾年才剛剛被髮明出來。

那時,是一個崇尚機械的年代。人們相信機械的力量是可以做到一切的時代,這源自於工業革命的進步帶來了蒸汽機和各種機械裝置,將人們從各種勞動中解放了出來。就是在這樣的時代背景下,巴貝奇成長起來,開始了對數學制表的機械化研究,並逐漸成為活躍於十九世紀的數學家、發明家和機械工程師。

十九世紀

一天,巴貝奇坐在家裡的陽臺上休息,不知不覺被對面紡織女工的工作吸引了目光。他不由得看的出了神,他看著紡織女工紡織布匹的過程,把一種紙上的花紋圖案通過紡織過程轉移到了織物之上。近來,他一直在思考用機械裝置進行數學計算,這似乎一下擊中了他,看到了曙光。

引發巴貝奇想象的不是布匹的紡織過程,而是將布匹的圖案從一種媒介轉換到另一種媒介的編碼過程。那是一臺紡織用的雅卡爾提花機,這臺機器通過編碼並存儲在打孔卡片上的指令進行控制。在這臺紡織提花機的啟發下,巴貝奇發明了「差分機」,一臺能大幅提高乘法運算速度和提高對數計算精度的機器。

1832 年,17 歲的愛達(Ada),在老師的帶領下去參觀了巴貝奇的「差分機」,並被其深深的迷住了。這是一臺能自動計算數學題的機器,而當時愛達正醉心於數學學習。她的母親為她請的老師摩根正是計算機數學基礎布林代數的創始人之一。那時的英國科學風氣盛行,許多婦女都在雜誌上發表文章探討數學問題,而愛達也在那時展現出了非凡的數學天賦。

在見到「差分機」的第二年,愛達和巴貝奇正式見了一次面。當時,巴貝奇奇雄心勃勃的設計了一個新的機器:「分析機」。他將自己的想法和設計詳細地講給愛達聽,愛達認真地聽完巴貝奇的計劃,並仔細看了他的文稿,深深地為之陶醉。她認為這的確是一個將要改變世界的偉大設想,她表示一有機會就將親身參與這項工作。從此愛達與巴貝奇開啟了一段持續十八年的忘年之交。

巴貝奇的「分析機」,它的機械結構被分成了「計算單元」和「儲存單元」兩個部分。其中「計算單元」不僅內建四則運算,還可以存四組不同的運算方程式,用穿孔卡片(來自雅卡爾提花機的靈感)載入到機器裡。從某些方面來說,它的計算、儲存、輸入輸出(I/O)三項分離設計,和今天的計算機設計完全一致。只是可惜他的思想太超前,無論他如何努力遊說、路演也沒有人投資給他建造這臺機器所需的資金。所以,「分析機」的設計僅停留在紙面上,從沒做成過實體機。

就是在這樣一臺從未做成實體,停留在想象和紙面的機器上,愛達開始了她的程式設計之旅。她設計了一個過程,一組規則以及一系列運算。在一個世紀後,這些過程、規則和運算會被稱為一種演算法或一個計算機程式。當時,所有有關程式設計概念的術語,包括:演算法、迴圈、條件、分支、遞迴,在那個時代都還沒有發明出來。而愛達卻已深刻的理解了所有這些名字背後的實質。她設想的演算法是遞迴的,它迴圈執行,巴貝奇曾將這種方式稱為“機器咬尾巴——團團轉”。

她就是這樣為一臺還不存在的機器程式設計,在頭腦中程式設計。這些程式包括計算三角函式程式、級數相乘程式、伯努力數計算程式等等,今天這被視為是“第一套計算機程式”。因此,愛達被世人稱為第一位程式設計師。1981 年,美國國防部把它花了 10 年開發的一種計算機語言命名為 Ada,以此紀念她。

有時覺著歷史上的很多天才總是不長命,而愛達還出生於一個天才家庭。她有一個比她更有名的父親 —— 英國大詩人:拜倫。但父親在其剛滿月不久時就和她母親離婚,從此離開英國再未相見。拜倫一直想找機會回到英國見見自己的女兒,但人生無奈,愛達 8 歲那年他還沒來得及回去,便已離世。有時讀著拜倫留下的詩句:

如果我們再相見,事隔經年。我將何以招呼你,以眼淚,以沉默。

在想,如果他們真有再相見時,這也許就是愛達的心境吧。愛達開始和巴貝奇共同構建夢想的那年,她 18 歲,18 年後,愛達因病去世,和拜倫一樣都是 36 歲去世。根據她的遺願,她被葬於諾丁漢郡其父親身邊,終於再見了。在她短暫一生的最後時光,她留下了一個關於程式的夢想:

我以我自己的方式遲早會成為一名獨裁者。我現在可不會說,但我希望,它們將是紀律嚴明、異常和諧的軍隊 —— 由大量的數構成,伴著軍樂以勢不可擋的力量行進。

至於巴貝奇的那臺分析機,愛達離世後它便逐漸淡出視線,埋塵歷史。它在重新被人記起之前,先得被人遺忘。巴貝奇在其生命的最後幾年,可能感覺時日無多,再不可能等到這臺機器被造出來的那一天,他寫道:

如果有人在未被告誡以我的前車之鑑的情況下,試圖嘗試這項如此了無指望的工作,並通過完全不同的原理或更簡化的機械手段而成功實現了一臺可與整個數學分析部門相當的機器,那麼我不怕把自己的名譽託付給他,因為他肯定會完全理解我當年努力的性質及其成果的價值。

恩,這個人會出現的,但還需要再等一百年。

二十世紀

一個世紀後,1936 年,還在劍橋國王學院就讀的阿蘭·圖靈發表重要論文《論可計算數及其在判定問題上的應用》,正式提出了“演算法(algorithms)”和“計算機(computing machines)”這兩個核心概念,一直讓我們受用到今天。

1950 年,圖靈接著發表了論文《計算機器與智慧》(Computing Machinery and Intelligence),為後來的人工智慧科學提供了開創性的構思。他提出了著名的「圖靈測試」:指出如果第三者無法分辨人類與人工智慧機器反應的差別,則可以論斷該機器具備人工智慧。圖靈首次從行為主義的角度給出了人工智慧的定義。

前兩年有部電影《模擬遊戲》就是基於圖靈的傳記改編的,電影實際只刻畫了圖靈波瀾起伏的人生中短短的一小段。而且改編的也不一定完全符合史實,但裡面有一段情節倒是很讓人觸動:圖靈閃耀光芒的時期,正是在打第二次世界大戰的時代。二戰背景下如圖靈這樣的技術工作者,處在一個兩難境地 —— 破解不了德軍密碼,每時每刻都有人在戰場上死亡;最後破解了密碼,獲得了情報,卻只能看著卻不能告知友軍轉移。

圖靈也許就是巴貝奇一直寄希望出現的人,值得他託付名譽的人。用一種和他設想的完全類似的原理,但卻非機械化的手段,成功設計出了可以媲美十九世紀整個數學分析部門的計算機器。「圖靈機」是圖靈在頭腦思維中的構想,但很快以此為基礎的計算機就被髮明瞭出來。在還沒有計算機的時代,圖靈不但探索了計算機能做的事,還指出了計算機永遠不能做到的事。他為計算機領域奠定了不可埋沒的基礎,沒有他也許就沒有計算機的今天。