計算機領域大人物:馮・諾依曼

技術文章

這一周我們來分析幾個計算機領域的牛人,看看他們牛在哪裡,他們思考問題和做事情的獨特方法能給我們什麼啟發。

 

今天我們先來介紹馮・諾依曼。1946 年電子計算機誕生之後,很多人要將計算機之父的頭銜給他。馮・諾依曼講,應該給他的晚輩圖靈博士,但是人們依然不會因此而低估他的貢獻。那麼馮・諾依曼到底牛在哪裡呢?簡單地講至少有兩方面:他洞察到了同時代人看不到的事物的本質,找到了超越時代的答案。

 

馮・諾依曼參與到發明計算機的工作中完全是一件偶然的事情,而且後來在計算機方面的工作也只佔用他不多的時間,因為這個世界需要他做的事情太多了。

 

1944年,馮・諾依曼正負責美國的氫彈研製工作。當時原子彈的研究工作是由奧本海默負責,這件事大家都知道。但當時大家並不知道的是,美國人當時考慮得其實更長遠,已經開始研製威力更大的氫彈了,而馮・諾依曼是負責人之一。氫彈的研製需要解決大量的計算問題,當時並沒有好的計算機。因此,費米博士使用計算尺,費曼博士使用速度很慢的機械計算機,而馮・諾依曼自己則靠心算。

 

有一天,馮・諾依曼聽說美國陸軍為了研製長程火砲,委託賓夕法尼亞大學電機工程的教授莫奇利和他的學生埃克特博士設計和研製人類第一台電子計算機 ENIAC,於是便找到了他們,希望那台計算機也能幫助計算氫彈研製中的計算問題。不過,在看了他們二人的設計之後,馮.諾依曼發現那台計算機根本不是通用的,解決不了他的問題。其實如果當時在設計時稍加改進,就能將它變成一台通用的計算機,但是那時為時已晚。美國軍方問馮・諾依曼怎麼辦,對於已經造了一半的 ENIAC 他也沒有辦法,只能讓它繼續造下去。不過,馮・諾依曼留下一句話,如果將來要讓它計算其他問題,也並非完全不可能,只是要修改電路,特別麻煩。

 

兩年後,ENIAC 造出來了,但是仗打完了,火砲不用製造了,而其它的計算還需要計算機。那時科學家們在 ENIAC 上面每計算一道題,就需要改變一次電路。要知道那台計算機可是由兩萬個晶體管、五萬個電阻和一大堆其他的元器件組成的,電路複雜得不得了,中間的連線簡直亂得一塌糊塗。 ( 下圖是矽谷計算機博物館保存的一台20世紀50年代的計算機的內部連線圖,你可以看出它的連線是多麼複雜,而1946年的ENIAC要更加複雜。)

 

 

當時改一次電路少則幾天,多則兩三個月的時間。而改好電路後。計算本身只要幾分鐘。很顯然,這樣的計算機根本不實用。因此,世界上第一台計算機和今天所有的計算機都沒有血親關係。

 

好在馮・諾依曼意識到這個問題的嚴重性,在 1944 年就向軍方建議再造一台新的、 通用的計算機,這樣他就和莫奇利、埃克特一起提出一種全新的設計方案,稱為艾迪瓦克 ( EDVAC , Electronic Discrete Variable Automatic Computer;離散變量自動電子計算機 ),而 EDVAC 其實才是世界上第一台程序控制的通用的電子計算機,並且是今天所有計算機的鼻祖。

 

作為最早做出電子計算機的莫奇利和埃克特,自然是了不起的人物,但是馮・諾依曼幾乎是一眼就看到了二人的不足之處,說明他們和馮・諾依曼的水平不在同一個檔次上。這就如同兩個高手在練劍,旁邊來了一個過路人一眼就看出兩人的破綻,這個旁觀者必定是高手中的高手。

 

馮・諾依曼把報告交上去之後,軍方的負責人在上面寫上了〝馮・諾依曼的系統結構〞( Von Nuemann architecture ) 幾個字。這個標記原本只是為了好辨認,但是以後大家就將這種新計算機的發明權全部算在了他的頭上,以至於莫奇利和埃克特一直覺得他們在這份報告中所做的貢獻被埋沒了,當然這不是馮・諾依曼的本意。這份報告最重要的意義不僅在於設計了EDVAC,更在於它提出了一種通用的計算機的系統結構,並且告訴後人,計算機這種東西是需要頂層設計的。

 

說到這裡,就要簡單講一下什麼是計算機的系統結構。系統結構這個詞在英語裡是 Architecture,和建築結構是同一個詞,因此你可以把它理解成計算機的建築結構。

 

當然,建築結構也分層次,有最抽象、最高層的,也有比較具體的。馮・諾依曼系統結構則是計算機最高層的結構。這就如同說一個房子要有牆,有屋頂,有門窗一樣,或者說馮,諾依曼系統結構只規定了這樣一些原則。接下來,不同種類的計算機會有自己的系統結構,比如蘋果有蘋果的,PC機有所謂的 IBM 的,智能手機有智能手機的,等等。

 

直到今天,系統結構依然是計算機設計中最重要的,也是最難的部分。在計算機這一行里面,如果誰說自己設計了某大公司裡的哪個產品,雖然值得驕傲,但這種人能有很多, 未必能顯出過人之處。但是,如果誰說某種計算機處理器的系統結構是他提出來的,那就非常了不起了。

 

因為直到今天,能提出新的系統結構的人也不多。而直到目前為止,雖然各種計算機的系統結構有所不同,但是原理上並沒有脫離馮・諾依曼劃定的框架。我在前面講要在邊界中做事情,今天好的計算機科學家依然在馮・諾依曼劃定的框架裡做事,並非他們不想突破這個邊界,而是非常難突破。這就可以看出馮・諾依曼超越時空的智慧了。

 

我在《見識》一書中講,人生是一條河, 人的影響力取決於河的長度、寬度和深度。馮・諾依曼可以講是一條很長的河,影響至今, 他不是很寬,因為計算機從業者數量有限,但是卻非常深。

 

那麼馮・諾依曼為什麼那麼牛?

 

首先,是因為他極為聰明。馮・諾依曼和愛因斯坦是同一時代的人,而且在同一家單位 ( 普林斯頓高等研究所 ) 任職,當時他們的同事認為前者比後者更聰明。這倒不是因為馮・ 諾依曼是老闆,愛因斯坦是普通的教授,而是他們親身的感受。當時費米、費曼等人 ( 都是諾貝爾獎獲得者,絕頂聰明的人 ),有時他們要用計算機算一夜的問題,馮・諾依曼心算半小時就解決了。很多時候我們需要承認智力上的差異,這才是唯物主義的態度。

 

其次,馮・諾依曼精通數學和理論物理的幾乎每一個領域,用今天的話說是全才。除了在計算機上的貢獻,他所做出的同量級的貢獻還有七八項,包括:

 

  • 發明博弈論,諾貝爾獎獲得者納什是他的學生

  • 發明線性規劃

  • 建立數理統計的理論基礎

  • 完善測度理論、格理論和集合論

  • 提出量子邏輯和量子機 ( 計算機是一種量子機 )

  • 提出馮・諾依曼代數

  • 發明連續幾何學

 

同時,他還是美國原子能計劃及氫彈工程的主要負責人之一。

 

我經常講,科學是相通的,或者說一通百通,這一點在馮・諾依曼身上得到了很好的體現。

 

最後,他一輩子很專注。馮・諾依曼一輩子都是技術專家,雖然他主管普林斯頓高等研究所,但沒有像很多學者那樣成為政客,也沒有想著搞金融掙錢,或者跨界當作家等等。

 

和很多天才英年早逝一樣,馮・諾依曼並不長壽,但是他在並不長的人生里,完成了人類文明的一次跳躍式進步。

 

今天談馮・諾依曼的貢獻,是想說明這樣四個觀點:

 

  1. 人類需要見識超出同時代的人;

 

  1. 人需要做具有長遠影響力的事情,我們做事情寧可少一些,也需要一件事情的影響力大一些;

 

  1. 再聰明的人要想做好事情也需要專注;

 

  1. 世界上有很多成就比我們大得多的人,因此我們那點貢獻遠沒到能沾沾自喜的地步。

 

希望這些對你有所啟發。

 

最後邀請你思考一下:能否就一通百通談談你的看法?

 

 

 

來源:《吳軍-計算機領域大人物:馮・諾依曼》

Gimmy
作者: Gimmy
積極的人在每一次憂患中都看到一個機會 而消極的人則在每個機會都看到某種憂患

發表迴響