你想知道生活中有甚麼數學嗎?

2013年12月8日 星期日

[Google Doodle] Grace Hopper 商用程式語言COBOL之母 107歲冥誕 日期:2013/12/09 | 作者:點子生活


[Google Doodle] Grace Hopper 商用程式語言COBOL之母 107歲冥誕

日期:2013/12/09  |  作者:點子生活  |  分類:好康新聞稿 • 好有趣 • 軟體快報  |  瀏覽:29858 人次
 
image
相信許多早期商學院或是資管資工背景的朋友,對於COBOL這程式語言應該不陌生,而今天的Google Doodle出現了一張正在操作早期大電腦的女性,他就是COBOL之母Grace Hopper,今天的GOOGLE就是為了紀年他的誕辰。

COBOL是在1959年五月,美國五角大廈委託Grace Hopper來帶領一個團隊並由Rear Admiral Grace Hopper公司主持開發,在1961年4月正式發布,稱為Cobol 60。雖然Cobol到了2002年版本後已經沒有繼續推陳出新,基本上它就是一個非常成熟的程式語言,在財會工作、統計報表、計劃編製、情報檢索、人事管理等數據管理及商業數據處理領域,都有著廣泛的應用。雖說目前慢慢的被新的程式語言所取代,但目前為止被取代的速度其實相當緩慢。
image

Grace Hopper 1906年12月9日出生於紐約市,進大學之前,就讀於Wardlaw-Hartridge。在1928年,他從Vassar College取得數學與物理雙學位畢業,期間也是美國資優學生聯誼會(Phi-Beta-Kappa【ΦBK】Society)成員。後來進入耶魯大學就讀研究所,在1934年拿到數學博士。

其實當時的女性,是很少接受高等教育,Grace Hopper 的爸爸是個很特別的人物,當時的工作是為平凡的保險業務員,但對於事情看法相當樂觀正面。因為在其間他爸爸因病失去雙腿得靠義肢行動,他常常勉勵小孩,說他使用義肢都可以出去賺錢,所以沒有什麼是困難的,這也影響了Grace Hopper 的積極態度。

而他的程式生涯是在二次大戰時被啟發的,當時他加入海軍,擔任計算砲彈軌跡…等工作。後來受訓後被分發到哈佛大學的一個後勤的計算局 (Bureau of Ordinance Computation at Harvard University),當時的主持人是Mark Ⅰ、Ⅱ、Ⅲ、Ⅳ電機計算機的設計及製造者 Howard Aiken (1900–1973),Grace沒想到第一眼看到巨大的Mark Ⅰ後就愛上了他。
image
image

很多朋友都知道,電腦除錯稱為Debug,據傳就是1945 年 9 月 9 日因為天氣炎熱,Grace Hopper的電腦室將窗戶打開,沒想到一隻飛蛾就跑進電腦裡造成短路,最後就是由Grace Hopper用髮夾把蛾弄出來。所以後來大家就把程式錯誤稱為bug、而除去錯誤稱為Debug。
image

Grace Hopper 逝世於 1992/1/1的凌晨,是在參加Party後過世的。他世界最早一批的程式設計師之一,創造了現代第一個編譯器A-0 系統,以及商用電腦程式語言「COBOL」,被譽為COBOL之母。就在他107歲的冥誕,讓我們一同懷念他。

Grace Murray Hopper

[Grace Hopper]Grace Hopper (1906--1992) 本姓 Murray,Hopper 是夫家的姓。 西元 1906 年 12 月 9 日在紐約出生。 Grace 的爸爸是個很特別的人物,在那個年代裡,很少有人家會供家裡的女生去受教育。 Grace 的爸爸不是個高級的知識份子,在當時的工作是個保險推銷員, 後來得了病,將雙腿鋸掉,以木腿當作義肢。 用義肢練習走路了一段時間後,他又開始從事拉保險的工作, 所以他對這件事情相當樂觀,他常對他的三個子女(一個兒子、兩個女兒)說: 「我用這雙木頭腿都可以出去工作,所以你們應該是任何事情都可以辦得到的, 你們應該沒有辦不到的事情。」這些話對於孩子們的影響很深, 三個小孩都讀到了大學,但是只有 Hopper 拿到了博士學位。
Hopper 回憶她小時候最喜歡上的課是數學課,特別是幾何課。 為什麼她最喜歡上幾何課呢? 因為她可以把她鉛筆盒裡所有有顏色的筆全部拿出來用。 她從小還有一個特色,雖然她是個女孩子,可是她喜歡玩各種的器具, 舉凡各種量角尺、計算尺,她都喜歡拿來玩,研究它們是用什麼原理作用的。 她還有做一些很像男生的事情,她曾經在六、七歲的時候, 把她家所有的鐘都拆開來,但是沒有一個有裝回去,因此受了很嚴厲的處罰。
Hopper 在 1928 年畢業於 Vassar 大學,取得了數學與物理的學士學位。 隨後到耶魯大學攻讀碩士,並在 1930 年得到數學碩士。 畢業後沒有繼續念博士,而是回到她的母校 Vassar 大學擔任教職。 1930 年 6 月 15 日與 Vincent Foster Hopper 結婚, Vincent 是紐約大學英文系教授,但是他在 1945 年時過世了, 他與 Grace 沒有生育子女。結婚沒多久,Grace 就決定要攻讀博士, 所以 Grace 一邊教書, 一邊在耶魯大學在職進修博士學位, 並在 1934 年取得學位,前後只花了四年的時間,這算是相當快的。 她的博士論文是寫:用一個幾何的方法去解決一個代數的問題, 英文標題是 A new Criterion for Reducibility of Algebraic Equations, 到這個階段為止,還看不出來這個人會跟計算機產生任何的關係。
1941 年,Grace 在她的人生中產生了極大的改變。 當時歐戰爆發,Grace 有了從軍的念頭,她想加入海軍。 當時女人從軍都是做後備軍人,大部分都是護士,再不然就是擔任後勤。 如果是受過高等教育的女性,就會被分配要去做有關計算的工作,例如: 計算彈道,讓前線的砲兵知道如何使用砲彈。 Grace 在受過半年的訓練後,因為有著相當高等的學位, 所以被分派到的工作也比較高級,她被分派到哈佛大學的一個後勤的計算局 (Bureau of Ordinance Computation at Harvard University), 當時的主持人是 Howard Aiken (1900--1973)。 他是 1939 年的哈佛物理博士, 也是 Mark Ⅰ、Ⅱ、Ⅲ、Ⅳ 這一系列電機計算機的設計及製造者。 Mark Ⅰ原來的名字是 ASCC (Automatic Sequence Controlled Calculator)。它是由哈佛與 IBM 合資建造的,完成於 1943 年, 有 35 噸重,內部的線路總共有 500 英哩長。 但是在 1944 年 Mark Ⅰ 啟用典禮之後,IBM 和哈佛鬧翻了, 原因哈佛人認為 IBM 只是個出錢的財主, 主要的智能貢獻是哈佛人的功勞, 而 IBM 認為自己也在工程上做了許多研究和創新, 只是哈佛認為那些工程上的創新都不值一提。 所以 IBM 就從哈佛的 Mark 計畫中抽腿, 後來的十年間,IBM 在學術界的主要合作伙伴,變成了哥倫比亞大學。
Mark 系列計算機的設計理念,與 Babbage 的設計非常類似, 但是增加了電動機械的幫助。 Mark I 的數值都是 23 位的十進制整數 (或定點數)。 做一個加法要 6 秒,一個除法要 12 秒。 Aiken 持續在電機計算機方面發展,直到 1952 年的 Mark IV。 到那時候,已經明顯可見,電機計算機的設計,必將輸給電子計算機。 由此可見,精明如哈佛,也並非一開始就押對了寶。
根據 Grace 自己的說法,當她走進哈佛的計算工廠, 第一眼看到那巨大、醜陋的 Mark I 時, 就立刻愛上它了! 其實,IBM 是很有格調的公司,他們設計了 Mark I 的外形,還不算醜陋啦。 以下是一張 Mark I 的照片。
[The Mark I]
因為 Grace 從小就喜歡各種的計算尺,所以當她見到這個電動計算機時, 她說這是她看過最有趣的計算尺。在她之前有兩個男生在 Mark 計算機上寫過程式, 這兩個男生後來幫 Hopper 在三天之內寫出了她的第一個程式。 所以算起來,Hopper 是第三個在電機計算機上寫程式的人。 以下右邊的照片就是 Mark 計畫的工作群,中坐者是 Aiken,唯一的女性, 當然就是 Grace Hopper。而背景就是 Mark I。從這些水手服, 可以看出來,這是海軍開發的計畫。 左邊的照片,就是當時 Hopper 在打了洞的紙卷上檢查程式的情形。 Mark I 的程式,就是靠這些打了洞的紙卷送進去。 這個設計其來有自。早在 Babbage 設計分析機的時候, 就考慮以卡紙傳送程式進入計算機。 而且,資助 Mark I 的 IBM 公司本身,也是從打卡和讀卡機起家的。 
[Hopper Programmer][The Mark Team]
1945 年 9 月 9 日,發生了一樁對電腦界而言非常重要的軼事。 那天因為天氣很熱,他們都把窗戶給打開了,然後飛進來一隻蛾, 結果那隻蛾被打死在一支繼電器裡面,造成電路不通,讓機器當機, 使他們沒辦法算出他們要的結果。經過了近一天的檢查,Hopper 找到了那隻蛾, 她用她的髮夾去把那隻蛾給弄出來, 還把那隻蛾的屍體貼在她的管理日誌上,上面寫著: 「就是這個 bug,害我們今天的工作無法完成。」 這個消息傳開之後,那個實驗室裡的人每逢老闆詢問為何還沒做出結果時, 都把過錯推給 bug。爾後,在電腦界中,遇到程式中有錯,就稱之為 bug。 除錯叫做 debug。 下面這張照片,就是當時的那隻蛾,以及 Hopper 寫的記錄。
[The Bug]
1945 年二次大戰結束後,所有的後備軍人應當除役, 但是 Grace Hopper 卻決定辭去 Vassar 那邊的教職, 要專心的在 Aiken 的實驗室裡做個 programer。 1949 年,Hopper 離開哈佛,到了費城, 進入 Eckert 和 Mauchley 合開的電腦公司 (Eckert-Mauchley Computer Corporation) 擔任資深數學家,主要的工作是幫忙設計軟體。 這家公司設計出來的第一套電子計算機,也是全世界第三台, 叫做 UNIVAC Ⅰ,在這上面發展一些組合語言出來。 1950 年因經營不善,被 Remington Rand 併購,再過沒多久, Remington Rand 又跟幾家小公司合併成立 Sperry。 Grace 一直在這家公司做資深數學家、程式設計人員, 到 1971 年她 65 歲屆齡退休,才離開這家公司。
Grace 對電腦界的貢獻相當多,像是 bug 這個名詞的引用, 只是一個小小的插曲, 最大的貢獻是發明了全世界第一套的 compiler 叫做 A-0。 在當時是沒有任何組合語言及程式語言存在的, 所有的程式設計人員,都是要把程式翻譯成機器碼, 就是翻成 0011000101.. 這樣的形式,在紙上打洞,再送到機器裡面去讀。 Grace 在進 Eckert-Mauchley 這家公司之後,她便有了一種想法, 她想設計一種程式,讓人可以用類似英文的語法,把想做的事寫下來, 然後用這個程式把英文翻譯成機器的語法,交給機器去執行。 這個想法就是今日的 compiler(編譯器)。當初她提出這樣的構想時, 眾人皆曰不可。所有人都告訴她電腦只能做計算,只能加減乘除,只能處理數字, 電腦是不懂英文的。由此可見,在 1950 年代, 大部分人尚未意識到電腦是用來處理資訊的工具, 所有的人就是認為電腦是個計算機而已。 Grace Hopper 可能是第一個想到而且有機會做下去的人。 爾後,Grace Hopper 就到處去演講,到處去跟人要錢來作這項計畫。 這段期間,有很多她的朋友問她說:「妳怎麼這麼勇敢呢?萬一搞砸了, 妳該怎麼辦?」,Grace Hopper 回答道:
It's always easier to ask forgiveness than it is to get permission.
(以後要道歉,比現在要拿到錢簡單多了) 這句話成為她一生中的至理名言之一。
在 1952 年 Grace 終於發展出第一套實驗性的編譯器, 在 Sperry 的機器上可以執行的,叫做 A-0,後來又發展了 A-1、 A-2。 當初在寫 A-0 時,為了向出錢的老闆炫耀,她還設計了三個版本:英文、德文、法文。 她給人看 compiler 不僅可以看得懂英文,也看得懂德文跟法文。 但是後來德文跟法文的 compiler 都沒再做下去。 後來 Grace Hopper 漸漸發展她的 compiler 在 UNIVAC Ⅰ & Ⅱ 上面能夠執行, 1956 年她已經做出來一套蠻完整的程式語言,叫做 FLOW-MATIC, 海軍採用了這套系統 (這時 Grace Hopper 還是海軍的一員)。 後來海軍跟一些民間的公司想要把 FLOW-MATIC 變得更標準一點, 這也是 Grace Hopper 第二個對電腦界重大的貢獻。 因為海軍幅員廣大,各地因為自行稍加將 compiler 修改一小部份, 以致發生 A 地的程式在 B 地可能無法執行的問題。 Grace Hopper 寫了一套程式,用來檢查這些程式之間是不是用同樣的編譯方式, 稱作 Validation。後來影響到民間,漸漸發展出一套新的語言, 偏向商業用的語法,這套程式語言就是著名的 COBOL (COmmon Business Oriented Language)。 在那個年代只有三種程式語言,COBOL、ART、FORTRAN (IBM 的產品)。
Hopper and Knuth左邊這張照片,是 Hopper 頒獎給 Knuth 的鏡頭。 前者是開創電腦程式語言的早期領袖之一, 後者是計算機演算法則的當代領袖之一。 這是一張難得的合照。
[Hopper's nanosecond]1966 年 Grace Hopper 滿六十歲,海軍又叫她退休了, 因為她當時的官階是海軍的中校,六十歲就該屆齡退休了。 在退休的那一天,Grace Hopper 說這是她一生中最悲傷的一十了, 因為人家已經告訴她她太老了。 可是海軍在她退休後沒多久,發現沒有她是不行的,因為海軍裡還有很多電腦化、 自動化、正規化的工作尚未完成,所以在她退休的五個月後,海軍就要求她復職。 所以在她退叼的半年後 (1967 年 8 月 1 日),又回到了海軍, 回去之後擔任了好幾個海軍的計算中心的主持人或是顧問,指揮那些海軍的技術人員, 到處去演講、宣傳她的觀念、管理觀。其中,有件很有趣的事,她在演講之中, 總是沒有辦法讓她的聽眾懂得什麼是 nanosecond (十億分之一秒)。 多快的時間是一個 nanosecond? Microsecond(百萬分之一秒) 跟 nanosecond 差多少的時間?你很難去解釋,因為它們都是很短很短的時間,相差了一千倍。 Grace 想到了個點子,她跑去工程部切了段電線,這節電線是 11.78 英吋 她就拿著這將近一呎的電線跟聽眾說:「這個長度就是電波在一個 nanosecond 可以跑的距離」,同時她又拿了好幾捆的電線放到桌上,差不多一千呎 (約莫三百三十三公尺) 的電線,就是一千倍,然後她就說: 「這個長度就是電波在一個 microsecond 可以跑的距離」 此時,聽眾就清楚了,所以她說: 「你們要小心,絕對不要隨便浪費一個 microsecond 的電。」 左邊的照片,就是 Hopper 拿著她的 nanosecond 演講的鏡頭。 
後來有一位參議員,他從來都沒見過 Grace Hopper。但是他聽說了這個人以後, 就私下做了點調查,然後他在國會裡面主動提出 Hopper 的申請案。 他認為這樣重要的女性不應該海軍裡面只作一個校官而已, 覺得她應該做將官。在國會裡面,很快的通過這個提案,就通知了海軍, 海軍就將 Hopper 升職了,所以她就變成了海軍少將, 是美國第一個女性到達這個官階的人,在 1985 年 11 月得到了這個官階。 在 1986 年,她七十九歲,是所有活著的、最老的、還沒除役的美國軍官。 此時是她第二度要退休。
在她的退休的 party 上,總共來了兩千多個人,有認識的,也有不認識的。 她退休之後,又跑去跟 Digital 公司簽約,Digital 公司聘請她代表他們演講、 推銷他們公司的產品。Digital 公司當時主要的產品是 minicomputer。 事實上,在 1986 年 PC 已經出來了,那時候叫做 microcomputer。 在海軍裡,Grace Hopper 極力推展使用 PC 的人之一。 她在這方面也有一句名言。她說在古老的時候,人都是用牛跟馬來拖東西, 後來人類發展越來越蓬勃,東西越來越重, 但是人們沒有發明更大更壯的物種來搬運東西;事實上, 人們是用更大一批的牛跟馬來做這些更加粗重的工作。 她用這個比喻來說,電腦不應該越做越大,應該用小小的東西, 但是用一大堆來做要做的事情。
Grace Hopper 逝世於 1992 的新年(一月一日)的凌晨,在參加了新年 party 之後。 確實時間不明。她生前的一個心願是,活到西元 1999 年 12 月 31 日的晚上, 因為她說她想參加那一場 party。 顯然,Grace Hopper 是個很喜歡 party 的人。
The grave of Hopper
Grace Hopper 是個非常 amazing 的人,顯然崇拜她的人相當多。 雖然她的事蹟很多,但是很多跟她有一樣事蹟的人並沒有像她這樣受到眾人崇拜。 由其中一點我們可以看得出來。從 1947 年開始 (二次大戰結束後第二年), 她獲得了第一個榮譽博士學位 (賓州大學),然後很長一段時間後, 自 1976 年開始,她到處獲得榮譽博士學位,她一生獲得了四十個以上的榮譽博士學位。 她的名言有很多,她自己最喜歡的,也是她最喜歡對所謂的年輕人說的,在她年老時, 她所謂的年輕人就是「年齡不到我的一半的人就叫做年輕人」,這句話是
A ship in port is safe, but that is not what ships are built for.
(船泊港灣是安全的,但那並不是我們造船的目的)
課外讀物:
[1] Aiken 的簡傳 http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Aiken.html
[2] Michelle Hoyle 的計算機簡史講義 http://www.eingang.org/Lecture/toc.html
【後記】 2005-02-19 收到物理教師周深淵先生來信 (email),指出我翻譯的 「這個長度就是電『流』在一個 nanosecond 可以跑的距離」有誤, 應該改成電『波』比較恰當。(事實上他在 2002-01-29 已經寫來一次, 但是不知為何我沒看到。) 原函如下:「電流」兩字用錯了,改成「電波」或許較恰當,這有點類似用水管接上自來水龍頭, 當水龍頭一打開,遠處之開口「馬上」擠出水一樣, 並不是水龍頭處之水一下子跑至遠處之出口, 而是壓力波以音速 (水中音速每秒約走1500米) 傳遞至出口所造成之結果, 事實上電流之速率是相當慢,每秒鐘大約漂移零點多毫米而已, 其計算公式如下 (一般普物書內有證明,下面舉例試算後我亦會簡單證明以供參考)。
其中  代表漂移速率 (drift speed, or magnitude of drift velocity),  代表電流,  代表可流動之基本電荷數密度,  是基本電荷之帶電量 (),  代表導線之截面積。
我們舉個實際材料來算算看,一般導線是銅做的,假定每個銅原子提供一個自由電子, 我們可以根據化學資料算出其 , 現在假定有一導線之截面積為 , 電流為 , 代入公式得
 
由此計算結果可知電流之漂移速率確實非常慢,至於電波 (或電磁波) 的速率,大約是 , 在一個 nanosecond 大約走 1 英呎, ()。
現在簡單證明上示之公式。 如右圖,將導線中截面積 , 長  的那一小段看成一隊人馬,含有可漂移之電荷的總電量為 , 經一段時間 , 整隊人馬會通過右端虛線,漂移速率 , 而電流為  , 上式得證。

沒有留言:

張貼留言