歷史上第一位女性圖靈獎得主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、Java等高階語言的看法時,Allen坦誠,自己在C語言出現後,就很少再有機會接觸程式設計了。
這對於她而言是不小的打擊。
在60年代,有很多諸如Fortran、COBOL、APL……等高階語言,這些語言所能完成的功能令人驚歎。
但C語言誕生後,摧毀了推進自動優化、自動並行化以及高階語言和機器語言自動對映技術的進程。
此後,編譯器基本上不再在大學和學院中教授。
即使還有相關會議在繼續召開、或是研究相關演算法,但這些工作所能彌補的都微乎其微。
在她看來,C、Java、C#、Python等語言對問題的求解方法「過度地指手畫腳」,是破壞電腦科學作爲學術研究的元兇。
這些語言的出現,使得許多更大膽的概念被侷限於已有的思想中,但想要改變並非一日之談。
但是,即使這些語言帶來的程式碼已經有數百萬行甚至更多,Allen認爲,對於電腦科學的研究仍然需要嘗試,來繼續打破邊界。
參考來源:
《程式設計人生(Coders at Work)》
— 完 —
本文系網易新聞•網易號特色內容激勵計劃簽約賬號【量子位】原創內容,未經賬號授權,禁止隨意轉載。
每天5分鐘,抓住行業發展機遇
如何關注、學習、用好人工智慧?
每個工作日,量子位AI內參精選全球科技和研究最新動態,彙總新技術、新產品和新應用,梳理當日最熱行業趨勢和政策,搜尋有價值的論文、教學、研究等。
同時,AI內參羣爲大家提供了交流和分享的平臺,更好地滿足大家獲取AI資訊、學習AI技術的需求。掃碼即可訂閱:
加入AI社羣,與優秀的人交流
量子位 QbitAI · 頭條號簽約作者
վ'ᴗ' ի 追蹤AI技術和產品新動態
喜歡就點「在看」吧 !