近年來 Nvidia 總是以科學家做為處理器架構的名稱,來向他們致敬。例如 2016 年的帕斯卡 (Pascal)、2017 年的伏打 (Volta)、2018 年的圖靈 (Turing),以及 2020 年的安培 (Ampere)。但前幾天發表的新一代處理器取名為葛蕾斯 (Grace),讓很多人滿臉問號,不知道這是何方神聖。
葛蕾斯的全名是 Grace Murray Hopper;Hopper 是夫姓,Murray 則是結婚前原來的姓氏。她離婚後便一直維持單身,但仍繼續沿用夫姓,並未更動,一般習慣稱她為 Grace Hopper。因此這次 Nvidia 發表的 CPU 是用她的名字 Grace 命名,而 GPU 則是用她的夫姓 Hopper 命名。
葛蕾斯 1906 年出生於紐約,擁有數學博士學位。美國加入二次世界大戰後,熱血的葛蕾斯辭去大學教職,於 1943 年進入海軍預備軍官學校受訓。第二年她以第一名的成績畢業,官拜上尉,卻被派往哈佛大學,向海軍少校艾肯 (Howard Aiken) 報到。葛蕾斯頓時傻眼,自己特意投筆從戎,怎麼繞了一圈,又要重返校園?
原來艾肯博士是剛竣工的電腦「哈佛一號」(Harvard Mark I) 的設計者。他與葛蕾斯相反,是被徵召入伍,才不得不離開哈佛大學的。艾肯一心想要心血結晶回到自己手中,因此極力鼓吹這台電腦的威力,成功促成海軍徵用哈佛一號,他也如願代表海軍前往接管。艾肯看上葛蕾斯的數學背景,希望她為哈佛一號編寫程式,進行彈道之類的計算。
當時寫程式可不是像現在這樣,看著螢幕,在鍵盤上輸入類似英文語法的指令。首先,你沒辦法用鍵盤直接輸入程式,必須在紙帶上的不同位置打洞,再將這卷打孔紙帶餵給哈佛一號。(這已經不錯了,同時間美國陸軍委託賓州大學打造的電腦 ENIAC,還不能讀紙帶,必須插拔一堆電纜線呢。)
更麻煩的是,你只能寫電腦懂的「機器語言」,告訴它哪些繼電器要開或關。這當然非常麻煩又容易出錯,於是葛蕾斯努力將撰寫程式系統化,最後寫出世上第一本程式設計手冊。
二次大戰結束後,海軍委託艾肯開發後續機種,葛蕾斯也以預備軍官的身分,繼續留在哈佛大學協助。有一天,葛蕾斯的同袍發現哈佛二號總是出錯,卻又看不出程式哪裡有問題,最後才發現原來是一隻蛾停在繼電器上造成短路。後來電腦程式的除錯工作叫做 ”debug”,據信就是源自於此。許多文章(包括中文維基百科)誤把這件事歸之於葛蕾斯,也應該 debug 一下。
1949 年,葛蕾斯加入 ENIAC 的兩位發明人莫奇利 (John Mauchly) 與艾科特 (J. Presper Eckert) 所創的電腦公司。她深知用機器語言撰寫程式的痛苦與不便,決定開發一套轉換系統,自動將邏輯和數學符號轉換成機器語言。這樣一來,數學家不用瞭解電腦的硬體線路,也可以撰寫程式。葛蕾斯於 1952 年完成這個轉換系統「A-0」,可算是史上第一個「編譯器」(compiler)。
不過葛蕾斯更希望不是只有數學家才能當程式設計師。如果程式語言可以採用一般英文的語法,而不是各種數學符號,那麼不用懂太多數學也能撰寫程式。於是葛蕾斯於 1955 年推出第一個基於英文語法的程式語言「FLOW-MATIC」,讓更多人都能成為程式設計師。
雖然基於英文語法的高階語言讓寫程式變得比較簡單,但各家電腦公司都有一套自家電腦專用的語言,彼此不能互通,使得開發應用軟體的成本居高不下。於是美國國防部於 1959 年出面召開會議,廣邀業者共同制定一套商業用途為主的資料處理語言,也就是第一個通用的程式語言 COBOL。由於它主要參考了 FLOW-MATIC 的語法,加上葛蕾斯是這場會議的技術顧問,因此也有人認為葛蕾斯是「COBOL 之母」。
1966 年,葛蕾斯因年滿 60 歲,自海軍後備隊退役,但幾個月後又被徵召協助整合海軍的電腦系統,直到 79 歲才以准將的官階光榮退休,成為最高齡退役的美國部隊軍官。葛蕾斯退而不休,隨即擔任迪吉多電腦 (Digital Equipment Corporation) 的顧問,直到 1992 年過世為止。
從第一本程式設計手冊、第一個編譯器,到第一個採用英文語法的程式語言,葛蕾斯因為在電腦上的卓越貢獻,而獲獎無數。不過她曾在一次頒獎典體上表示:「若要問我最引以為傲的成就是什麼,答案是我過去曾教導過的那些年輕人。這比寫出第一個編譯器重要多了。」
其實她幫助的豈僅止於她親自教導過的人。現在那麼多年輕人可以成為程式設計師,也是間接受惠於她一生為程式設計的普及所做的努力。
- 標題圖片:葛蕾斯。圖片來源:美國海軍歷史與遺產司令部 (Naval History and Heritage Command)。