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

SSEC的控制臺
1950年,他成為IBM的程序員。他的工作除了編程(使用打孔帶)之外,就是維護那臺1948年建成、由一萬多個真空管和兩萬多個繼電器組成、還為1969年阿波羅登月計劃立下汗馬功勞的SSEC。三年中,除了一個復(fù)雜的計算月亮位置的程序外,他還開發(fā)了一個名為Speedcoding的程序,第一次實現(xiàn)了用諾伊曼提出的比例因子存儲和計算浮點數(shù)。
【相關(guān)鏈接】Ada之父逝世
FORTRAN的誕生
二 進制層次編程的艱辛和困難,使Backus意識到高級語言的必要性。1953年,他向IBM高層提交了一份備忘錄,提出為新型的704計算機開發(fā)一種高級 編程語言,降低開發(fā)成本。他論證說,當(dāng)時程序員的薪水已經(jīng)趕上硬件成本。負責(zé)應(yīng)用科學(xué)部的Cuthbert Hurd很快就批準了這一計劃。Backus后來稱贊:“他真的很懂行。”這其中還有一個小插曲, 當(dāng)時馮諾伊曼正在擔(dān)任IBM公司顧問,每周一次“升堂”審查公司的各種新科研計劃。他當(dāng)時看到了FORTRAN的想法,絲毫沒有興奮之感,反而這樣問 Backus:“為什么除了機器語言之外,你還想弄點別的呢?” 當(dāng)時也在場的Frank Beckman回憶到,馮諾伊曼將這一計劃斥為“圖靈short code概念的一種應(yīng)用”。有趣的是,馮諾伊曼此后還一直堅持這種觀點,他在普林斯頓的學(xué)生Donald Gillies回憶說,為了不像大家那樣手工將程序匯編為二進制代碼,他曾經(jīng)開發(fā)了一個匯編程序,馮諾伊曼發(fā)現(xiàn)后非常生氣,說:“這是在浪費寶貴的科學(xué)計 算設(shè)備來干瑣碎的雜事!”
最初的FORTRAN語言的用戶手冊
1954 年,Backus很快招募到了Irving Ziller和Harlan Herrick,開始了項目的開發(fā)。項目小組最后有10個人,都是二三十歲的年輕人,背景出處各不相同,Backus注重的只有一點:解決問題的能力。 Backus的管理非常靈活,沒有太正式的工作時間,雖然可能會很長,冬天工作后大家都出去打雪仗,對于公司一套嚴格的考評制度,Backus認為不適合 程序員,將其束之高閣。
設(shè)計一種語言并不難,描述FORTRAN語言草案的論文Preliminary Report, Specifications for the IBM Mathematical FORmula TRANslating System, FORTRAN于當(dāng)年年中發(fā)表。難的是編譯器的設(shè)計,Backus本來希望在六個月內(nèi)完成,最后卻花了兩年多。1956年,語言手冊完成,1957年4月,有25000行代碼存儲在磁帶上的第一個FORTRAN編譯器發(fā)布。一個新的時代開始了。
其他貢獻
受FORTRAN影響,ACM和德國應(yīng)用數(shù)學(xué)與力學(xué)學(xué)會(GaMM)共同提議開發(fā)一種標準化的高級語言。1958年5月于蘇黎世舉行的國際性會議群賢畢集,有Backus、Bauer、Perlis等等大師。這個國際協(xié)作的結(jié)果,就是ALGOL語言。開發(fā)FORTRAN之后,Backus開始思考計算機程序設(shè)計的其他基礎(chǔ)方面,1959年他提出了BNF。后經(jīng)2005年圖靈獎得主Peter Naur改進,又經(jīng)1984年圖靈獎得主N. Wirth擴充為EBNF(Extended BNF)。
此后,Backus在反思FORTRAN設(shè)計得失的基礎(chǔ)上,全力從事函數(shù)級程序設(shè)計語言的研究和開發(fā),成果包括FP語言和FL語言。
此外,他還提出了非馮諾伊曼結(jié)構(gòu)的規(guī)約機。
思考
Backus的一生值得我們思考的地方很多,這里先舉出一些:- 他不斷進取的精神。在功成名就之后,他仍然耗盡心力,開發(fā)未必能夠成功的函數(shù)級語言。
- 對后來者的引導(dǎo)極為重要,無論你身處什么位置,請用自己的心去引導(dǎo)那些年青人。看看Backus一生中的兩個關(guān)鍵人物:無線電技校老師和IBM的講解員。
- 教育制度,如何能夠給人以更多的機會?Backus顯然是個天才,但是為什么那么長時間沒有找到方向?為什么他又能在20多歲進入正軌?
- 權(quán)威審查不可全信。各人都有自己的局限。馮諾伊曼這樣的大師也不能免。他之所以會對高級語言如此敵視,與他主要從事理論,缺乏程序設(shè)計實踐的背景密不可分。
“創(chuàng)新,” Backus先生說,“就是不斷地嘗試和出錯的過程。”
“你需要勇于失敗,” 他說,“你不得不想出許多想法,然后努力工作,只是為了證明這些想法不可行。如此不斷反復(fù),最后你就會發(fā)現(xiàn)那個可行的想法了。”
【參考文獻】
Backus小傳 [1], [2]。兩處有些細節(jié)有沖突。
諾伊曼傳記
照片
中文傳記,應(yīng)該是吳鶴林老師的作品
FORTRAN介紹
FORTRAN歷史




