Re: [新聞] 她會個屁程式設計! 維密超模驚人簡歷

作者: jserv (松鼠)   2018-10-10 18:24:52
※ 引述《jfsu (水精靈)》之銘言:
: 另外,有此一說,工程師常掛在嘴邊的「bug」是從一位著名的女性程式設計師霍普
: (Grace Murray Hopper, 1906.12.9~1992.1.1,計算機科學家,亦是第一位官拜美國
: 海軍少將的女性。) 在無意間的小發現。
[...]
: 在她44年的職業生涯中,最為著名的是她開發的商用電腦語言「COBOL」。此外,
: 她也發明了編譯器(compilers),讓程式設計師便於撰寫、閱讀與維護程式碼。
Grace Hopper 的軍銜應為海軍「准將」(Rear Admiral Lower Half,位階介於少將和
上校之間) [1],美國海軍驅逐艦霍珀號驅逐艦以她來命名 (USS Hopper),耶魯大學
也有 Hopper 學院 [2]。
說 Grace Hopper 「開發」COBOL 程式語言不精準,說「影響」和「主導」COBOL 的
工業標準會更好,畢竟 COBOL 是緣自美國海軍和多個承包商的協作。
1951 至 1952 年間,Hopper 在 UNIVAC I 上發展了第一套編譯器 A-0 System [3],
能將高階程式轉換為機器碼,但具體功能更接近程式碼載入器或連結器,而真正我們
今天概念上的編譯器是 Corrado Bohm 教授在 1951 年博士論文描述的 meta-circular
compiler [4],自始為結構化程式設計的濫觴。當然,Bohm 教授的研究受到 A-0
System 直接的影響。
* 延伸閱讀: #1RhWSNPG
Hopper 的 A0 後續有 A-1, A-2, A-3, AT-3 (那年代電腦技術術語比較沒創意),而
演化到 B-0 (取自 Business Language version 0 的意思) 時,就以 FLOW-MATIC [5]
為人們所熟知,這也是 Hopper 對後世極大啟發的作品:當時任職於 Remington Rand
公司的 Hopper 堅信可用類似英語書寫的方式去撰寫電腦程式,而 COBOL 則可視為
貫徹 Hopper 信念的工業化程式語言。
FLOW-MATIC 範例程式碼如下:
(0) INPUT INVENTORY FILE-A PRICE FILE-B ;
OUTPUT PRICED-INV FILE-C UNPRICED-INV FILE-D ;
HSP D .
(1) COMPARE PRODUCT-NO (A) WITH PRODUCT-NO (B) ;
IF EQUAL GO TO OPERATION 4 ; OTHERWISE GO TO OPERATION 2 .
(2) TRANSFER A TO D .
(3) WRITE-ITEM D .
(4) TRANSFER A TO C .
注意到每行後方的句點 (.) 和中間的分號 (;),是不是有點像英語呢?
對應的 COBOL 程式 [6] 類似以下:
IF invalid-record
IF no-more-records
NEXT SENTENCE
ELSE
READ record-file
AT END SET no-more-records TO TRUE.
美國海軍採納了 FLOW-MATIC,但很快就發現海軍的承包商自行發展編譯器和執行
環境,致使 FLOW-MATIC 程式出現彼此不相容的狀況,為此海軍大為苦惱。Hopper
於是出手開發 Validation 程式,用來檢驗 FLOW-MATIC 程式是否用同一套編譯器
產生,從而確認程式得以運作。
1959 年,為解決編譯器之間不一致的問題,在五角大廈的推動下,軍方與民間專家
召開 Conference/Committee on Data Systems Languages (簡稱 CODASYL),並任命
Hopper 作為首席技術顧問。會議中通過新的程式語言標準 Common Business Oriented
Language,簡稱 COBOL,需要注意的是,COBOL 除了採用 FLOW-MATIC 的語法,也
借鏡了 IBM 發展的 COMTRAN (取自 COMmercial TRANslator 的意思,對比於 1950
年代針對科學運算發展的 FORTRAN [Formula Translation] 程式語言) [7] 的許多
設計想法。
COBOL 除了語法和關鍵字大量借用英文書寫,原始版本也規範若干程式碼排版的規範,
可參照 The Beauty of the COBOL Programming Language [8],可比 Python 程式語言
的空白縮排更奇特多了。
當然,Hopper 作為「COBOL 之母」當之無愧,不過「發明」(invent) 或「發展」
(develop) 一詞不能精準描述 Hopper 所為。
1966 年 Hopper 屆滿 60 歲,因為她當時的官階是海軍的中校,美國海軍認定 60 歲
就該屆齡退休了。在退休的那日,Hopper 說這是她一生中最悲傷的一日, 因為人家已經
告訴她她太老了 (1986 年 Hopper 再度退休)。可是海軍在 Hopper 退休不久後,發現沒
有她是不行的,因為海軍裡頭仍有各種資訊處理、 自動化、正規化的工作尚未完成,所以
在 Hopper 退休的五個月後,海軍就要求她復職。於是 Hopper 在 1967 年 8 月 1 日又
回到美國海軍服役,並擔任多項海軍電腦相關計畫的主持人和顧問。
1967 至 1977 年間,Hopper 供職於美國海軍資訊系統計畫辦公室旗下的美國海軍程式
語言小組,領導 COBOL 驗證軟體與編譯器的發展,後者成為美國海軍 COBOL 標準化的
一部份。
[1] Named for Rear Admiral "Amazing" Grace Hopper
https://www.public.navy.mil/surfor/ddg70/pages/namesake.aspx
Amazing Grace的典故來自於一個著名英文基督教聖詩,中譯為《奇異恩典》,
這裡是雙關語
[2] On Feb. 11 (2017), President Peter Salovey announced that he and the
Yale Corporation had voted to change the name of Calhoun College, one
of the university's undergraduate residential colleges, to honor alumna
Grace Murray Hopper.
https://news.yale.edu/2017/02/10/ \
grace-murray-hopper-1906-1992-legacy-innovation-and-service
[3] A0 System
https://en.wikipedia.org/wiki/A-0_System
[4] meta-circular compiler 和 Corrado Bohm 教授
https://en.wikipedia.org/wiki/Corrado_B%C3%B6hm
[5] FLOW-MATIC
https://en.wikipedia.org/wiki/FLOW-MATIC
[6] 若干 COBOL 範例和解說
https://en.wikipedia.org/wiki/COBOL
[7] COMTRAN
https://en.wikipedia.org/wiki/COMTRAN
[8] https://devops.com/the-beauty-of-the-cobol-programming-language-v2/

Links booklink

Contact Us: admin [ a t ] ucptt.com