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

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

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