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