巴貝奇首先為分析機構(gòu)思了“存貯庫”和“運算室”。此外,巴貝奇也構(gòu)思了送入和取出數(shù)據(jù)的機構(gòu),以及在“存儲庫”和“運算室”之間運輸數(shù)據(jù)的部件。一個多世紀(jì)過去后,現(xiàn)代計算機的結(jié)構(gòu)幾乎就是巴貝奇分析機的翻版,只不過它的主要部件由機械變成了集成電路。因此,現(xiàn)代人給巴貝奇封了一個“計算機之父”的稱號。
巴貝奇的另一個重要的貢獻是在計算機控制中加入了分支控制,使得計算機和計算器分道揚鑣。條件控制非常重要,軟件工程師都非常熟悉,程序的流程有3類:順序、分支、循環(huán),分支控制使得計算機可以做很多事,而不像計算器只能做一件事。
巴貝奇不是一個人在戰(zhàn)斗,他在研制計算機的過程中,找到了一個志同道合的女助手,她就是英國著名浪漫派詩人拜倫的女兒——愛達·拜倫(也叫愛達·拉弗雷斯,同丈夫姓)。
5.第一位程序員——居然是個女人
愛達出生不久后父母離異,愛達由母親撫養(yǎng)成人。深受數(shù)學(xué)家母親的影響,她從小就酷愛數(shù)學(xué),一直醉心于數(shù)學(xué)研究。在當(dāng)時,巴貝奇的機器被認(rèn)為是沒有價值的,是個只會燒錢的廢物,巴貝奇拉不到經(jīng)費,也得不到人們的理解,不過愛達卻非常清楚這項工作的意義。愛達負(fù)責(zé)為這臺還沒有建成的機器寫程序,她創(chuàng)造了子程序、循環(huán)的概念。后來美國國防部開發(fā)了一種面向?qū)ο蟮母呒壘幊陶Z言,為了紀(jì)念這位計算機軟件的開山之祖,美國國防部將這種語言命名為ADA(愛達)。ADA語言至今還在計算機的某些領(lǐng)域發(fā)揮著重要作用,而愛達也被人們尊稱為世界上第一個程序員。
程序員這個職業(yè)一般被認(rèn)為是男性職業(yè),就像我所在的公司,寫軟件的男女比例都快到10:1了,不想第一位程序員卻是個女人,而且是個詩人的女兒,歷史真是把玩笑開大了。
巴貝奇和愛達的想法超前世界太多年,當(dāng)時人們對電還沒有太深刻的認(rèn)識,機械水平也不能支撐分析機的實現(xiàn),他們終其一生也沒法制造出自己所設(shè)想的機器。
直到大半個世紀(jì)之后,在哈佛大學(xué)攻讀博士學(xué)位的美國青年霍德華·艾肯(H·Aiken),
從圖書館積滿灰塵的書刊里發(fā)現(xiàn)了分析機論文。巴貝奇仿佛還在同他娓娓交談,為他講解那臺機器的結(jié)構(gòu),目光中充滿著期待的神色。以艾肯所處時代的科技水平,已經(jīng)能夠?qū)崿F(xiàn)巴貝奇的夙愿。為此,他寫了一篇《自動計算機的設(shè)想》的建議書,提出要用機電方式,而不是用純機械方法來構(gòu)造新的“分析機”。
1944年,在IBM公司提供的100萬美元資助下,艾肯研制出著名的MarkⅠ機電式計算機,設(shè)計思想幾乎就是巴貝奇分析機的翻版,MarkⅠ當(dāng)時就被用來計算原子核裂變過程。1946年,艾肯發(fā)表文章寫道:“這臺機器能自動實現(xiàn)人們預(yù)先選定的系列運算,甚至可以求解微分方程?!边@是對巴貝奇預(yù)言最好的驗證。事隔多年后,已經(jīng)擔(dān)任大學(xué)教授的艾肯博士談起巴貝奇其人其事,仍然驚嘆不已,他感慨地說:“假如巴貝奇晚生75年,我就會失業(yè)?!?/p>
巴貝奇和愛達是不幸的,他們生前所作的工作得不到認(rèn)可,他們將種子種在了地下,辛勤耕耘,但收獲的卻不是他們。在巴貝奇近80年的奮斗生涯里,屢戰(zhàn)屢敗,屢敗屢戰(zhàn),他始終不放棄自己對崇高理想的追求。正如他經(jīng)常所說的那樣:“不管今天怎樣被認(rèn)為是無用的知識,到后世將會變成大眾的知識,這就是知識的生命力?!?/p>
巴貝奇和愛達過得很悲催,不過悲催的不僅是他們,還包括下面這位。
6.圖靈機
計算機領(lǐng)域一直缺少一個獎項。諾貝爾獎一般只授予基礎(chǔ)研究的人,像計算機這樣偏向于應(yīng)用的領(lǐng)域卻是很難獲獎。1966年,美國計算機協(xié)會(Association for Computer Machinery,ACM)設(shè)立圖靈獎,專門獎勵那些對計算機科學(xué)研究與推動計算機技術(shù)發(fā)展有卓越貢獻的杰出科學(xué)家,圖靈為什么能擔(dān)當(dāng)大任,因為他是用理論證明計算機可行的第一人。
阿蘭·圖靈于1912年6月23日出生于英國倫敦。圖靈很小的時候就顯示出了自己的科學(xué)家天分,3歲時,他把玩具木頭人的胳膊掰下來種植到花園里,想讓它們能長出更多的木頭。8歲時,圖靈寫了一部“科學(xué)著作”:《關(guān)于一種顯微鏡》,除了錯了幾個單詞外,還算是有板有眼。
1936年,24歲的圖靈發(fā)表了一篇論文《On computable numbers, with an application to the entscheidungs problem》(論可計算數(shù)及其在判定問題中的應(yīng)用)。這篇論文被譽為是闡明計算機原理的開山之作。
圖靈在這篇論文中,詳細描述了一項計算任務(wù)是怎么用一種計算機器(Computing Machine)來完成的。下圖為圖靈機的基本組成: