天天看點

究竟是計算機之父還是計算機科學之父?本文帶你了解天才馮諾依曼令人眼花缭亂的操作現代計算機之父計算理論

時隔很久,科學家中的通才這個系列,直到今天才寫完最後一篇文章,帶大家一起了解一下馮·諾依曼的開挂人生。

前兩篇文章的傳送門:

聊聊科學家中那些“不專一”的通才:牛頓

例數那些“不專一”的通才科學家:麥克斯韋

《量子力學的數學基礎》(1926)、《計算機與人腦》(1958)、《經典力學的算子方法》、《博弈論與經濟行為》(1944)、《連續幾何》(1960),如果告訴你這些書都是一個人寫的,你有什麼感覺?估計大部分人會覺得,這人是為了評職稱也太拼了吧,咋啥玩意兒都敢寫啊……

上面開個玩笑,其實這些著作确實是馮·諾依曼一個人寫的,但他可不用擔心自己的職稱,人家30出頭就已經是普林斯頓進階研究院的六名特聘教授之一,而且還是其中最年輕的一位,要知道,這裡面還有愛因斯坦哦。是以馮·諾依曼他可不是一般的天才,看看下面照片中的發量就知道厲害了吧!

究竟是計算機之父還是計算機科學之父?本文帶你了解天才馮諾依曼令人眼花缭亂的操作現代計算機之父計算理論

對他的評價,比較全面和客觀的是:20世紀最重要的數學家之一,在現代計算機、博弈論、核武器等領域内的科學全才,被後人稱為“計算機之父”和“博弈論之父”。怎麼樣,咱們本文把他歸作科學通才之列,名副其實吧。接下來,咱就逐一談談他在上述各方面的天才貢獻。文章太長,還是老規矩:分為上下兩部分,這篇是上半部分。

他最為人熟知的貢獻,就是對現代計算機的基礎性貢獻,他提出了計算機制造的兩個基本原則,即采用二進制邏輯和計算機的存儲程式工作原理,他還把計算機劃分為五個部分(運算器、控制器、存儲器、輸入裝置、輸出裝置),這被稱為馮·諾依曼體系結構,直至今天的計算機仍然在使用,是以我們一般都稱他是“現代計算機之父”。接下來就詳細說說這段曆史。

我們一般都知道,eniac機是世界第一台電子計算機。它于1946年2月14日在費城開始運作。但eniac機存在兩個明顯的缺點:它沒有存儲器,而且使用布線接闆進行控制,光搭這些線就夠一群人擺弄一整天,是以它總體計算效率肯定就高不了哪去。是以,eniac機研制組顯然也很頭大,迫切的想改進計算機的結構。

另一邊,在1944年,諾伊曼正參加原子彈的研制工作,該工作涉及到極為困難的計算(算是黎明前的黑暗吧,次年第一顆原子彈就試爆成功了)。在對核反應過程的研究中,要對一個反應的傳播做出“是”或“否”的回答。解決這一問題通常需要通過幾十億次的數學運算和邏輯指令。他所在的洛·斯阿拉莫斯實驗室為此聘用了一百多名女計算員,用台式計算機從早算到晚,還是太慢了。

馮·諾依曼在一次極為偶然的機會中知道了eniac計算機的研制計劃,就這麼機緣巧合的投身到這一宏偉的事業中,成就了他傳奇一生中最大的豐功偉績。

究竟是計算機之父還是計算機科學之父?本文帶你了解天才馮諾依曼令人眼花缭亂的操作現代計算機之父計算理論

馮·諾依曼和奧本海默在第一台計算機前合影

1944年夏的一天,正在火車站候車的諾伊曼遇到了正在參與eniac計算機研制的美國彈道實驗室軍方負責人戈德斯坦,并同他進行了短暫的交談。交談中,諾伊曼迅速對這一研制計劃産生了濃厚的興趣,他意識到了這項工作所具有的深遠意義。

之後,馮·諾依曼就由這位戈德斯坦中尉介紹,參加了eniac機研制小組,便帶領着一批富有創新精神的年輕科技人員,向着更高的目标進軍。加入之後,馮·諾依曼便顯示出他雄厚的數理基礎知識,和探索問題和綜合分析的天才,在他們共同讨論的基礎上,諾依曼以手寫的方式撰寫了一份報告——《edvac報告書的第一份草案》,這是計算機發展史上一個劃時代的文獻。

在這份報告中,馮·諾依曼明确了新機器由五個部分組成,包括:運算器、控制器、存儲器、輸入和輸出裝置,并描述了這五部分的職能和互相關系,進而系統地介紹了制造電子計算機和程式設計的新思想。

不僅如此,馮·諾依曼還根據電子元件雙穩工作的特點,建議在電子計算機中采用二進制。報告提到了二進制的優點,并預言,二進制的采用将大大簡化機器的邏輯線路。時間證明了諾伊曼預言的正确性。如今,邏輯代數的應用已成為設計電子計算機的重要手段,在edvac中采用的主要邏輯線路也一直沿用着,隻是對實作邏輯線路的工程方法和邏輯電路的分析方法作了改進。

隻是出于一些原因,這份報告隻署了馮·諾依曼一個人的名字,這個事情後來引起了很多争議,原因也衆說紛纭。其中到底發生了什麼事并非本文重點,在此略過。但有一點是确定的,此份報告中所提出的計算機新架構,被稱為“馮諾依曼體系架構”,一直沿用至今!

擴充閱讀1:計算機到底是誰發明的……

圖靈和馮諾依曼,說起來都是泰山北鬥式的人物,而且又都對計算機有着開創性的貢獻,但是這二位天才到底誰才是計算機的真爸爸啊……

究竟是計算機之父還是計算機科學之父?本文帶你了解天才馮諾依曼令人眼花缭亂的操作現代計算機之父計算理論

一句話來說,圖靈是從理論上闡述了計算機的可能性,他應該稱為計算機科學之父;而馮諾依曼确定了現代計算機的基本架構和技術路線,他應該被稱作現代計算機之父。

而且根據一個不可考的傳聞(至少我沒找到具體的出處),馮諾依曼在談到他的理論與構思時,謙虛地說,這些理論與構思的基礎來自于英國數學家圖靈和布爾的思想。雖然這個說法非常的謙虛,但确實也是事實。圖靈在1936年發表的一篇論文《論可計算數及在密碼上的應用》(on computable numbers, with an application to the entscheidungsproblem)中,嚴格地描述了計算機的邏輯結構,首次提出了計算機的通用模型——“圖靈機”,并從理論上證明了這種抽象計算機的可能性。

可惜當時幾乎沒有多少人出席了圖靈的演講,而當演說結束後,隻有區區兩個人詢問是否可以轉載他的文章。在那個時代,圖靈的想法被認為過于激進,進而無法被絕大多數人所接受。而時至今日,通用圖靈機的理念——通過改變軟體來實作多重任務執行的抽象計算機——早已被确定為當代計算機的前身,是從第一代陰極管陣列到今天我們所用的各類電腦産品的共同“祖先”。

我們知道20世紀的很多頂級科學家都思考過有關生命起源于演化的問題,我在從平衡到遠離平衡,有關生命如何從零到一的暢想(上)這篇文章中較為詳細的梳理了近代科學曆史上有哪些人做了哪些有重大意義的貢獻。作為天才中的天才的馮諾依曼當然也不例外,隻是他的出發點有點與衆不同。

究竟是計算機之父還是計算機科學之父?本文帶你了解天才馮諾依曼令人眼花缭亂的操作現代計算機之父計算理論

在完成了edvac計算機的設計項目之後,他的興趣轉向了對計算本身的探索,與圖靈類似,他也想發展一套資訊處理的一般性理論,而且在這個過程中,他最早也最深刻的意識到生命與計算之間的聯系。相對于計算機之父的稱号,馮諾依曼對“計算”理論本身的研究與貢獻聽起來好像沒那麼耀眼,但我認為它的意義卻更加深刻和深遠,下面從兩個方面來向大家介紹:

a)自複制自動機

受到生命繁殖的啟發,馮諾依曼對“如何才能實作自我複制”這件事産生了興趣。在20世紀40年代晚期,馮·諾依曼已經初步解決了這問題。當時他在加利福尼亞州的海克森研讨班上做了一系列演講,要解決的核心問題就是“機器要怎樣才可以自我複制?”他認為,任何能夠自我繁殖的系統,都應該同時具有兩個基本功能:

第一,它必須能夠建構某一個組成元素和結構都和自己相同的下一代;

第二,它需要能夠把對自身的描述傳遞給下一代。

他把這兩個部分分别叫做“通用構造器”和“描述器”,而描述器又包括了一個“通用機器”和儲存在通用機器能夠讀取的媒體上的描述資訊。你看,他感興趣的點和思考問題的思路都是和計算機及其具體實作相關的對吧,也就是說,馮諾依曼其實希望把自我繁殖功能做成一個自動機。

這樣,隻要有合适的原料,通用構造器就可以根據描述器的訓示,生産出下一台機器,并且把描述的資訊也傳遞給這台新機器。随後,新機器啟動,再進入下一個循環,然後就子子孫孫無窮匮也了。

究竟是計算機之父還是計算機科學之父?本文帶你了解天才馮諾依曼令人眼花缭亂的操作現代計算機之父計算理論

要知道,馮諾依曼做出這些思考可是在遺傳物質發現之前哦!幾年後的1953年,沃森和克裡克發現dna完全符合馮·諾依曼所提出的兩個要求。是以從這個觀點出發,生命本身就是一台自動機。不僅如此,馮諾依曼還提出了如何建構一個能夠自我複制的機器的完整設計!而馮諾依曼對于自我複制機器的研究所用的工具,就是下面要說的:元胞自動機。

b) 元胞自動機

剛才說的馮諾依曼體系架構,其實是一個中心化的計算體系,整個計算機系統的核心就是cpu,程式存儲在存儲器中供cpu順序執行。相比而言,這裡說的這個元胞自動機是一個去中心化的計算系統,它一般由大量的“元胞”組成,每個“元胞”的狀态受其周圍元胞的狀态調控,而且所有的元胞都遵循同樣的規則來決定自身的狀态。

但看似如此簡單的規則,哪怕組成系統的元胞再多,也應該是死氣沉沉的吧。錯!元胞自動機系統所能呈現出來的整體行為是極為複雜和豐富的,即便它們不存在任何中央控制單元。如果你想了解更多,請看下面的擴充閱讀部分裡的簡單介紹:

擴充閱讀2:元胞自動機

究竟是計算機之父還是計算機科學之父?本文帶你了解天才馮諾依曼令人眼花缭亂的操作現代計算機之父計算理論

燈泡陣列:元胞自動機的一種實作,摘自《複雜》一書

上圖所示的燈泡陣列可以用來了解元胞自動機的概念,每個燈有“開”和“關”兩種狀态,每個燈與周圍的8個燈相連(邊上的燈會認為與另一邊的相連,比如最左邊的燈,會認為與最右邊的燈相連。這樣所有燈都與8個燈相連)。初始階段,部分燈開部分燈關。元胞自動機像cpu一樣一步一步地進行計算。

每個元胞自動機有一個規則,來說明每個燈怎麼根據之前周圍8個燈及自己的狀态決定自己下一步時的狀态(比如一種規則可以是:采用鄰域占多數的狀态。圖中即展示了這種規則下下一步此元胞自動機會怎麼變化)。

同樣,我在從平衡到遠離平衡,有關生命如何從零到一的暢想(下)這篇文章中的最後一部分,也提到了一個簡化的二維元胞自動機:生命遊戲的内容,大家有興趣可以參閱,在這裡就不展開了。

馮諾依曼證明了它的元胞自動機等價于通用圖靈機,也就是說,元胞自動機同樣具有通用計算的能力!它是結構完全不同于馮諾依曼架構的另一種計算機!有意思吧,計算機架構就分為“馮諾依曼”架構和“非馮諾依曼架構”,結果“非馮諾依曼架構”中最重要的一種,還是由馮諾依曼提出的…… 是以計算機管他叫父親,不冤吧。

因為對計算和計算機的貢獻實在太耀眼,而且也比較相關,是以我就放在本篇中一起談了,在下一篇中,将會和大家聊聊馮諾依曼在其它領域的貢獻,同樣光芒四射。