程序史記:從巴貝奇、愛達到圖靈

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

十八世紀

查爾斯·巴貝奇(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),爲後來的人工智能科學提供了開創性的構思。他提出了著名的「圖靈測試」:指出如果第三者無法分辨人類與人工智能機器反應的差別,則可以論斷該機器具備人工智能。圖靈首次從行爲主義的角度給出了人工智能的定義。

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

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

從巴貝奇的分析機到圖靈的計算機正好一百年,而從圖靈提出的人工智能距今已快 70 年,未來二三十年會怎樣呢?今天人們對人工智能的追捧,似乎就像巴貝奇年代對機械的崇尚,誰又來書寫二十一世紀的傳奇呢?


寫點文字,畫點畫兒,記錄成長瞬間。
微信公衆號「瞬息之間」,既然遇見,不如一起成長。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章