你不知道的女人故事!葛瑞絲.霍普發明編譯器,讓繁複的電腦語言在世界傳遞,帶來經濟與知識的新革命。

一、零、零、零、一、零、一、一、零、一、一⋯⋯那是電腦的語言。

你的電腦所做的每件聰明事,包括打電話、搜尋資料庫、玩遊戲⋯⋯,歸結到底,不外乎零與一。嗯,這麼說其實不太真確,應該說,歸結到底是半導體晶片上微小的電晶體裡是否存在著電流。零或一只不過代表斷電或通電。

幸好我們不必用零和一來設計電腦程式。想像一下那會有多麼困難。舉例來說,微軟 Windows 作業系統佔用硬碟二十個十億位元組的空間,等於一千七百億個零與一。將它們列印在 A4 大的紙上,堆疊起來會有四千公尺高。現在你必須透過這些紙張來工作,以手動的方式設定每個電晶體。姑且不論這會有多麼繁瑣,因為電晶體的大小只有十億分之一公尺。如果撥動每個開關需要一秒鐘,那麼安裝 Windows,將花費五千年的時間。

早期電腦真的必須使用相當類似的方法寫程式。就拿後來稱作「哈佛一型」(Harvard Mark 1)的自動循序控制計算機來說,它長十五公尺,高二點五公尺,布滿輪子、轉軸、齒輪和開關,內含五百三十英里長的電線。從成捲的打孔紙帶接收到指令後便颼颼運轉,像一臺自動演奏的鋼琴。如果你想讓它解決一個新的方程式,你得先想清楚哪些開關應該開或關,哪些電線應該接到哪裡。然後,你必須打開所有這些開關,插上所有電線,並且在紙帶上打出所有的孔。替它寫程式是讓數學天才絞盡腦汁的挑戰,也是一件乏味、重覆、容易出錯的手工勞作。

推薦閱讀:沒有研究經費、結婚立刻解僱:女科學家改變世界之路

哈佛一型問世四十年後, 比較小巧而且對使用者相對友善的機器, 例如 Commodore 64,進入了校園。如果你和我年紀相仿,你可能還記得小時候打出下列字行的興奮:

10 print‘ hello world’;
20 goto 10

接著你瞧,粗短、低解析度的“hello world”兩字便填滿了螢幕。你使用直覺、可辨識的人類語言給電腦下達命令,而電腦也能瞭解,這似乎是件小小的奇蹟。如果你問為何自從哈佛一型之後,電腦會有如此大的進展,其中一個原因肯定是越來越小巧的零組件。但倘若程式設計師無法用近似人類的語言,撰寫像Windows 這樣的軟體,將它轉譯成最終執行工作的一與零,我們也無法想像電腦現在所能辦到的事。

讓這件事開始成真的東西,稱作「編譯器」。而編譯器的故事,得從一名叫葛瑞絲.霍普的女子說起。

時下有許多人討論如何讓更多女性進入科技產業。葛瑞絲出生於一九○六年,當時沒有太多人關心就業市場的性別平等問題。幸好葛瑞絲那身為壽險主管的父親很在意,他看不出女兒有什麼理由得比兒子少受教育。因此,葛瑞絲就讀好學校,證明她具備數學頭腦。由於她的父親是退役海軍少將,她從小就夢想加入海軍,當時女人不准當兵,所以她只好勉強接受成為教授。到了一九四一年,珍珠港遭襲事件將美國捲入第二次世界大戰。男性人才被國家徵調,海軍才開始接受女性人才,葛瑞絲立刻報名。

如果你納悶海軍要數學家何用,想想飛彈的瞄準就知道了。你該從什麼角度和方向發射飛彈?答案取決於許多條件:目標距離、溫度和濕度,以及速度和風向。這些計算並不複雜,但以人腦運算是耗時的,或許有更快的方式。當霍普中尉於一九四四年從海軍後備軍官學校畢業時,美國海軍對哈佛教授霍華德.艾肯(Howard Aiken)近日發明的一個笨拙玩意兒感興趣。那玩意兒正是「哈佛一型」,海軍於是派霍普協助艾肯去弄清楚它能做些什麼。

艾肯對於有女性加入團隊原本興趣缺缺,但霍普很快令他刮目相看,她被要求撰寫操作手冊,其實光是要想出該寫些什麼,就涉及了大量的錯誤嘗試。一型機經常在開始運作不久後戛然而止,而且不會發出對使用者友善的錯誤訊息。某次因為一隻蛾飛進機器裡,讓我們從此有了「除錯」(除蟲)(debugging)這個現代用語。這蟲是比喻的說法,更可能發生的是扳錯開關、紙帶打錯孔,而偵錯的工作單調乏味、曠日廢時。


圖片|來源

霍普和同僚開始在筆記本上寫滿經過測試、可重複使用的編碼。到了一九五一年,電腦已經進步到可以在自身記憶體系統中貯存這些稱作「副程式」的區塊。霍普後來替一家名為雷明頓蘭德(Remington Rand)的公司工作,她設法說服雇主讓程式設計師用熟悉的語句呼叫副程式—「像從薪俸中抽取所得稅那樣描述任務」,按霍普的話說,而非「設法用八進制編碼或各種符號撰寫過程」。

霍普後來宣稱,「先前沒有人想到要這麼做,因為他們不像我這麼懶。」這當然是開玩笑的自謙之詞,事實上,霍普以努力工作而聞名。但這個聲明道出一個核心事實:霍普稱之為「編譯器」的想法,涉及了某種權衡。編譯器讓寫程式變得快速,但完成後的程式卻跑得比較慢,這正是雷明頓蘭德對它不感興趣的原因。每位顧客對於閃亮的新計算機有自己預設的需求,雷明頓蘭德有理由認為,公司裡的專家應該盡可能有效率地寫程式。

即使不被支持,霍普並不氣餒,她用自己的空閒時間寫出最早的編譯器。這個編譯器至少幫助了公司同仁能夠更清楚地思考。其中一位印象深刻的顧客是工程師卡爾.漢默(Carl Hammer),他用編譯器處理同僚們接連幾個月辛苦應付的一個方程式—他寫了二十行程序碼,一天之內便解決問題。全美志趣相投的程式設計師開始將新的程式區塊寄給霍普,她將它們加入函式庫,以供下一次的發表。事實上,她正在獨力開創開源軟體。

推薦閱讀:西元三百年,史上第一個女數學家誕生:海佩蒂亞

霍普的編譯器最後演進成最早的程式語言 COBOL,更重要的是,它為我們現在熟知的硬體與軟體的分界鋪路。像哈佛一型這樣獨一無二的機器,軟體本身就是硬體:它的開關模式無法在另一部機器上運作,因為另一部機器擁有截然不同的配線方式。但如果某部電腦能執行編譯器,那麼它也能執行任何使用這部電腦的程式。

此後,層次越來越多的抽象概念,逐漸將具有人類性格的程式設計師與實體晶片的本質區隔開來,彼此朝著霍普認為合理的方向邁出深化的一步,也就是解放程式設計師的腦力,使之聚焦於思考概念和演算法,而非開關和電線。

霍普對於同僚一開始為何抗拒編譯器自有看法,那並非因為他們在乎讓程式執行得更快。不,是因為他們樂於享受身為唯一人選的威望,只有他們能代表那些只能購買電腦的凡人,跟天神般的電腦進行溝通;霍普稱他們為「大祭司」。霍普認為每個人都應該要能寫程式,如今人人皆會,電腦也因此更加有了用處。

參考資料

編譯器
•Kurt W. Beyer, Grace Hopper and the Invention of the Information Age (Cambridge, MA: MIT Press, 2009).
•Lynn Gilbert and Gaylen Moore, Particular Passions: Grace Murray Hopper, Women of Wisdom, (New York:
Lynn Gilbert Inc., 2012).


《轉角遇見經濟學》