2022年9月,匯編語言之母Kathleen Booth,在加拿大去世,享年100歲。

匯編語言之母
Kathleen Hylda Valerie Booth教授是英國早期的計算機先驅之一。
想象一下,必須通過重新布線來對計算機進行編程。是不是很不可思議?

▲1951年對ENIAC進行編程
在1940年代中期,第一臺通用電子計算機就是以這種方式工作的。
像ENIAC這樣的計算機,最初并沒有用于代碼的內部存儲。如果我們想要用它編程,就要操縱數千個開關和電纜,而這些開關和電纜所在的位置,就是程序。

▲所有帶旋轉開關的單元都是需要大量編程的地方
此時的編程,必須手動更改數千根電纜和開關,或者在卡片上打孔,然后將卡片送入計算機,這可能需要數天時間,而且極易出錯。
在Kathleen Booth開始研究計算機的那個年代,有那么一小群人,開始產生了將程序存儲在計算機內部的想法。而她也是最早研究「軟件」這一新概念的人之一,她從中看到了需求,發明了匯編語言,使計算機編程更加人性化。
1922年7月9日,Kathleen Hylda Valerie Britten出生于英國伍斯特郡。
二戰期間,她就讀于倫敦大學皇家霍洛威學院,并于1944年獲得數學學士學位。
畢業后,她成為一名皇家飛機研究所的研究員。兩年后,她入職倫敦大學伯貝克學院(Birkbeck College),先后擔任研究助理、講師、研究員。

她還曾在英國橡膠生產商研究協會(BRPRA)工作,就是在那里,她遇到了未來的丈夫——數學家、物理學家Andrew Donald Booth。
Andrew Booth在與X射線晶體學家JD Bernal 教授(伯納爾球的發明者)合作期間,使用X射線衍射數據來研究晶體結構。他發現手動計算非常繁瑣,于是造了一臺模擬計算機,來自動化部分步驟。
1946年,他在伯貝克擔任納菲爾德研究員。但由于學院沒有空間,而且由于BRPRA為其提供資金,所以他的工作是在BRPRA的設施上完成的。
就在那時,他遇到了Kathleen。同年,Kathleen和Andrew在伯貝克學院合作發明了一臺早期的數字計算機——自動中繼計算機(ARC)。ARC使用紙帶進行輸入,實際上是一臺用作傅立葉合成器的專用計算機。

▲Kathleen、Xenia Sweeting和Andrew于1946年在ARC上工作
Andrew Booth設計了ARC,而Kathleen Britten和助理Xenia Sweeting構建了硬件。
在此期間,他們一同創建了如今的伯貝克計算機科學與信息系統系。
1945年,約翰·馮·諾依曼(John von Neumann)撰寫了一份名為「EDVAC報告初稿」的文件,在這份文件中,他描述了后來被稱為計算機的馮·諾依曼架構。

在這個架構中,他定義了計算機的各個部分,特別是存儲在計算機內存中的程序。出于這個原因,它也被稱為存儲程序計算機。

▲在經典的馮·諾依曼計算機架構中,地址空間大部分用于指向內存,其余部分用于指向外部設備:內存并不關心里面存儲的是什么
1947年,Andrew和Kathleen在普林斯頓大學與馮諾依曼和IAS機器合作時,編寫了一個程序,用于在電子計算機上實現翻譯詞典,前提是提供必要的存儲容量。這是史上最早的機器翻譯奠基工作。
在這一年,Bernal幫助Kathleen和Andrew從洛克菲勒基金會申請到了訪問普林斯頓高等研究院的資金。在此期間,Andrew和Kathleen與馮諾依曼一起共事了6個月。
根據Andrew的說法,在訪問期間,只有Bernal的朋友約翰·馮·諾伊曼在任何時間都會接待他們。

▲一個簡化的內存管理系統——CPU中的程序計數器不再直接指向內存,而是產生一個進入MMU的虛擬地址,重定位常量添加到虛擬地址,以在內存中創建物理地址
就是這次訪問,讓他們第一次聽說了馮諾依曼架構。受到啟發,他們重新設計了ARC,僅用了2個月就設計了機器的繼電器部分,并且提出了關于ARC2的構想。
還是在1947年,Kathleen和他還寫了兩份關于它的報告《通用電子數字計算機設計中的一般考慮因素》和《ARC編碼》。其中第一份報告廣為流傳。在其中,他們詳細介紹了馮諾依曼架構機器,并介紹了內存的不同選項。
此外,這份報告還描述了她發明「匯編語言」的前身,她在報告中將其命名為Contracted Notation。這是對計算機編程進行抽象思考的第一步,無需編寫顯式的1和0或機器代碼指令。

在這份報告中,Kathleen的編程能力大放異彩。并且,她設想了同步與異步操作的可能性,這可是在1947年!在此之后,我們唯一能夠找到的異步描述來自1980年代中期。
同步與異步操作將允許程序中的多條指令并行執行。因此,在執行下一條指令之前,程序不會被阻止等待當前指令的結果。這將有效地改善程序執行時間,即處理所有指令所需的時間。

▲摘自《通用電子數字計算機設計中的一般考慮因素》
第二份報告「Coding For ARC」,于1947年9月出版。在這份報告里,Kathleen首次詳細介紹了ARC2「匯編語言」。
在該報告中,Kathleen還解釋了orders(現在稱為指令instructions)是如何由加載到某種存儲中的0和1表示的。
通過匯編語言,我們不必再記住機器代碼10010110作為指令,只需記住并輸入匯編語言助記符MOV作為指令。

不過,目前已無法找到這份報告的數字副本。
在1948年,Andrew和Kathleen將研究方向轉向簡單電子計算機(SEC),然后是通用電子X射線計算機或APE(X)C。現在,我們可以在MESS模擬器中試用APE(X)C 。

▲Hollerith電子計算機(HEC)是世界上現存最早的電子計算機之一
他們最著名的機器APEC(通用電子計算機)是在1949年設計出來的。
1951年,BTM使用其硬件電路作為HEC1計算機設計的基礎,這種計算機在1950年代末直接成為最暢銷的英國計算機,安裝了近100臺。

在下面這個視頻中,可以看到關于HEC1的介紹。
Andrew發明了一種并行乘法器算法,該算法仍然構成現代計算機芯片(布斯乘法器)中乘法電路的基礎。
他們還一起發明了旋轉存儲設備。在1940年代后期,他們試圖制造可工作的光盤,但失敗了,不過,他們成功地建造了世界上第一個磁鼓存儲器,該存儲在1950年代被廣泛用于主存儲器和后備存儲。

▲在磁鼓存儲器中,信息存儲在滾筒上的可磁化條上,數字信息存儲為二進制磁性圖案
1950年,Kathleen和Andrew結婚,就在同年,Kathleen從倫敦大學獲得了應用數學博士學位。
為了爭取更多資金,兩夫婦再次前往洛克菲勒基金會。基金會提出的條件:必須讓APE(C)X既可以用人類語言,也可以用數學語言。這也就是我們所熟知的自然語言處理。
他們做到了,在1955年11月,他們展示了機器翻譯的過程。

他們的目標是實現準確的技術翻譯,而不是追求文學質量。
他們在伯貝克學院時,與學生一起做了很多NLP的工作,同時在1965年至1972年間,他們為加拿大國家研究委員會從事英法翻譯工作。
Kathleen在1958年出版的《自動數字計算器編程》,可能是第一本由女性撰寫的關于編程的書。

在這本書中,她介紹了和同事在1965年之前一直在研究的一些算法,比如單詞替換、詞干和詞尾處理。
她的另一個開創性工作是通過編程模擬神經網絡,來識別動物。這距離史上第一次在計算機上運行神經網絡,僅僅過了四年。
Booth一家于1962年離開伯貝克學院,移居加拿大,先后在薩斯喀徹溫大學、湖首大學工作。

她于 1978 年從湖首大學退休,但可以看到,在1993年、她已經71歲高齡時,還發表了和兒子Ian JM Booth博士共同撰寫的論文《使用神經網絡識別海洋哺乳動物》。

Kathleen Booth于2022年9月29日去世。伯貝克學院發文悼念。

David Wheeler:1985年計算機先鋒獎得主
不過,相比于這位來自英國的女性,更加廣為人知的是另一位男性——David Wheeler。
為此,美國IEEE計算機協會還在1985年為他頒發了計算機先鋒獎。

當時,作為與Maurice Wilkes一起研究劍橋大學Edsac(電子延遲存儲自動計算機)的團隊成員,David Wheeler負責為計算機提供指令的系統。
Wheeler開發的「初始指令」(initial orders)讓Edsac的指令可以用一種簡單的語言編寫,而不再是「人肉輸入」二進制數字。
此外,他還開發了「Wheeler Jump」,允許程序將控制權傳遞給子程序,也就是用Basic寫過程序的人都知道的「goto」語句的前身。

David John Wheeler于1927年出生在伯明翰。1945年,他獲得了劍橋大學三一學院的獎學金,在那里他學習數學,并于1948年畢業。
在此期間,Maurice Wilkes在重新開放的數學實驗室工作,從事一個名為Edsac的存儲程序電子計算機的建造項目。

Edsac的第一個程序于1949年3月在Edsac上運行,其中就包括了Wheeler開發的「初始命令」,一個可以將簡單的命令翻譯成計算機所需的二進制指令的程序。這使得Edsac可以由非專業人員進行編程,并標志著編程語言的發展邁出了第一步。
為Edsac編寫程序的經驗使Wheeler和他的同事Maurice Wilkes和Stanley Gill在1951年出版了第一本針對程序員的書「The Preparation of Programs for an Electronic Digital Computer」,同年,Wheeler獲得了實驗室授予的第一個博士學位。

1955年,應用數學的研究學生Joyce Blackler開始在工作中使用Edsac,并認識了David Wheeler。他們于1957年8月結婚。
1965年他成為達爾文學院的研究員,1966年在加利福尼亞大學伯克利分校工作,研究如何將在線終端與大型計算機連接起來。1968年,他在貝爾實驗室工作了一段時間。1977年,他成為計算機科學教授。
他在1970年被選為英國計算機學會的會員,1981年成為最早被選為皇家學會會員的計算機科學家之一。
1984:美國女性離開代碼的那一年
但凡是對編程歷史有所了解的人,必然聽說過Ada Lovelace和Grace Hopper。她們和其他從業的女性一起,對現代編程產生了巨大影響。
但現在,你能叫出名字的「大人物」,無疑是像史蒂夫·喬布斯、比爾·蓋茨和馬克·扎克伯格這樣的男性。
那么,曾經的女性都去了哪里?
時間回到第二次世界大戰期間,當時第一批「程序員」有很多都是女性,如計算公司(CompInc.)的創始人Elsie Shutt和創造了第一個編譯器的Grace Hopper。
戰爭勝利之后,雖然有越來越多的男性加入,但女性不僅仍然從事著科學和技術領域工作,而且攻讀計算機科學學位的人數也在不斷增長。
直到,1984年……

在20世紀80年代中期,計算機開始成為美國人的家庭用品。
當時,計算機在市場上的定位主要是面向商業和游戲的,而這兩類產品的受眾基本上都是男性。

此外,電影院里的電影和電視上的廣告為程序員確立了一個獨特的身份:書呆子,年輕男性。
看看這個玩具反斗城的Commodore 64的廣告就知道了。


END
編輯:Aeneas 好困