Kathleen Hylda Valerie Booth教授是英國早期的計算機先驅(qū)之一。
想象一下,必須通過重新布線來對計算機進行編程。是不是很不可思議?
在1940年代中期,第一臺通用電子計算機就是以這種方式工作的。
像ENIAC這樣的計算機,最初并沒有用于代碼的內(nèi)部存儲。如果我們想要用它編程,就要操縱數(shù)千個開關(guān)和電纜,而這些開關(guān)和電纜所在的位置,就是程序。
所有帶旋轉(zhuǎn)開關(guān)的單元都是需要大量編程的地方。
此時的編程,必須手動更改數(shù)千根電纜和開關(guān),或者在卡片上打孔,然后將卡片送入計算機,這可能需要數(shù)天時間,而且極易出錯。
在Kathleen Booth開始研究計算機的那個年代,有那么一小群人,開始產(chǎn)生了將程序存儲在計算機內(nèi)部的想法。而她也是最早研究「軟件」這一新概念的人之一,她從中看到了需求,發(fā)明了匯編語言,使計算機編程更加人性化。
Andrew Booth在與X射線晶體學家JD Bernal教授(伯納爾球的發(fā)明者)合作期間,使用X射線衍射數(shù)據(jù)來研究晶體結(jié)構(gòu)。他發(fā)現(xiàn)手動計算非常繁瑣,于是造了一臺模擬計算機,來自動化部分步驟。
1946年,他在伯貝克擔任納菲爾德研究員。但由于學院沒有空間,而且由于BRPRA為其提供資金,所以他的工作是在BRPRA的設施上完成的。
就在那時,他遇到了Kathleen。同年,Kathleen和Andrew在伯貝克學院合作發(fā)明了一臺早期的數(shù)字計算機——自動中繼計算機(ARC)。ARC使用紙帶進行輸入,實際上是一臺用作傅立葉合成器的專用計算機。
在此期間,他們一同創(chuàng)建了如今的伯貝克計算機科學與信息系統(tǒng)系。
1945年,約翰·馮·諾依曼(John von Neumann)撰寫了一份名為「EDVAC報告初稿」的文件,在這份文件中,他描述了后來被稱為計算機的馮·諾依曼架構(gòu)。
在這個架構(gòu)中,他定義了計算機的各個部分,特別是存儲在計算機內(nèi)存中的程序。出于這個原因,它也被稱為存儲程序計算機。
在經(jīng)典的馮·諾依曼計算機架構(gòu)中,地址空間大部分用于指向內(nèi)存,其余部分用于指向外部設備:內(nèi)存并不關(guān)心里面存儲的是什么。
1947年,Andrew和Kathleen在普林斯頓大學與馮諾依曼和IAS機器合作時,編寫了一個程序,用于在電子計算機上實現(xiàn)翻譯詞典,前提是提供必要的存儲容量。這是史上最早的機器翻譯奠基工作。
在這一年,Bernal幫助Kathleen和Andrew從洛克菲勒基金會申請到了訪問普林斯頓高等研究院的資金。在此期間,Andrew和Kathleen與馮諾依曼一起共事了6個月。
根據(jù)Andrew的說法,在訪問期間,只有Bernal的朋友約翰·馮·諾伊曼在任何時間都會接待他們。
一個簡化的內(nèi)存管理系統(tǒng)——CPU中的程序計數(shù)器不再直接指向內(nèi)存,而是產(chǎn)生一個進入MMU的虛擬地址,重定位常量添加到虛擬地址,以在內(nèi)存中創(chuàng)建物理地址。
就是這次訪問,讓他們第一次聽說了馮諾依曼架構(gòu)。受到啟發(fā),他們重新設計了ARC,僅用了2個月就設計了機器的繼電器部分,并且提出了關(guān)于ARC2的構(gòu)想。
還是在1947年,Kathleen和他還寫了兩份關(guān)于它的報告《通用電子數(shù)字計算機設計中的一般考慮因素》和《ARC編碼》。其中第一份報告廣為流傳。在其中,他們詳細介紹了馮諾依曼架構(gòu)機器,并介紹了內(nèi)存的不同選項。
此外,這份報告還描述了她發(fā)明「匯編語言」的前身,她在報告中將其命名為Contracted Notation。這是對計算機編程進行抽象思考的第一步,無需編寫顯式的1和0或機器代碼指令。
在這份報告中,Kathleen的編程能力大放異彩。并且,她設想了同步與異步操作的可能性,這可是在1947年!在此之后,我們唯一能夠找到的異步描述來自1980年代中期。
同步與異步操作將允許程序中的多條指令并行執(zhí)行。因此,在執(zhí)行下一條指令之前,程序不會被阻止等待當前指令的結(jié)果。這將有效地改善程序執(zhí)行時間,即處理所有指令所需的時間。
摘自《通用電子數(shù)字計算機設計中的一般考慮因素》
第二份報告「Coding For ARC」,于1947年9月出版。在這份報告里,Kathleen首次詳細介紹了ARC2「匯編語言」。
在該報告中,Kathleen還解釋了orders(現(xiàn)在稱為指令instructions)是如何由加載到某種存儲中的0和1表示的。
通過匯編語言,我們不必再記住機器代碼10010110作為指令,只需記住并輸入?yún)R編語言助記符MOV作為指令。
不過,目前已無法找到這份報告的數(shù)字副本。
在1948年,Andrew和Kathleen將研究方向轉(zhuǎn)向簡單電子計算機(SEC),然后是通用電子X射線計算機或APE(X)C?,F(xiàn)在,我們可以在MESS模擬器中試用APE(X)C。
Hollerith電子計算機(HEC)是世界上現(xiàn)存最早的電子計算機之一。
他們最著名的機器APEC(通用電子計算機)是在1949年設計出來的。
1951年,BTM使用其硬件電路作為HEC1計算機設計的基礎(chǔ),這種計算機在1950年代末直接成為最暢銷的英國計算機,安裝了近100臺。
Andrew發(fā)明了一種并行乘法器算法,該算法仍然構(gòu)成現(xiàn)代計算機芯片(布斯乘法器)中乘法電路的基礎(chǔ)。
他們還一起發(fā)明了旋轉(zhuǎn)存儲設備。在1940年代后期,他們試圖制造可工作的光盤,但失敗了,不過,他們成功地建造了世界上第一個磁鼓存儲器,該存儲在1950年代被廣泛用于主存儲器和后備存儲。
在磁鼓存儲器中,信息存儲在滾筒上的可磁化條上,數(shù)字信息存儲為二進制磁性圖案
1950年,Kathleen和Andrew結(jié)婚,就在同年,Kathleen從倫敦大學獲得了應用數(shù)學博士學位。
為了爭取更多資金,兩夫婦再次前往洛克菲勒基金會?;饡岢龅臈l件:必須讓APE(C)X既可以用人類語言,也可以用數(shù)學語言。這也就是我們所熟知的自然語言處理。
他們做到了,在1955年11月,他們展示了機器翻譯的過程。
他們的目標是實現(xiàn)準確的技術(shù)翻譯,而不是追求文學質(zhì)量。
他們在伯貝克學院時,與學生一起做了很多NLP的工作,同時在1965年至1972年間,他們?yōu)榧幽么髧已芯课瘑T會從事英法翻譯工作。
Kathleen在1958年出版的《自動數(shù)字計算器編程》,可能是第一本由女性撰寫的關(guān)于編程的書。
在這本書中,她介紹了和同事在1965年之前一直在研究的一些算法,比如單詞替換、詞干和詞尾處理。
她的另一個開創(chuàng)性工作是通過編程模擬神經(jīng)網(wǎng)絡,來識別動物。這距離史上第一次在計算機上運行神經(jīng)網(wǎng)絡,僅僅過了四年。
Booth一家于1962年離開伯貝克學院,移居加拿大,先后在薩斯喀徹溫大學、湖首大學工作。
她于 1978年從湖首大學退休,但可以看到,在1993年、她已經(jīng)71歲高齡時,還發(fā)表了和兒子Ian JM Booth博士共同撰寫的論文《使用神經(jīng)網(wǎng)絡識別海洋哺乳動物》。
Kathleen Booth于2022年9月29日去世。伯貝克學院發(fā)文悼念。
不過,相比于這位來自英國的女性,更加廣為人知的是另一位男性——David Wheeler。
為此,美國IEEE計算機協(xié)會還在1985年為他頒發(fā)了計算機先鋒獎。
當時,作為與Maurice Wilkes一起研究劍橋大學Edsac(電子延遲存儲自動計算機)的團隊成員,David Wheeler負責為計算機提供指令的系統(tǒng)。
Wheeler開發(fā)的「初始指令」(initial orders)讓Edsac的指令可以用一種簡單的語言編寫,而不再是「人肉輸入」二進制數(shù)字。
此外,他還開發(fā)了「Wheeler Jump」,允許程序?qū)⒖刂茩?quán)傳遞給子程序,也就是用Basic寫過程序的人都知道的「goto」語句的前身。
David John Wheeler于1927年出生在伯明翰。1945年,他獲得了劍橋大學三一學院的獎學金,在那里他學習數(shù)學,并于1948年畢業(yè)。
在此期間,Maurice Wilkes在重新開放的數(shù)學實驗室工作,從事一個名為Edsac的存儲程序電子計算機的建造項目。
Edsac的第一個程序于1949年3月在Edsac上運行,其中就包括了Wheeler開發(fā)的「初始命令」,一個可以將簡單的命令翻譯成計算機所需的二進制指令的程序。這使得Edsac可以由非專業(yè)人員進行編程,并標志著編程語言的發(fā)展邁出了第一步。
為Edsac編寫程序的經(jīng)驗使Wheeler和他的同事Maurice Wilkes和Stanley Gill在1951年出版了第一本針對程序員的書「The Preparation of Programs for an Electronic Digital Computer」,同年,Wheeler獲得了實驗室授予的第一個博士學位。
1955年,應用數(shù)學的研究學生Joyce Blackler開始在工作中使用Edsac,并認識了David Wheeler。他們于1957年8月結(jié)婚。
1965年他成為達爾文學院的研究員,1966年在加利福尼亞大學伯克利分校工作,研究如何將在線終端與大型計算機連接起來。1968年,他在貝爾實驗室工作了一段時間。1977年,他成為計算機科學教授。
他在1970年被選為英國計算機學會的會員,1981年成為最早被選為皇家學會會員的計算機科學家之一。
1984:美國女性離開代碼的那一年
但凡是對編程歷史有所了解的人,必然聽說過Ada Lovelace和Grace Hopper。她們和其他從業(yè)的女性一起,對現(xiàn)代編程產(chǎn)生了巨大影響。
但現(xiàn)在,你能叫出名字的「大人物」,無疑是像史蒂夫·喬布斯、比爾·蓋茨和馬克·扎克伯格這樣的男性。
那么,曾經(jīng)的女性都去了哪里?
時間回到第二次世界大戰(zhàn)期間,當時第一批「程序員」有很多都是女性,如計算公司(CompInc.)的創(chuàng)始人Elsie Shutt和創(chuàng)造了第一個編譯器的Grace Hopper。
戰(zhàn)爭勝利之后,雖然有越來越多的男性加入,但女性不僅仍然從事著科學和技術(shù)領(lǐng)域工作,而且攻讀計算機科學學位的人數(shù)也在不斷增長。
直到,1984年……
在20世紀80年代中期,計算機開始成為美國人的家庭用品。
當時,計算機在市場上的定位主要是面向商業(yè)和游戲的,而這兩類產(chǎn)品的受眾基本上都是男性。
此外,電影院里的電影和電視上的廣告為程序員確立了一個獨特的身份:書呆子,年輕男性。
看看這個玩具反斗城的Commodore 64的廣告就知道了。
不難想象,初高中的男孩們顯然會比同齡的女孩,更容易接觸到電腦。
而這一差距,在他們升入大學時便會顯現(xiàn)出來。
上世紀70年代,計算機科學的教授普遍認為新生是不具備任何計算機相關(guān)的經(jīng)驗。但隨著個人電腦在80年代變得越來越普及,教授們也越來越覺得他們的學生是玩著電腦長大的。
對于家里沒有電腦的Patricia Ordó?ez來說,這無疑是一道難以逾越的鴻溝。
還在上中學的時候,Ordó?ez數(shù)學成績極佳。因此,當他進入約翰霍普金斯大學時,最初的志愿是攻讀計算機科學或電氣工程專業(yè)。
然而,當Ordó?ez來到第一堂入門課時才發(fā)現(xiàn),周圍男同學對計算機的了解都比她要早得多,而自己卻不得不問一些「常識性問題」。
「有一次,教授在回答完之后,停下來看著我說:『現(xiàn)在你應該知道了吧?!弧?p> 雖然Ordó?ez在后來也通過了課程,但也獲得了人生中第一個C。最終,她選擇放棄,主修了外語。
不過,十多年后,她又回到了計算機領(lǐng)域,并最終獲得了計算機科學的博士學位?,F(xiàn)在她是波多黎各大學的計算機科學助理教授。