聊聊編程語言三巨頭的隕落
對于一個小學(xué)生來說,就可以輕松地計算這樣的算式 3+10*5
但是對一個程序員來說,如果你想從頭兒寫個程序,解析并執(zhí)行這個算式,你會發(fā)現(xiàn)就很難了。
但是,算術(shù)表達式可以更復(fù)雜,需要一個通用的程序處理方法,能將任何算術(shù)表達式轉(zhuǎn)換成正確的次序來執(zhí)行。
這個問題,也困住了60年前的 John Backus及其團隊,他們后來發(fā)現(xiàn)了一種叫做Stack Evaluation的方法,解決了算式表達式的問題。
所以,John Backus 團隊開發(fā)的程序也叫做公式翻譯(Formula Translation),簡稱Fortran。
當然,F(xiàn)ortran不僅僅只能做公式翻譯,它還引入了很多現(xiàn)代編程語言的特征,例如DO循環(huán)、IF語句,數(shù)組,子程序等。
盡管還很初級,但Fortran成功地滿足了科學(xué)計算的需求,成為編程歷史上的第一位巨頭。
Fortran提供了定點數(shù)和浮點數(shù),適合數(shù)值運算,但是不擅長處理文本,明顯不適合商業(yè)用途。
此時,美國國防部想創(chuàng)建一個用作數(shù)據(jù)處理的、可以在各種計算機上運行的編程語言,于是便聯(lián)系了格蕾絲·霍珀。
隨后,美國國防部召集了一群人,組成了一個數(shù)據(jù)系統(tǒng)委員會,商量創(chuàng)建新語言。
數(shù)據(jù)系統(tǒng)委員會內(nèi)部爭吵不斷,來自RCA公司的代表對主席尤其不滿,他甚至做了一塊墓碑,上面刻上了新語言的名字,郵寄到了五角大樓。
這門語言就是COBOL(COmmon Business Oriented Language,面向通用商業(yè)語言)。
格蕾絲·霍珀(圖中右下角穿軍裝的那位女士)對COBOL的誕生做出了杰出的貢獻,也被譽為“COBOL 之母”。
COBOL放棄了算術(shù)符號,轉(zhuǎn)而使用英語。
COBOL為商業(yè)數(shù)據(jù)處理做了特殊設(shè)計,特別適合操作大批量的數(shù)據(jù),以及具有循環(huán)處理周期的數(shù)據(jù)(如打印工資支票等)。
所以,COBOL在銀行、金融、保險、會計等行業(yè)占據(jù)重要地位。時至今日還有 43% 的銀行用著 COBOL 系統(tǒng),90% 的 ATM 交易靠 COBOL 代碼運行。
不過,這門語言已經(jīng)太過古老,沒有多少人會了。
科學(xué)計算和商業(yè)處理都有了自己的語言,計算機的科學(xué)家們坐不住了。
1958年,美國和歐洲的計算機科學(xué)家們在瑞士舉辦了一次會議,決定創(chuàng)立一門新的語言。
這門新語言就是ALGOL,ALGOL設(shè)計得非常優(yōu)雅,首次提出了塊結(jié)構(gòu)(begin ... end),詞法作用域,嵌套函數(shù)等概念,以及IF..THEN..ELSE ,WHILE等語法,為結(jié)構(gòu)化編程奠定了基礎(chǔ)。
在ALGOL的報告中,第一次引入描述語言語法的BNF形式,成為很多編譯器的基礎(chǔ)。
但是,由于ALGOL一開始的設(shè)計目標就是描述算法,連一個標準的I/O都沒有定義,導(dǎo)致其在商業(yè)應(yīng)用上受阻。
雖然在商業(yè)應(yīng)用上沒有成功,但ALGOL開創(chuàng)的思想,影響了我們現(xiàn)在所熟知的編程語言,成為很多編程語言的根。
Fortran,ALGOL, COBOL就是計算機早期的編程語言三巨頭。
它們?nèi)齻€掀起了編程語言的第一波浪潮。
幾十年過去了,三巨頭早已隕落,只能在遺留系統(tǒng)中再找到它們了。
不過,作為編程語言早期的拓荒者,他們值得所有編程語言的尊敬。
在下一波浪潮中,個人電腦將會崛起,由個人——而不是委員會——創(chuàng)建的編程語言將會大行其道,我們下期再見。
?注:本文內(nèi)容主要改編自這篇文章:https://www.i-programmer.info/history/computer-languages/472-part-2-the-1960s.html