戰(zhàn)時打造的所有機器,最初構(gòu)思時都以完成某項特殊工作(例如解程序或破解密碼)為目標(biāo)。但在愛達(dá)或圖靈心目中,真正的電腦應(yīng)該能完美且快速的執(zhí)行任何邏輯作業(yè)。如此一來,機器的作業(yè)就并非只由硬件決定,軟件(可以在上面跑的程序)也扮演重要角色。
圖靈再度清楚說明這個概念:「我們不需要靠無數(shù)的不同機器來完成不同的工作。」他在1948年寫道:「只需要一部機器就夠了。在辦公室為通用機器『設(shè)計程序』來完成這些工作,取代了為執(zhí)行不同工作而要生產(chǎn)不同機器的工程問題。」
理論上,像ENIAC這樣的機器應(yīng)該可以程序化,甚至當(dāng)成通用機器來使用。但實際上,載入新程序的程序非常辛苦,包括必須動手一一拔除連結(jié)電腦中不同單元的電纜。戰(zhàn)時打造的機器無法以電子速度轉(zhuǎn)換程序,因此催生現(xiàn)代電腦的下一個步驟就很重要:設(shè)法把程序儲存在機器的電子記憶體中。
霍普—膽識過人的程序設(shè)計先驅(qū)
▲ Grace Hope(右二)與 UNIVAC(照片來源:Public.Resource.Org)
從巴貝奇以降的電腦發(fā)明者都把焦點放在硬件上。但二次大戰(zhàn)期間參與計算工作的女性和愛達(dá)一樣,很早就看出程序設(shè)計的重要。她們設(shè)法把指揮硬件作業(yè)的指令編成程序碼,軟件中蘊含的神奇程序,能以奇妙的方式改變機器的作業(yè)。
這群程序設(shè)計先驅(qū)中,故事最繽紛有趣的是膽識過人、活潑迷人的海軍女軍官霍普(GraceHopper),她先是為哈佛大學(xué)的艾肯工作,然后又加入艾科特和莫渠利的團隊。她在大學(xué)時代主修數(shù)學(xué)和物理,從瓦薩學(xué)院畢業(yè)后,進(jìn)入耶魯大學(xué)攻讀研究所,并且在 1934 年拿到數(shù)學(xué)博士的學(xué)位。
出人意料之外的是,霍普的教育過程在當(dāng)時其實不算太不尋常。耶魯大學(xué)在1895 年首度頒發(fā)數(shù)學(xué)博士學(xué)位給女性,而她是第十一位獲頒耶魯數(shù)學(xué)博士學(xué)位的女性。女性數(shù)學(xué)博士在 1930年代并不算太罕見,尤其如果她們出身名門的話。事實上,比起后來的世代,霍普成長的年代更常見到女性數(shù)學(xué)博士。
1930年代,美國有113位女性獲得數(shù)學(xué)博士學(xué)位,占美國數(shù)學(xué)博士總數(shù)的15%。但到了 1950 年代,只有 106 位女性獲得數(shù)學(xué)博士學(xué)位,只占總數(shù)的 4%。(到了二十一世紀(jì)的最初十年,情況已大幅好轉(zhuǎn),那段期間美國總共有 1,600 位女性獲頒數(shù)學(xué)博士學(xué)位,占總數(shù)的30%。)嫁給比較文學(xué)教授文森.霍普(Vincent Hopper)之后,葛瑞絲.霍普到瓦薩學(xué)院任教。
和其他數(shù)學(xué)教授不同的是,她堅持學(xué)生必須具備良好的寫作能力。她上機率課時,會先講解自己最愛的數(shù)學(xué)公式,然后要求學(xué)生以此為題寫一篇文章。她批改時,也會就文章清晰度和寫作風(fēng)格來評析。
「我(在文章上)寫滿評語,而他們會抱怨這是數(shù)學(xué)課,又不是英文課,」她回憶道:「然后我會解釋,除非他們懂得怎么和別人溝通,否則學(xué)習(xí)數(shù)學(xué)毫無用處。」終其一生,霍普一直很擅長把科學(xué)問題(例如有關(guān)軌道、流體流動、爆炸、天氣型態(tài)的問題)轉(zhuǎn)換為數(shù)學(xué)方程序,然后再翻譯成一般人聽得懂的英文。這項才能也幫助她成為優(yōu)秀的程序設(shè)計師。
霍普的長處是很懂得把現(xiàn)實世界的問題轉(zhuǎn)化為數(shù)學(xué)方程序,然后用機器能夠了解的方式下達(dá)指令,和機器溝通。「我學(xué)習(xí)海洋學(xué)的術(shù)語,還有和掃雷、***、近發(fā)引信及生醫(yī)領(lǐng)域相關(guān)的種種詞匯,」她解釋:「我們必須學(xué)習(xí)他們的用語,才有辦法解決他們的問題。我可以隨時轉(zhuǎn)換詞匯,先用高度技術(shù)性的術(shù)語跟程序設(shè)計師溝通,然后幾小時之后,再用完全不同的詞匯向主管報告相同的事情。」要成功創(chuàng)新,有賴于清楚的溝通。
由于霍普清晰準(zhǔn)確的溝通能力,艾肯指派她撰寫電腦程序設(shè)計手冊,這是全世界第一部程序設(shè)計手冊。有一天,艾肯站在霍普的辦公桌旁,對她說:「妳要寫一本書。」
「我沒辦法寫書,」霍普回答:「我從來沒有寫過書。」
「妳現(xiàn)在加入海軍了,」艾肯說:「妳要撰寫一本書。」
結(jié)果霍普寫出一部厚達(dá)五百頁的巨著,裡面包含了馬克一號的發(fā)展史和程序設(shè)計指南。霍普的引言就從巴貝奇開始說起。她和愛達(dá)一樣,知道巴貝奇分析機有一種特質(zhì),也就是她和艾肯所深信,馬克一號有別于其他電腦的特質(zhì)。艾肯的馬克一號和巴貝奇未完成的機器一樣,藉由打孔紙帶接收源源不絕的指令,可以透過重新編程,傳達(dá)新的指令。
霍普每天晚上都把當(dāng)天撰寫的內(nèi)容唸給艾肯聽,她因此領(lǐng)悟到成為優(yōu)秀寫手的簡單訣竅,她說:「他指出,如果你大聲朗讀時,會結(jié)結(jié)巴巴讀不順,那么最好修改句子。我每天都得朗讀五頁我寫下的內(nèi)容。」于是,她寫的句子變得簡潔、生動、清晰。霍普和艾肯成為最佳拍檔,活生生是百年前愛達(dá)與巴貝奇的現(xiàn)代翻版。霍普愈深入了解愛達(dá),就愈認(rèn)同她。「她寫了第一個程序迴圈,」霍普說:「我絕對不會忘記這點。我們都不會忘記。」
霍普撰寫的電腦發(fā)展史偏重個人,所以她的書強調(diào)個人角色。反之,在霍普的著作完成后沒多久,IBM的主管也推出自己的馬克一號發(fā)展史,把大部分功勞都?xì)w諸在紐約恩狄考特建造機器 IBM 團隊。「以組織歷史取代個人歷史,最符合IBM的利益,」曾深入研究霍普的史學(xué)家拜耳(Kurt Beyer)指出:「根據(jù)IBM的說法,公司才是科技創(chuàng)新的所在。組織裡的工程師團隊扮演無名英雄,逐步推動進(jìn)步,取代了獨自在實驗室或地下室埋首研究的激進(jìn)發(fā)明家。」
在 IBM 版本的歷史中,馬克一號涵蓋的一長串小創(chuàng)新(例如棘輪式計數(shù)器和雙層饋卡機制等),都要歸功于一群工程師在恩狄考特默默耕耘、通力合作所促成的。
霍普版的歷史和IBM版之間的差異,其實不只關(guān)乎誰功勞最大的爭議,而隱含了更深遠(yuǎn)的意義,進(jìn)一步暴露出雙方的創(chuàng)新史觀在根本上的差異。和霍普一樣,有些科技相關(guān)研究也強調(diào)創(chuàng)意十足的發(fā)明家推動了跳躍式的創(chuàng)新。其他研究則強調(diào)團隊和組織的角色,例如貝爾實驗室工程師的努力,以及IBM恩狄考特團隊的合作成果。后者試圖說明,有些科技突破也許表面看來像是靈光閃現(xiàn)后的大躍進(jìn),實際上卻是逐步演進(jìn)的結(jié)果,等到各種想法、概念、技術(shù)和工程方法都同時醞釀成熟時,才一舉畢其功。這兩種科技發(fā)展史觀都不夠完善。事實上,數(shù)位時代大部分的偉大創(chuàng)新,都仰賴擁有高度創(chuàng)造力的個人(莫渠利、圖靈、馮諾伊曼、艾肯等),和有能力實現(xiàn)創(chuàng)意的團隊之間的良好互動。
霍普在哈佛大學(xué)開發(fā)出來的其中一種程序是「次常式」,是為了特殊工作而編寫的大段程序碼,可暫時儲存起來,在主程序某個部分需要用到時再叫出來使用。「次常式是明確、簡潔,而且通常一再重復(fù)的程序,」她寫道:「哈佛的馬克一號包含了為 sin x、log10x、10x 設(shè)計的次常式,每個次常式都用一個作業(yè)碼來唿叫。」
愛達(dá)在關(guān)于分析機的評注中,最先描述了這個概念。霍普累積了許多這類次常式。她為馬克一號寫程序的時候,也發(fā)展出「編譯器」(compiler)的概念,她發(fā)明一種程序,能把源碼轉(zhuǎn)譯為不同電腦處理器使用的機器語言,加速了為多部機器撰寫相同程序的過程。
除此之外,「bug」(錯誤和「debug」(除錯)這兩個詞,也在霍普團隊推波助瀾下,成為電腦界的流行用語。當(dāng)時打造馬克二號電腦的哈佛建筑物沒有裝紗窗。有一天晚上機器突然故障,工作人員開始檢查究竟哪裡出問題。他們發(fā)現(xiàn)有一隻翅膀達(dá)四公分寬的大飛蛾卡死在電機繼電器中。于是他們?nèi)〕鲲w蛾,把牠用膠帶黏在對數(shù)表上,并在實驗日誌中記下:「面板F,(飛蛾)在繼電器中。找到第一隻真正的蟲(bug)。」從此他們就把偵錯和除錯稱為「debug」。
電腦創(chuàng)新者和其他開路先鋒一樣,如果在半途卡住了,很容易從超前變落后。執(zhí)著和專注等特質(zhì)令他們創(chuàng)造力豐沛,但是面對新觀念時,他們也可能因為相同的特質(zhì)而抗拒改變。賈伯斯的執(zhí)著和專注十分有名,然而當(dāng)他領(lǐng)悟到必須改弦易轍時,他會突然改變主意,令同事眼花撩亂,困惑不已。艾肯卻缺乏這種靈活應(yīng)變的能力,只是一味憑著海軍指揮官的本能,采取中央集權(quán)的管理方式。
-
電機
+關(guān)注
關(guān)注
143文章
9592瀏覽量
154117 -
編譯器
+關(guān)注
關(guān)注
1文章
1672瀏覽量
51618 -
程序設(shè)計
+關(guān)注
關(guān)注
3文章
263瀏覽量
31699
發(fā)布評論請先 登錄
基于Matter over Thread的照明應(yīng)用示例簡要設(shè)置步驟
程序員最常見謊言
匯編程序段的定義介紹
關(guān)于系統(tǒng)鏈接腳本的介紹
奔赴熱AI,碼力全開!Talkweb House@1024程序員日系列活動圓滿收官
開鴻智谷“以賽促學(xué)、以賽選才”|1024程序員節(jié)暨開源鴻蒙構(gòu)建大會圓滿落幕!
藍(lán)牙低功耗模塊的原理和應(yīng)用介紹
NVMe協(xié)議簡要分析
程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)
從零開始學(xué)電路仿真Multisim與電路設(shè)計Protel技術(shù)——完整版
如何在 樹莓派 上編寫和運行 C 語言程序?
零基礎(chǔ)入門:如何在樹莓派上編寫和運行Python程序?
簡要分析園區(qū)智能光儲充能量管理系統(tǒng)設(shè)計及應(yīng)用
簡要介紹世界上首位程序員的簡要介紹
評論