每日最新頭條.有趣資訊

首位女性圖靈獎獲得者離世,曾開發上古語言COBOL編譯器

蕭簫 發自 凹非寺

量子位 報導 | 公眾號 QbitAI

歷史上第一位女性圖靈獎得主Frances Allen,在她88歲生日這天去世了。

Jeff Dean專門發推表示悼念。

作為編譯器優化領域傑出的學者,Frances Allen見證了編譯器高速發展的黃金時代。

60年代,時值計算機行業飛速發展,Allen趕上這波人才空缺,加入了IBM公司,最後一乾就是45年。

期間,她負責過Stretch-Harvest(簡稱Stretch超算)的編譯器優化,PTRAN開發,開創了針對Fortran的自動並行化技術和SSA(靜態單一賦值)的IR(中間表示法)。

時至今日,IR仍被廣泛應用在靜態編譯器和JIT中。

除此之外,她還是「上古語言」COBOL的編譯器開發者。

在計算機發展歷程中,「編譯器」是一個非常古老的領域,甚至比作業系統還要古老。

但它對推動計算機領域的發展功不可沒。

在Frances Allen生前的一次訪談中,她曾提及過自己當上程序員的契機、學習編程的方式、以及對如今的部分高級語言(如C語言)的看法。

從她的一些觀點中,也許能窺見編譯器發展的歷史。

獲圖靈獎,其實與性別無關

在2007年2月獲圖靈獎時,作為第一位女性獲獎者,Frances Allen(下簡稱Allen)坦言,其實在那個互聯網並不發達的時代,許多人隻知她的名字,但不知道她的性別。

在一次IBM關於ACS項目的會議上,許多人見到她的第一面都驚歎:「你就是Allen?」

這時候她才知道,分配房間的工作人員按名字順序編排,誤將她和另一名男性分在了一個房間。

最後,大會工作人員不得不為她找了一間女傭的房間,這件事情才算過去。

Allen生前曾回憶,其實在計算機最初發展時,各公司希望招更多的女程序員。那時候大家普遍認為,女性的「細心」使得她們能展現出優秀的編程能力。

事實上,與之相反的是,時至今日,在編程相關的工作上,依舊是男性居多。

一方面與如今計算機崗位大多要求「工科」學位有關,而另一方面,Allen自己也表示,她當上程序員,其實並不因「細心」,畢竟她自己在編程中也時常犯錯。

相比之下,她對數學的興趣非常濃厚,著迷於演算過程的嚴密與精確。

從數學老師到程序員

在Allen身上,數學與編程的共通之處得以體現。

最初加入IBM時,Allen的目的僅僅是還碩士助學貸款,然後當數學老師(當地數學老師要求碩士學歷)。

因此,相較於開發人員,Allen後來的工作更側重於對系統結構和算法的整體把握,也主導了PTRAN項目的完整開發。

她會閱讀每一塊並進項目中的源碼,了解算法實現的結構,如同演算過程一般,看著一個項目慢慢地被開發出來。

事實上,Allen坦言,如今產品開發中的一些弊端一直存在,但向來難以解決。

其中一個問題就是,當小組內的成員有更好的想法時,往往因為產品周期所限,而難以實現。

大概這也是如今程序員對產品開發有所抱怨的原因:短周期的運轉,某種程度上限制了程序員的編程自由。

與此同時,Allen也談及了自己學習編程的方式。

學習編程的方式

Allen表示,對於初學者而言,掌握一門編程語言最快的方式依舊是看源代碼。

事實上,Allen最初入門Fortran的過程也並不愉快。

但隨著對這門語言的深入理解,她被激發出了極大的興趣,而深入理解最簡單也最直接的辦法,就是閱讀傑出的程序員所編寫的源碼。

對於她來說,最好的代碼不是能簡單又直接地解決問題,就是能通過顯而易見的程序結構展現隱晦的問題。

通過研究一個同事編寫的語法分析器,她研發出了PTRAN(並行翻譯項目)的一部分功能,這部分功能在於它有很強的即時糾錯能力。

當被問及閱讀源碼是否是一件非常困難的事情時,Allen認同了這一觀點,她表示這一過程會非常困難,但是必須去做。

過程中可以運用很多技巧,例如列出提綱、或者事先了解一下代碼適用領域,但閱讀源碼是無法跳過的一件事情。

只有這樣,才能從最根本上掌握一門語言的用法,以及代碼核心的邏輯。

而這一習慣,一直到Allen進入IBM管理層後也並未改變。

她熟識一些大學教授,對於他們所寫的代碼風格有所了解,對於她而言,代碼結構清晰的教授,所教的學生會更值得她考慮。

除此之外,對於編程或者某一方向有熱情的學生,也在她的考慮範圍之內。

談及進入管理層,Allen表示,C語言的出現也是原因之一。

「C語言的出現是一次倒退」

當被問及對如今C、Java等高級語言的看法時,Allen坦誠,自己在C語言出現後,就很少再有機會接觸編程了。

這對於她而言是不小的打擊。

在60年代,有很多諸如Fortran、COBOL、APL……等高級語言,這些語言所能完成的功能令人驚歎。

但C語言誕生後,摧毀了推進自動優化、自動並行化以及高級語言和機器語言自動映射技術的進程。

此後,編譯器基本上不再在大學和學院中教授。

即使還有相關會議在繼續召開、或是研究相關算法,但這些工作所能彌補的都微乎其微。

在她看來,C、Java、C#、Python等語言對問題的求解方法「過度地指手畫腳」,是破壞計算機科學作為學術研究的元凶。

這些語言的出現,使得許多更大膽的概念被局限於已有的思想中,但想要改變並非一日之談。

但是,即使這些語言帶來的代碼已經有數百萬行甚至更多,Allen認為,對於計算機科學的研究仍然需要嘗試,來繼續打破邊界。

參考來源:《編程人生(Coders at Work)》

獲得更多的PTT最新消息
按讚加入粉絲團