重劍點評: 這篇文章很有意思!我小時候那么刻苦,現在都沒有啥成就。奶奶的!我不如這小子聰明?
《紐約時報》的訃告專欄,今天報道了計算機科學先驅之一、FORTRAN之父、1977年圖靈獎得主、BNF(巴克斯-諾爾范式)的發明者之一、美國科學院院士和工程院院士、John W. Backus(1924.12.3-2007.3.20)逝世的消息。
他的圖靈獎頒獎詞是:
For
profound, influential, and lasting contributions to the design of
practical high-level programming systems, notably through his work on
FORTRAN, and for seminal publication of formal procedures for the
specification of programming languages.
因為他對實際的高級編程系統的設計、尤其是通過FORTRAN上的工作所做出的影響深遠的貢獻,和關于編程語言精確描述的形式化過程的開創性論文。
他的頒獎典禮上發表的演說是:“Can Programming Be Liberated From the von Neumann Style?”(程序設計能脫離馮諾伊曼風格嗎?)
【相關鏈接】Frances Allen榮獲2006年圖靈獎;UML之父Grady Booch榮獲DDJ程序設計杰出大獎
混沌歲月
Backus
1924年生于美國費城,家庭富裕。他的父親曾供職于一家火藥公司,因為善于分析問題,找到了公司常常發生爆炸事故的原因(原來是德國進口的溫度計惹的
禍),從普通員工升為公司首席化學家。一戰期間軍火業火爆,他的父親因此致富。戰后他成為證券經紀人,也非常成功。
因為家庭條件優越,小
Backus無憂無慮,在人生的最初歲月,大有玩世不恭的意思,成了一個紈绔子弟。在賓夕法尼亞州著名的Hill中學,他經常考試不及格,而且常常曠課。
據他自己回憶:“那時我討厭學習,功課老不及格,只是晃來晃去地消耗時間。一心想著暑假去新罕布什爾州的夏令營,劃船,玩耍。”“學校里有趣的地方就是有
那么多規矩你可以去違反。”(The delight of that place was all the rules you could
break)
直到18歲時(1942年)才進入弗吉尼亞大學。化學家出身的父親讓他子承父業,他喜歡化學理論,但對擺弄瓶瓶罐罐做試驗可不感冒,因此到第二學期的時候,每周就只上一堂課(據說還是音樂欣賞課)了,最終被學校開除,結束了短暫的第一次大學生涯。
很
快Backus就參軍入伍,在佐治亞州Stewart軍事基地擔任防空任務。但在能力測試中,他表現出色,被美國軍方送到匹茲堡大學學習工程預科,在另一
次能力測試中,他顯示出醫學才能,于是又被送到了哈弗福德學院(Haverford
College)醫學預科學醫。期間他被診斷出腦瘤(一說骨瘤),手術植入了一塊金屬板。1945年他進入紐約一家醫學院,但是他發現學校里“不鼓勵思
考,只是死記硬背”,9個月后就退學了。
【相關鏈接】幫助尋找圖靈獎得主Jim Gray
轉折點
在又一次腦部手術之后,1946年Backus退伍了。他自己住在紐約,不知前途何在。他后來回憶說:
“我
真不知道自己這一輩子到底該干什么。我想弄一套好的高保真音響,可那時候這種東西還不存在。于是,我進入了一家無線電技師學校。在那里我遇到了一位好老師
——這可是我人生的第一次,他讓我和他一起為一個雜志計算某些電路的特性。計算很繁瑣,但是它讓我對數學發生了興趣。我發現,原來數學是有實際用途的。”
他從頭再來,進入
哥倫比亞大學學
習數學。在1950年畢業前,他偶然地參觀了IBM公司麥迪遜大街計算機中心,被宏偉的SSEC大型電子管計算機迷住了。其間他告訴講解員自己在找工作,
這位女講解員建議他去找主管談談。Backus覺得自己蓬頭垢面邋邋遢遢的,不想去,但架不住講解員一個勁兒的鼓勵。沒想到,只是被不那么正式地口頭提問
了一些數學題,他就當場通過,這樣進入了IBM。

SSEC的控制臺
1950年,他成為IBM的程序員。他的工作除了編程(使用打孔帶)之外,就是維護那臺1948年建成、由一萬多個真空管和兩萬多個繼電器組成、還為1969年阿波羅登月計劃立下汗馬功勞的
SSEC。三年中,除了一個復雜的計算月亮位置的程序外,他還開發了一個名為Speedcoding的程序,第一次實現了用諾伊曼提出的比例因子存儲和計算浮點數。
【相關鏈接】Ada之父逝世
FORTRAN的誕生
二
進制層次編程的艱辛和困難,使Backus意識到高級語言的必要性。1953年,他向IBM高層提交了一份備忘錄,提出為新型的704計算機開發一種高級
編程語言,降低開發成本。他論證說,當時程序員的薪水已經趕上硬件成本。負責應用科學部的Cuthbert
Hurd很快就批準了這一計劃。Backus后來稱贊:“他真的很懂行。”
這其中還有一個小插曲,
當時馮諾伊曼正在擔任IBM公司顧問,每周一次“升堂”審查公司的各種新科研計劃。他當時看到了FORTRAN的想法,絲毫沒有興奮之感,反而這樣問
Backus:“為什么除了機器語言之外,你還想弄點別的呢?” 當時也在場的Frank
Beckman回憶到,馮諾伊曼將這一計劃斥為“圖靈short
code概念的一種應用”。有趣的是,馮諾伊曼此后還一直堅持這種觀點,他在普林斯頓的學生Donald
Gillies回憶說,為了不像大家那樣手工將程序匯編為二進制代碼,他曾經開發了一個匯編程序,馮諾伊曼發現后非常生氣,說:“這是在浪費寶貴的科學計
算設備來干瑣碎的雜事!”

最初的FORTRAN語言的用戶手冊
1954
年,Backus很快招募到了Irving Ziller和Harlan
Herrick,開始了項目的開發。項目小組最后有10個人,都是二三十歲的年輕人,背景出處各不相同,Backus注重的只有一點:解決問題的能力。
Backus的管理非常靈活,沒有太正式的工作時間,雖然可能會很長,冬天工作后大家都出去打雪仗,對于公司一套嚴格的考評制度,Backus認為不適合
程序員,將其束之高閣。
設計一種語言并不難,描述FORTRAN語言草案的論文Preliminary Report, Specifications for the IBM Mathematical FORmula TRANslating System, FORTRAN
于當年年中發表。難的是編譯器的設計,Backus本來希望在六個月內完成,最后卻花了兩年多。1956年,語言手冊完成,1957年4月,有25000行代碼存儲在磁帶上的第一個FORTRAN編譯器發布。一個新的時代開始了。
其他貢獻
受FORTRAN影響,ACM和德國應用數學與力學學會(GaMM)共同提議開發一種標準化的高級語言。1958年5月于蘇黎世舉行的國際性會議群賢畢集,有Backus、
Bauer、
Perlis等等大師。這個國際協作的結果,就是
ALGOL語言。
開發FORTRAN之后,Backus開始思考計算機程序設計的其他基礎方面,1959年他提出了
BNF。后經2005年圖靈獎得主
Peter Naur改進,又經1984年圖靈獎得主
N. Wirth擴充為EBNF(Extended BNF)。
此后,Backus在反思FORTRAN設計得失的基礎上,全力從事
函數級程序設計語言的研究和開發,成果包括
FP語言和
FL語言。
此外,他還提出了非馮諾伊曼結構的規約機。
思考
Backus的一生值得我們思考的地方很多,這里先舉出一些:
- 他不斷進取的精神。在功成名就之后,他仍然耗盡心力,開發未必能夠成功的函數級語言。
- 對后來者的引導極為重要,無論你身處什么位置,請用自己的心去引導那些年青人。看看Backus一生中的兩個關鍵人物:無線電技校老師和IBM的講解員。
- 教育制度,如何能夠給人以更多的機會?Backus顯然是個天才,但是為什么那么長時間沒有找到方向?為什么他又能在20多歲進入正軌?
- 權威審查不可全信。各人都有自己的局限。馮諾伊曼這樣的大師也不能免。他之所以會對高級語言如此敵視,與他主要從事理論,缺乏程序設計實踐的背景密不可分。
《紐約時報 》的訃告是這樣結尾的:
“創新,” Backus先生說,“就是不斷地嘗試和出錯的過程。”
“你需要勇于失敗,” 他說,“你不得不想出許多想法,然后努力工作,只是為了證明這些想法不可行。如此不斷反復,最后你就會發現那個可行的想法了。”
【參考文獻】
Backus小傳
[1],
[2]。兩處有些細節有沖突。
諾伊曼傳記照片中文傳記,應該是吳鶴林老師的作品
FORTRAN介紹FORTRAN歷史
posted on 2007-09-17 00:25
七星重劍 閱讀(891)
評論(6) 編輯 收藏 引用 所屬分類:
亂七八糟