第六百八十章 彙編語言之母Kathleen Booth
KathleenHyldaValerieBooth教授是英國早期的計算機先驅之一。
想像一下,必須通過重新布線來對計算機進行編程。是不是很不可思議?
在1940年代中期,第一台通用電子計算機就是以這種方式工作的。
像ENIAC這樣的計算機,最初並沒有用於代碼的內部存儲。如果我們想要用它編程,就要操縱數千個開關和電纜,而這些開關和電纜所在的位置,就是程序。
所有帶旋轉開關的單元都是需要大量編程的地方。
此時的編程,必須手動更改數千根電纜和開關,或者在卡片上打孔,然後將卡片送入計算機,這可能需要數天時間,而且極易出錯。
在KathleenBooth開始研究計算機的那個年代,有那麼一小群人,開始產生了將程序存儲在計算機內部的想法。而她也是最早研究「軟件」這一新概念的人之一,她從中看到了需求,發明了彙編語言,使計算機編程更加人性化。
AndrewBooth在與X射線晶體學家JDBernal教授(伯納爾球的發明者)合作期間,使用X射線衍射數據來研究晶體結構。他發現手動計算非常繁瑣,於是造了一台模擬計算機,來自動化部分步驟。
1946年,他在伯貝克擔任納菲爾德研究員。但由於學院沒有空間,而且由於BRPRA為其提供資金,所以他的工作是在BRPRA的設施上完成的。
就在那時,他遇到了Kathleen。同年,Kathleen和Andrew在伯貝克學院合作發明了一台早期的數字計算機——自動中繼計算機(ARC)。ARC使用紙帶進行輸入,實際上是一台用作傅立葉合成器的專用計算機。
在此期間,他們一同創建了如今的伯貝克計算機科學與信息系統系。
1945年,約翰·馮·諾依曼(JohnvonNeumann)撰寫了一份名為「EDVAC報告初稿」的文件,在這份文件中,他描述了後來被稱為計算機的馮·諾依曼架構。
在這個架構中,他定義了計算機的各個部分,特別是存儲在計算機內存中的程序。出於這個原因,它也被稱為存儲程序計算機。
在經典的馮·諾依曼計算機架構中,地址空間大部分用於指向內存,其餘部分用於指向外部設備:內存並不關心裏面存儲的是什麼。
1947年,Andrew和Kathleen在普林斯頓大學與馮諾依曼和IAS機器合作時,編寫了一個程序,用於在電子計算機上實現翻譯詞典,前提是提供必要的存儲容量。這是史上最早的機器翻譯奠基工作。
在這一年,Bernal幫助Kathleen和Andrew從洛克菲勒基金會申請到了訪問普林斯頓高等研究院的資金。在此期間,Andrew和Kathleen與馮諾依曼一起共事了6個月。
根據Andrew的說法,在訪問期間,只有Bernal的朋友約翰·馮·諾伊曼在任何時間都會接待他們。
一個簡化的內存管理系統——CPU中的程序計數器不再直接指向內存,而是產生一個進入MMU的虛擬地址,重定位常量添加到虛擬地址,以在內存中創建物理地址。
就是這次訪問,讓他們第一次聽說了馮諾依曼架構。受到啟發,他們重新設計了ARC,僅用了2個月就設計了機器的繼電器部分,並且提出了關於ARC2的構想。
還是在1947年,Kathleen和他還寫了兩份關於它的報告《通用電子數字計算機設計中的一般考慮因素》和《ARC編碼》。其中第一份報告廣為流傳。在其中,他們詳細介紹了馮諾依曼架構機器,並介紹了內存的不同選項。
此外,這份報告還描述了她發明「彙編語言」的前身,她在報告中將其命名為ContractedNotation。這是對計算機編程進行抽象思考的第一步,無需編寫顯式的1和0或機器代碼指令。
在這份報告中,Kathleen的編程能力大放異彩。並且,她設想了同步與異步操作的可能性,這可是在1947年!在此之後,我們唯一能夠找到的異步描述來自1980年代中期。
同步與異步操作將允許程序中的多條指令并行執行。因此,在執行下一條指令之前,程序不會被阻止等待當前指令的結果。這將有效地改善程序執行時間,即處理所有指令所需的時間。
摘自《通用電子數字計算機設計中的一般考慮因素》
第二份報告「CodingForARC」,於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台。
Andrew發明了一種并行乘法器算法,該算法仍然構成現代計算機晶片(布斯乘法器)中乘法電路的基礎。
他們還一起發明了旋轉存儲設備。在1940年代後期,他們試圖製造可工作的光盤,但失敗了,不過,他們成功地建造了世界上第一個磁鼓存儲器,該存儲在1950年代被廣泛用於主存儲器和後備存儲。
在磁鼓存儲器中,信息存儲在滾筒上的可磁化條上,數字信息存儲為二進制磁性圖案
1950年,Kathleen和Andrew結婚,就在同年,Kathleen從倫敦大學獲得了應用數學博士學位。
為了爭取更多資金,兩夫婦再次前往洛克菲勒基金會。基金會提出的條件:必須讓APE(C)X既可以用人類語言,也可以用數學語言。這也就是我們所熟知的自然語言處理。
他們做到了,在1955年11月,他們展示了機器翻譯的過程。
他們的目標是實現準確的技術翻譯,而不是追求文學質量。
他們在伯貝克學院時,與學生一起做了很多NLP的工作,同時在1965年至1972年間,他們為加拿大國家研究委員會從事英法翻譯工作。
Kathleen在1958年出版的《自動數字計算器編程》,可能是第一本由女性撰寫的關於編程的書。
在這本書中,她介紹了和同事在1965年之前一直在研究的一些算法,比如單詞替換、詞幹和詞尾處理。
她的另一個開創性工作是通過編程模擬神經網絡,來識別動物。這距離史上第一次在計算機上運行神經網絡,僅僅過了四年。
Booth一家於1962年離開伯貝克學院,移居加拿大,先後在薩斯喀徹溫大學、湖首大學工作。
她於1978年從湖首大學退休,但可以看到,在1993年、她已經71歲高齡時,還發表了和兒子IanJMBooth博士共同撰寫的論文《使用神經網絡識別海洋哺乳動物》。
KathleenBooth於2022年9月29日去世。伯貝克學院發文悼念。
不過,相比於這位來自英國的女性,更加廣為人知的是另一位男性——DavidWheeler。
為此,美國IEEE計算機協會還在1985年為他頒發了計算機先鋒獎。
當時,作為與MauriceWilkes一起研究劍橋大學Edsac(電子延遲存儲自動計算機)的團隊成員,DavidWheeler負責為計算機提供指令的系統。
Wheeler開發的「初始指令」(initialorders)讓Edsac的指令可以用一種簡單的語言編寫,而不再是「人肉輸入」二進制數字。
此外,他還開發了「WheelerJump」,允許程序將控制權傳遞給子程序,也就是用Basic寫過程序的人都知道的「goto」語句的前身。
DavidJohnWheeler於1927年出生在伯明翰。1945年,他獲得了劍橋大學三一學院的獎學金,在那裏他學習數學,並於1948年畢業。
在此期間,MauriceWilkes在重新開放的數學實驗室工作,從事一個名為Edsac的存儲程序電子計算機的建造項目。
Edsac的第一個程序於1949年3月在Edsac上運行,其中就包括了Wheeler開發的「初始命令」,一個可以將簡單的命令翻譯成計算機所需的二進制指令的程序。這使得Edsac可以由非專業人員進行編程,並標誌着編程語言的發展邁出了第一步。
為Edsac編寫程序的經驗使Wheeler和他的同事MauriceWilkes和StanleyGill在1951年出版了第一本針對程式設計師的書「ThePreparationofProgramsforanElectronicDigitalComputer」,同年,Wheeler獲得了實驗室授予的第一個博士學位。
1955年,應用數學的研究學生JoyceBlackler開始在工作中使用Edsac,並認識了DavidWheeler。他們於1957年8月結婚。
1965年他成為達爾文學院的研究員,1966年在加利福尼亞大學伯克利分校工作,研究如何將在線終端與大型計算機連接起來。1968年,他在貝爾實驗室工作了一段時間。1977年,他成為計算機科學教授。
他在1970年被選為英國計算機學會的會員,1981年成為最早被選為皇家學會會員的計算機科學家之一。
1984:美國女性離開代碼的那一年
但凡是對編程歷史有所了解的人,必然聽說過AdaLovelace和GraceHopper。她們和其他從業的女性一起,對現代編程產生了巨大影響。
但現在,你能叫出名字的「大人物」,無疑是像史蒂夫·喬布斯、比爾·蓋茨和馬克·扎克伯格這樣的男性。
那麼,曾經的女性都去了哪裏?
時間回到第二次世界大戰期間,當時第一批「程式設計師」有很多都是女性,如計算公司(CompInc.)的創始人ElsieShutt和創造了第一個編譯器的GraceHopper。
戰爭勝利之後,雖然有越來越多的男性加入,但女性不僅仍然從事着科學和技術領域工作,而且攻讀計算機科學學位的人數也在不斷增長。
直到,1984年……
在20世紀80年代中期,計算機開始成為美國人的家庭用品。
當時,計算機在市場上的定位主要是面向商業和遊戲的,而這兩類產品的受眾基本上都是男性。
此外,電影院裏的電影和電視上的廣告為程式設計師確立了一個獨特的身份:書獃子,年輕男性。
看看這個玩具反斗城的Commodore64的廣告就知道了。
不難想像,初高中的男孩們顯然會比同齡的女孩,更容易接觸到電腦。
而這一差距,在他們升入大學時便會顯現出來。
上世紀70年代,計算機科學的教授普遍認為新生是不具備任何計算機相關的經驗。但隨着個人電腦在80年代變得越來越普及,教授們也越來越覺得他們的學生是玩着電腦長大的。
對於家裏沒有電腦的PatriciaOrdóez來說,這無疑是一道難以逾越的鴻溝。
還在上中學的時候,Ordóez數學成績極佳。因此,當他進入約翰霍普金斯大學時,最初的志願是攻讀計算機科學或電氣工程專業。
然而,當Ordóez來到第一堂入門課時才發現,周圍男同學對計算機的了解都比她要早得多,而自己卻不得不問一些「常識性問題」。
「有一次,教授在回答完之後,停下來看着我說:『現在你應該知道了吧。』」
雖然Ordóez在後來也通過了課程,但也獲得了人生中第一個C。最終,她選擇放棄,主修了外語。
不過,十多年後,她又回到了計算機領域,並最終獲得了計算機科學的博士學位。現在她是波多黎各大學的計算機科學助理教授。