從最基本的加法器到真正的四則計算器瘦锹,一代代世界頂級的發(fā)明家不斷精進著機器的設(shè)計和工藝悉患。從17世紀到20世紀噪矛,隨著時代的演進,機器驅(qū)動也完成了從手搖到電動的革新法褥。即使在電子計算器出現(xiàn)后的幾十年里,部分已經(jīng)停產(chǎn)的機械計算器仍在世界各地的辦公桌上服役酬屉。
可當我們回顧歷史卻發(fā)現(xiàn)半等,這個輝煌的、跨越了三百多年時光呐萨、匯聚了眾多天才智慧的機械計算時代杀饵,卻僅僅在和加、減谬擦、乘切距、除——簡單到不能再簡單的基本運算打交道。難道機器只能用來做運算嗎惨远?為了解決一個數(shù)學問題谜悟,人們往往需要將多步運算串聯(lián)起來,每一次串聯(lián)不過是將上一步的運算結(jié)果直接或經(jīng)過簡單處理后交給下一步而已北秽,而既然運算可以由機器完成葡幸,為什么步驟就不可以呢?
第一個用實際行動驗證這一想法的羡儿,是來自英國的曠世奇才——查爾斯·巴貝奇(Charles Babbage)礼患。這個今天并不為人所熟知的名字,其實有著艾倫·圖靈(Alan Turing)和馮·諾依曼(John von Neumann)那樣的重量掠归。
巴貝奇早年經(jīng)歷
巴貝奇出生于英國倫敦的一個富裕家庭鸥鹉,其父親是艦隊街上的一名銀行合伙人。上天在賜予優(yōu)厚的生活條件的同時庶骄,也剝奪了他童年的健康毁渗。兒時的巴貝奇體弱多病,甚至一度游走在生死邊緣单刁,為此他不得不時常轉(zhuǎn)學或休學灸异,在埃克塞特羔飞、托特尼斯肺樟、恩菲爾德等多地輾轉(zhuǎn)求學,并經(jīng)歷了多任家庭教師逻淌。虛弱的體質(zhì)和坎坷的經(jīng)歷卻并沒有消磨巴貝奇的學習意志么伯,反而激發(fā)出他對數(shù)學的天賦與熱愛。他勤奮刻苦卡儒,善于鉆研田柔,最終在一位來自牛津的家庭教師的指引下,考進了劍橋大學朋贬。
1810年10月凯楔,19歲的巴貝奇來到劍橋大學三一學院。一開始锦募,他對這座頂級學府充滿了期待摆屯,結(jié)果很快發(fā)現(xiàn),大學里常規(guī)的教學內(nèi)容糠亩,自己早已在平時的自學中掌握了虐骑。倍感失望的巴貝奇只得繼續(xù)自我精進,并很快在學術(shù)界嶄露頭角赎线。他結(jié)識了一群天才朋友廷没,和大天文學家威廉·赫歇爾(Wilhelm Herschel)的兒子約翰·赫歇爾(John Herschel)成為至交。
1812年浑厚,巴貝奇與包括約翰·赫歇爾在內(nèi)的幾位同學一同創(chuàng)辦了名為分析學會(Analytical Society)的數(shù)學社團,致力于推廣萊布尼茨的微積分符號系統(tǒng)根盒。同年,巴貝奇轉(zhuǎn)至同屬劍橋的彼得豪斯學院物蝙,到1814年畢業(yè)為止炎滞,一直被公認為學院中數(shù)學領(lǐng)域的頂級人物。
畢業(yè)后的巴貝奇更是成就非凡诬乞,翻開他的履歷册赛,里面滿滿當當寫著兩個字:高級。
1815年震嫉,巴貝奇年僅24歲就在英國皇家學會開設(shè)天文學講座森瘪,并于次年成為學會會員;1816年票堵,他與分析學會的同好們一起整理扼睬、翻譯、出版了法國數(shù)學家西爾維斯特·拉克魯瓦(Sylvestre Lacroix)的學術(shù)講座合集悴势,成為當時最出色的微積分教科書窗宇;1819年,在著名天文學家皮埃爾-西蒙·拉普拉斯(Pierre-Simon Laplace)的推薦下特纤,被愛丁堡大學聘為教授军俊;1820年,英國皇家天文學會成立捧存,巴貝奇為創(chuàng)始人之一粪躬,由威廉·赫歇爾擔任會長。
皇家天文學會的成立之初旨在規(guī)范天文學領(lǐng)域的計算昔穴,并提高數(shù)據(jù)的復用價值镰官。巴貝奇對計算和數(shù)據(jù)有著濃厚的興趣,他將隨后的事業(yè)重心放到了這份興趣之上傻咖,也許他自己也不會想到朋魔,這一選擇,讓他的人生開始從優(yōu)秀走向偉大卿操。
1824年警检,皇家天文學會將最高獎項——金質(zhì)獎章授予巴貝奇孙援,以表彰他在這一領(lǐng)域做出的第一份貢獻——一種高度自動化的計算機器——差分機(difference engine)。
差分機
差分思想
差分機這個名字扇雕,源自其所使用的算法拓售,是帕斯卡在1654年提出的差分思想:n次多項式的n次數(shù)值差分為同一常數(shù)。這句話概括性高镶奉,不太好理解础淤,讓我們用幾個例子來詳細說明。
選用經(jīng)典數(shù)字1024哨苛,構(gòu)造一次函數(shù)F(x):
同時定義差分?F(x):
在x取0~6時鸽凶,F(xiàn)(x)及?F(x)的值如下表所示:
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
F(x) | 24 | 34 | 44 | 54 | 64 | 74 | 84 |
?F(x) | 10 | 10 | 10 | 10 | 10 | 10 |
不難發(fā)現(xiàn),對于一次多項式建峭,每個相鄰的x所對應的F(x)之差都是一個常數(shù)玻侥,這個常數(shù)正是x的系數(shù)。那么二次多項式呢亿蒸?
構(gòu)造二次函數(shù)F(x):
同時定義一次差分與二次差分:
在x取0~6時凑兰,F(xiàn)(x)及其一次、二次差分的值如下表所示:
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
F(x) | 4 | 16 | 48 | 100 | 172 | 264 | 376 |
?F1(x) | 12 | 32 | 52 | 72 | 92 | 112 | |
?F2(x) | 20 | 20 | 20 | 20 | 20 |
對于二次多項式边锁,每個相鄰的x所對應的一次差分之差(即二次差分)是一個常數(shù)姑食。
一次多項式和二次多項式的規(guī)律如此,三次茅坛、四次音半,乃至任意多次的多項式都遵循這樣的差分規(guī)律——n次多項式的n次差分為常數(shù)。
差分規(guī)律是一項偉大的發(fā)現(xiàn)灰蛙,有了差分祟剔,在計算多項式時就可以用加法代替乘法,我們只需要準備好x=0時F(x)及各次差分的值摩梧,后面任意x所對應的F(x)值均可通過加法得出物延。只要有了第1列F(0)、F1(0)和F2(0)的值仅父,第2列的F(1)即可通過F(0)+F1(0)得到叛薯、F1(1)可通過F1(0)+F2(0)得到,同理笙纤,第3列的F(2)和F1(2)也可根據(jù)第2列的數(shù)據(jù)得到耗溜,以此類推,任意列的數(shù)據(jù)都可通過前一列的數(shù)據(jù)得到省容。意即抖拴,求解F(n),只需前n列數(shù)據(jù)的不斷迭代。而這整個過程阿宅,只涉及加法候衍。
這可了不得!要知道洒放,許多常見的函數(shù)在數(shù)學上稱為解析函數(shù)蛉鹿,它們都可以用多項式逼近(冪級數(shù)展開),常用的三角函數(shù)往湿、對數(shù)函數(shù)都可以轉(zhuǎn)換為多項式妖异。借助差分思想,這些函數(shù)可以進一步轉(zhuǎn)換為重復的加法领追。而加法運算正是機械計算器的“拿手好戲”他膳,這樣一來,絕大部分數(shù)學運算就都可以交給機器了绒窑。
研制歷程
差分機的設(shè)想矩乐,最早由一位名為約翰·赫爾弗里奇·馮·米勒(Johann Helfrich von Müller)的德國工程師在1784年提出,但他沒有得到資金支持回论,這一歷史重任最終留給了巴貝奇。
巴貝奇與差分機的故事分歇,要從1789年法國大革命說起傀蓉。君主制被推翻后,新成立的國民議會大刀闊斧地推行著多方改革职抡,其中一項很重要的工作就是統(tǒng)一全國混亂不堪的度量衡葬燎,這項曠日持久的工程直接導致了后來國際米制的誕生,成為法國對世界科學最偉大的貢獻之一缚甩。于此同時谱净,原本的數(shù)學用表不再適用,需要重新編制擅威。1791年壕探,這項艱巨的任務落在了數(shù)學家加斯帕德·德普羅尼(Gaspard de Prony)肩上。
表的規(guī)模十分龐大,計算結(jié)果需要精確到小數(shù)點后14~29位揍瑟,工作量之巨白翻,已經(jīng)遠不能作為一項數(shù)學任務去對待,它已經(jīng)是個正兒八經(jīng)的工程绢片。普羅尼想到經(jīng)濟學家亞當·斯密(Adam Smith)那本經(jīng)典的《國富論》滤馍,其中勞動分工的理念令他頗受啟發(fā)岛琼。普羅尼將制表人員分成金字塔式的三層:第一層為5~6名頂級的數(shù)學家,負責選擇公式纪蜒、確定計算精度和計算范圍衷恭;第二層為7~8名普通的數(shù)學家,負責計算一些關(guān)鍵數(shù)據(jù)和初始數(shù)據(jù)纯续,并為第三層提供計算模板随珠、方法和市里;第三層為60~80名只會基本算術(shù)的計算員猬错,負責完成耗時耗力的重復運算窗看,他們大多是失業(yè)的理發(fā)師,因為大革命后倦炒,上流社會的發(fā)型設(shè)計市場跟著貴族階層一起瓦解了显沈。
這種創(chuàng)新式的分工方式不僅幫助普羅尼順利完成了任務,還使他有了足夠的自信宣稱“制作數(shù)學用表可以像生產(chǎn)針一樣簡單”逢唤。
然而最大的問題是拉讯,成表的正確率卻不盡人意,盡管普羅尼要求每個數(shù)據(jù)至少計算兩遍鳖藕,并且要在法國的不同地點用不同的方法完成魔慷。
多年以后的英國,巴貝奇和約翰·赫歇爾也承擔著類似的制表任務著恩。他深入調(diào)研了這位前輩的工作院尔,了解到正確率的保障有多困難。他們嘗試了各種減少錯誤的手段喉誊,比如調(diào)整紙張和墨水的顏色以提高數(shù)字的識別度邀摆,比如直接拿現(xiàn)有多個版本的表進行謄抄、比對伍茄、讓不同人員反復校對栋盹,結(jié)果卻依然差強人意。
其實幻林,那個時代基本沒有一版數(shù)學用表是完全正確的贞盯,有些版本甚至錯誤百出。這些錯誤可能會造成很嚴重的后果沪饺,比如航海表一旦在關(guān)鍵地方出錯可以直接導致船毀人亡躏敢。
巴貝奇意識到:只要是人為的,就沒有完美的整葡。他思忖著:普羅尼分工模式的最底層件余,那個最簡單卻也是最吃力的層次,人員最多也是產(chǎn)生最多錯誤的層次,可否用機器來代替呢啼器?
1822年6月14日旬渠,巴貝奇向皇家天文學會遞交了一篇名為《論機械在天文及數(shù)學用表計算中的應用》的論文,差分機的概念正式問世端壳。
與論文一起亮相的告丢,是一臺簡單的原型機——差分機0號。英國政府對它很有興趣损谦,并于次年撥款1700英鎊岖免,希望巴貝奇能做出實用產(chǎn)品,徹底解決制表難題照捡。
拿到啟動資金的巴貝奇如魚得水颅湘,立即著手差分機1號的研制,并宣稱只需兩三年就能完成任務栗精。誰知實行起來要比想象中困難得多闯参,那個時代的機械制造水平實在滿足不了差分機的精密要求,巴貝奇跑遍整個歐洲也沒找到多少能用的零件悲立,于是在制造機器之前鹿寨,還要先考慮怎么制造各類零件。在當時一位頂尖的英國機械師約瑟夫·克萊門特(Joseph Clement)的幫助下薪夕,巴貝奇不但做出了差分機能用的零件释移,還培養(yǎng)出大批優(yōu)秀的技師。
也正因如此寥殖,他們無意間將一個項目的攤子鋪到了一個行業(yè)的尺度,盡管實施的過程精雕細琢涩蜘、盡善盡美嚼贡,卻沒能交付一件滿足要求的產(chǎn)品。1832年同诫,項目啟動10年過去了粤策,巴貝奇卻只完成了設(shè)計稿的七分之一——一臺支持6位數(shù)、2次差分的小模型(設(shè)計稿為20位數(shù)误窖、6次差分)叮盘。
上圖由巴貝奇長子本杰明·赫歇爾·巴貝奇(Benjamin Herschel Babbage)繪制。1862年霹俺,這臺“低配版”的差分機1號先后在倫敦世界博覽會和南肯辛頓博物館展出柔吼,后藏于倫敦科學博物館。
英國政府大失所望丙唧,他們想要的只是一臺能自動制表的機器而已愈魏,而不是培養(yǎng)技術(shù)人才、增加就業(yè)崗位、促進機械行業(yè)發(fā)展這些“大事”培漏。而巴貝奇本人也開始轉(zhuǎn)向一種新機器的研究(下文詳述)溪厘,差分機的建造基本爛尾。1842年牌柄,政府正式宣布不再出資畸悬,為期20年的差分機項目最終以失敗告終,而至此珊佣,項目花銷的經(jīng)費已經(jīng)高達17000英鎊蹋宦,是最初預算的整整10倍。
值得一提的是彩扔,客觀條件(制造業(yè)水平)的不足其實并不是差分機1號失敗的主要原因妆档。同時代的瑞典人佩爾·喬治·舒茨(Per Georg Scheutz)在借鑒巴貝奇的設(shè)計之后,于1843年建成了一臺支持5位數(shù)虫碉、3次差分的差分機贾惦,隨后又分別在1853和1859年建成了兩臺支持15位數(shù)、4次差分的機器敦捧,先后由美國紐約的一家天文臺和英國政府購買使用须板。
舒茨之后,還有來自瑞典兢卵、英國习瑰、美國、德國秽荤、新西蘭等多國的發(fā)明家和公司在1859~1931年間都成功建造了差分機甜奄。
巴貝奇作為差分機的鼻祖,反倒沒有留下實際可用的機器窃款。1846~1849年课兄,他升級了設(shè)計,提出支持31位晨继、7次差分的差分機2號(Difference Engine No.2)方案烟阐,但沒了政府的資助,只能停留于稿紙紊扬。于是蜒茄,巴貝奇的設(shè)計是否真的可行,其人作為“差分機之父”是否名副其實餐屎,成為學術(shù)界長久以來的一大爭論檀葛。直到1985~1991年,倫敦科學博物館為了紀念巴貝奇誕辰200周年腹缩,根據(jù)其1849年的設(shè)計驻谆,用純19世紀的技術(shù)成功造出了差分機2號卵凑,才徹底鞏固了他的歷史地位。(博物館發(fā)現(xiàn)胜臊,巴貝奇的設(shè)計稿中僅存在少量錯誤勺卢,而且基本可以斷定它們是巴貝奇刻意設(shè)置的防盜措施。)
這臺差分機被珍藏于倫敦科學博物館的玻璃柜中象对。后來黑忱,由前微軟CTO內(nèi)森·梅爾沃德負責建造了第2臺差分機2號,于2008~2016年在美國加州的計算機歷史博物館展出(現(xiàn)存于梅爾沃德創(chuàng)辦的高智發(fā)明公司)勒魔,由工作人員現(xiàn)場講解和演示榆浓,參觀者得以更直觀地感受其工作機理凛膏。
工作原理
差分機2號支持7次差分汰扭,即可解七次多項式德崭,構(gòu)造一個簡單的七次函數(shù)F(x):
在x取0~9時,F(xiàn)(x)及其一~七次差分的值如下表所示弟胀,其中七次差分為常數(shù)5040楷力。
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
F(x) | 0 | 2 | 130 | 2190 | 16388 | 78130 | 279942 | 823550 | 209160 | 4782978 |
?F1(x) | 2 | 128 | 2060 | 14198 | 61742 | 201812 | 543608 | 1273610 | 2685818 | |
?F2(x) | 126 | 1932 | 12138 | 47544 | 140070 | 341796 | 730002 | 1412208 | ||
?F3(x) | 1806 | 10206 | 35406 | 92526 | 201726 | 388206 | 682206 | |||
?F4(x) | 8400 | 25200 | 57120 | 109200 | 186480 | 294000 | ||||
?F5(x) | 16800 | 31920 | 52080 | 77280 | 107520 | |||||
?F6(x) | 15120 | 20160 | 25200 | 30240 | ||||||
?F7(x) | 5040 | 5040 | 5040 |
根據(jù)差分思想,我們只需要將表中的第1列數(shù)據(jù)“喂”給機器孵户,機器通過7次加法運算即得第2列數(shù)據(jù)萧朝,以此類推,每一列都可通過對其前一列數(shù)據(jù)的7次加法運算得到夏哭。實現(xiàn)這一過程需要設(shè)置8個計數(shù)器检柬,分別存儲F(x)和?F1(x)~?F7(x)的值。
第1步竖配,計數(shù)器A和B相加何址,結(jié)果存入A;第2步进胯,B和C相加头朱,結(jié)果存入B;以此類推龄减,第7步,G和H相加班眯,結(jié)果存入G希停。計數(shù)器,除了H始終存放常數(shù)?F7(x)署隘,A~G都依次被新值覆蓋宠能,這7步運算必須串行執(zhí)行。
巴貝奇對此不太滿意磁餐,于是讓計數(shù)器成對成對地并行相加违崇,即A+B阿弃、C+D、E+F和G+H同時進行羞延,隨后再同時完成B+C渣淳、D+E和F+G。這樣整個計算過程就只需2步伴箩,速度提高了3.5倍入愧。然而在第2步中,C嗤谚、E棺蛛、G中已經(jīng)是新值,為了直接利用這些新值巩步,我們要準備的初始數(shù)據(jù)不再是F(0)和?F1(0)~?F7(0)旁赊,而是“階梯式”的F(3)、?F1(3)椅野、?F2(2)终畅、?F3(2)、?F4(1)鳄橘、?F5(1)声离、?F6(0)和?F7(0)。
在差分機2號中瘫怜,存儲數(shù)據(jù)的8個計數(shù)器表現(xiàn)為8列示數(shù)齒輪术徊,每列有31個,一個齒輪對應一個數(shù)位(底部為最低位鲸湃,頂部為最高位)赠涮,即單列可存儲長達31位的數(shù)據(jù)。
單個示數(shù)輪有40個齒暗挑,一圈印著4組0~9的數(shù)字笋除,每旋轉(zhuǎn)90°(四分之一圈)需要一次進位。
兩個相鄰計數(shù)器的相加炸裆,對應著31對示數(shù)輪的兩兩相加垃它。其中,位于同一水平面烹看、代表相同數(shù)位的示數(shù)輪為一對国拇。一對示數(shù)輪的相加依靠一個與雙方嚙合的扇形傳動齒輪實現(xiàn),這個傳動輪的齒厚度不一惯殊,呈左薄右厚的扇形分布酱吝,故名扇形齒輪。扇形輪可以小幅度上下移動到3個位置土思,位于下位時與左右示數(shù)輪同時嚙合务热,位于中位時只與右側(cè)的示數(shù)輪嚙合忆嗜,位于上位時與兩者都不嚙合。
此過程中冻璃,右側(cè)示數(shù)輪先歸零而后恢復示數(shù),我們可稱之為加數(shù)輪损合,而左側(cè)示數(shù)輪保存了相加的結(jié)果省艳,可稱為累加輪。
在巴貝奇的并行算法中嫁审,第1步計數(shù)器A跋炕、C、E律适、G負責保存相加結(jié)果辐烂,即它們的示數(shù)輪為累加輪,第2步計數(shù)器B捂贿、D纠修、F負責保存相加結(jié)果,C厂僧、E扣草、G中的示數(shù)輪又充當了加數(shù)輪的角色。意即颜屠,計數(shù)器B~G中的每個示數(shù)輪都在步驟交替的過程中交替扮演加數(shù)輪和累加輪的角色辰妙。計數(shù)器H保存著七次差分常數(shù),其示數(shù)輪始終為加數(shù)輪甫窟。
差分機的進位機構(gòu)比較復雜密浑,簡單地說,每個計數(shù)輪都有一個針對高位的“進位提示器”粗井,當計數(shù)輪從9轉(zhuǎn)到0尔破,其對應的“進位提示器”就被撥到“需要進位”的狀態(tài),每次計算浇衬,計數(shù)輪都要轉(zhuǎn)動兩次懒构,第一次是每位數(shù)相加,第二次是按照“進位提示器”進行進位径玖。我們直觀地感受一下連續(xù)進位是什么樣子:
最后讓我們來欣賞一下差分機整個運行起來的樣子,一排排示數(shù)輪緩緩旋轉(zhuǎn)颤介,一列列扇形輪交替上下梳星,有規(guī)律地發(fā)出整齊的咔咔聲赞赖,十分壯觀。
分析機
差分機的建造雖然夭折了冤灾,但巴貝奇從未停止過對設(shè)計稿的改進前域。直到有一天,一個驚人的想法從他腦中掠過韵吨,如同神祇匿垄,如同有史以來所有人類對計算的訴求結(jié)晶——差分機固然強大,但終究只能計算多項式而已归粉,何不建造一臺可以解決所有計算問題的通用機器呢椿疗!
1833年,巴貝奇就著手開始了這種通用機器的設(shè)計糠悼,并不斷改進直至離世届榄。這臺被他稱作分析機(Analytical Engine)的機器,直接將機械計算的理念從地表推上云天倔喂。
組成結(jié)構(gòu)
巴貝奇將分析機劃分為5大部分:
- 由差分機的計數(shù)裝置改進而來的數(shù)據(jù)存儲器铝条,可存儲1000個40位十進制數(shù);
- 支持四則運算席噩、比較大小和開平方根的算術(shù)單元班缰,巴貝奇稱之為“工廠”(mill);
- 實現(xiàn)邏輯控制的圓柱形“控制筒”悼枢,身周固定著許多銷釘埠忘,隨著“控制筒”的旋轉(zhuǎn),通過銷釘推動杠桿實現(xiàn)控制萧芙;
- 3種用于輸入的讀卡裝置给梅,其一輸入運算指令,其二輸入常量數(shù)據(jù)双揪,其三輸入控制數(shù)據(jù)(在存儲器和算術(shù)單元之間)傳輸?shù)闹噶疃穑休d這些輸入信息的是一種名為穿孔卡片(punched card/punch card)的經(jīng)典載體,3種讀卡裝置分別識別3種類型(運算渔期、數(shù)據(jù)和控制)的穿孔卡片运吓;
- 4種輸出裝置,其一為打印裝置疯趟,其二為曲線繪圖儀拘哨,其三為響鈴,其四為打孔機信峻,用于制造穿孔卡片倦青。
后人驚訝地發(fā)現(xiàn),這種組成結(jié)構(gòu)竟和現(xiàn)代計算機如出一轍(現(xiàn)代計算機的五大組成部件是由馮·諾依曼在1945年才明確提出的)盹舞。
5大部件的協(xié)作過程大體是這樣的:讀卡裝置從穿孔卡片上讀取數(shù)據(jù)和運算指令产镐,數(shù)據(jù)進入存儲器隘庄,隨后被傳送至“工廠”進行處理,處理結(jié)果進入存儲器并通過輸出裝置呈現(xiàn)給用戶癣亚。在控制類穿孔卡片的指引下丑掺,“控制筒”可以實現(xiàn)順序、循環(huán)述雾、條件等多種控制邏輯街州,讀取數(shù)據(jù)的讀卡裝置則不但可以按照正常順序讀卡,還可以反序讀卡玻孟,乃至跳過部分卡片唆缴。
巴貝奇首次將運行步驟從機器身上剝離,靠隨時可以替換的穿孔卡片來指揮機器取募,成就了機器的可編程性琐谤。這其中,穿孔卡片的引入功不可沒玩敏。這種經(jīng)典的數(shù)據(jù)載體跨越了機械斗忌、機電和電子3個時代,一直沿用至20世紀80年代中期旺聚。
穿孔卡片
穿孔卡片本身并不是巴貝奇的發(fā)明织阳,而是來自一個看似與計算機八竿子打不著的領(lǐng)域——紡織。
我國古代砰粹,用于織造絲錦的織機叫提花機唧躲,最遲在殷商時期就已出現(xiàn),后經(jīng)絲綢之路傳入阿拉伯國家碱璃,再傳到意大利和法國弄痹。為提花機中功能最強的大花樓提花機,長約一丈六尺嵌器,高約一丈五尺肛真,高起的部分叫花樓,織錦過程需要上下兩人配合完成爽航。
別看織機的組成復雜,織錦的原理其實十分簡單讥珍,就是通過一排排历极、一列列縱橫的絲線相互交織而成≈缘瑁縱向的叫經(jīng)線趟卸,橫向的叫緯線,要織出花紋,就需要將部分經(jīng)線提起锄列,讓緯線通過梭口新蟆,沒有被經(jīng)線壓住的緯線部分就可以形成花紋。坐在花樓上的提花工就專門負責提起這些經(jīng)線右蕊,花樓下的織花工則負責拋梭引線。
由于每織一行花紋吮螺,所要提起的經(jīng)線都不盡相同饶囚,那么問題就來了:經(jīng)線那么多,織完一片錦前后要提那么多次鸠补,提花工怎么記得住每次提哪些經(jīng)線呢萝风?傳統(tǒng)的方式是根據(jù)想要織出的花紋預先編織花本,花本是花紋的“蓬松版”紫岩,蘊含著“每次需要提哪些經(jīng)線”的信息规惰。提花工根據(jù)花本提花。
提花機傳到西方后泉蝌,十九世紀初歇万,一個叫約瑟夫·瑪麗·雅卡爾(Joseph Marie Jacquard)的法國人開始使用穿孔卡片來保存花本。
在卡片上預設(shè)若干孔位寒锚,每個孔位可以穿孔也可以不穿孔。將卡片置于經(jīng)線上方违孝,其上方是與所有孔位一一相對的勾針刹前。織錦時雌桑,勾針齊齊下探喇喉,嘗試穿過卡片,沒有穿孔的孔位上方的勾針就被擋住筹燕,穿孔孔位上方的勾針就可以穿過卡片勾起經(jīng)線轧飞。原本提花工的任務就可以完全交給機器自動完成,從此提花機就只需要一個工人操作了撒踪。
巴貝奇在一次巴黎展覽會上看到了雅卡爾的提花機过咬,對其印象十分深刻,很快想到可以把穿孔卡片應用到分析機上制妄。分析機讀卡裝置的原理與雅卡爾提花機類似掸绞,也是靠探針嘗試穿過卡片,要么順利穿過,要么被卡片頂住衔掸,兩種不同情況下的探針位移能產(chǎn)生不同的機械傳動——這其實是計算機史上最早的二進制應用烫幕。
研制成果
仿佛是老天爺一個玩笑式的魔咒,分析機的研制不幸步了差分機的后塵敞映,巴貝奇付出了幾十年的努力较曼,卻仍只建成了它的一小部分。
巴貝奇抱憾而終振愿,留給后世的僅僅只有這臺小小的模型和兩千多張圖紙捷犹。他在遺言中寫道:
如果一個人不因我一生的挫折而卻步,仍然一往直前制成一臺具有全部數(shù)學分析能力的機器……那么我愿將我的聲譽毫不吝嗇地讓給他冕末,因為只有他能夠完全理解我的種種努力萍歉,以及這些努力所得成果的真正價值。
巴貝奇逝世后档桃,小兒子亨利·普雷沃斯特·巴貝奇(Henry Prevost Babbage)繼承了他的遺志枪孩,在1880~1910年間斷斷續(xù)續(xù)做出了分析機的“工廠”和打印裝置,其中的“工廠”還不具有可編程性藻肄。
和差分機不同的是蔑舞,分析機現(xiàn)存的圖紙并不完整,因此至今也沒人建造出來嘹屯。2010年10月斗幼,一位英國的計算機專家發(fā)起了一個名為“Plan 28”的項目(名稱來源于巴貝奇的第28套設(shè)計方案),通過公開募捐的形式籌集資金抚垄,計劃深入研究分析機的設(shè)計蜕窿,而后構(gòu)建仿真模型,最終建造實物呆馁。截止2017年桐经,“Plan 28”完成了對所有現(xiàn)存資料的整理、歸類和消化浙滤,它最終能否讓分析機從圖紙上“活過來”阴挣,讓我們一起拭目以待。
第一位程序員
1840年纺腊,巴貝奇應邀來到意大利都靈大學分享分析機的設(shè)計畔咧,當時一位年輕的工程師、后來的意大利首相路易吉·費德里科·梅納布雷亞(Luigi Federico Menabrea)用法語記下了詳細的筆記并于1842年整理出版揖膜。1843年誓沸,著名詩人喬治·戈登·拜倫(George Gordon Byron)的女兒艾達·洛芙萊斯(Ada Lovelace)將這份筆記譯成英文,并在巴貝奇的提議下擴充了許多自己的理解壹粟。此時的艾達其實已經(jīng)對分析機癡迷了8年拜隧,結(jié)果她留下的注解篇幅足有譯文本身的2倍!其中一處在分析機上計算伯努利數(shù)的描述被后人視為史上第一個計算機程序,這篇名為《關(guān)于巴貝奇先生發(fā)明的分析機簡訊》的譯文被視為程序設(shè)計方面的第一篇著作洪添,艾達其人則被視為第一位程序員垦页,盡管當時連編程語言都沒有,連實物機器都沒有干奢。
艾達對分析機有著不亞于巴貝奇的熱愛炭菌,想象中機器的運轉(zhuǎn)在她看來是如此美妙,她形容到:“提花機織出了紅花與綠葉逛漫,而分析機編織著代數(shù)的圖案黑低。”這位聰慧而浪漫的女性酌毡,還在分析機身上看到了連巴貝奇都沒有看到的潛力:它不該只能用來計算克握,它還能用來表達其他東西,比如音樂枷踏。這是多么長遠的目光菩暗!
1980年,美國國防部將一種編程語言命名為Ada旭蠕,以紀念這位與巴貝奇同樣具有超前思想的偉大女性停团。
后話
巴貝奇是個忙得停不下來的人,他的研究興趣遍布各種領(lǐng)域掏熬。他編寫過包括世界語在內(nèi)的一系列辭典佑稠;他經(jīng)常逮住生活中任何能遇到的哺乳動物,測量它們呼吸和脈搏的頻率旗芬,并編寫了《哺乳類動物常數(shù)表》舌胶;他和約翰·赫歇爾一起做過電動力學方面的研究,并奠定了渦流理論的基礎(chǔ)疮丛;他還寫過一本在早期運籌學領(lǐng)域很有影響力的專著《論機械和制造業(yè)的經(jīng)濟》幔嫂,其中對層次化勞動分工的商業(yè)優(yōu)勢的論述,被后人稱為“巴貝奇原理”誊薄,在這方面大思想家卡爾·馬克思(Karl Marx)將他和亞當·斯密相提并論履恩,甚至更傾向于前者的某些觀點;他著作等身呢蔫,寫著寫著對圖書出版也有了心得似袁,并研究起這個行業(yè)的成本模型;他在度量衡和測量領(lǐng)域頗的研究成為機械制造的堅實基石,因此也常被視為機床領(lǐng)域的先驅(qū)之一昙衅;他還對火車的改進做過不少貢獻扬霜,比如發(fā)明了火車頭排障器,以及使用紙帶記錄并分析火車引擎的拉力而涉、車廂的運行軌跡和垂直震動情況著瓶,后來英國鐵路公司為了紀念他直接將一型火車頭命名為“查爾斯·巴貝奇”;他為做眼科醫(yī)生的朋友發(fā)明了查看視網(wǎng)膜血管和視神經(jīng)的眼底鏡(在此之前只能看放大鏡觀察)啼县,可惜這位朋友沒當回事材原,這項成就落到了后來的發(fā)明人頭上;克里米亞戰(zhàn)爭期間季眷,他成功破解了兩種經(jīng)典的加密算法(維吉尼亞密碼和自動密鑰密碼)余蟹,只不過被保護為軍事機密沒能發(fā)表,又歸功到了后來的破解者頭上……
除了作為皇家天文學會的領(lǐng)導成員子刮,巴貝奇還享盡了各種榮譽威酒。1830年,他出版《英格蘭科學的衰落》一書挺峡,促成了1831年英國科學促進協(xié)會(BAAS)的成立葵孤,1833年,BAAS設(shè)立統(tǒng)計學部橱赠,由巴貝奇擔任主席尤仍;1832年,他被美國人文與科學院吸納為外籍榮譽院士狭姨,并于同年榮獲皇家圭爾夫勛章宰啦;最了不起的,是在1828~1839年間擔任劍橋大學盧卡斯數(shù)學教授饼拍,有史以來坐上這一席位的偉人只有19位绑莺,其中包括艾薩克·牛頓和史蒂芬·霍金(Stephen Hawking);他還曾拒絕了騎士和從男爵的爵位惕耕,比起這些世襲貴族纺裁,他更青睞彰顯個人價值的終身貴族……
巴貝奇不光有才、有能司澎,還有錢欺缘,在1827年父親去世后,他繼承了10英鎊(等價于現(xiàn)在的一千萬左右)的遺產(chǎn)挤安,是個名副其實的富豪谚殊。他從學校畢業(yè)后就定居倫敦富人區(qū)馬里波恩,并在此度過一生蛤铜。
巴貝奇對生活品質(zhì)極為講究嫩絮,這份講究從屋里延伸到屋外丛肢,令他對許多干擾到他的社會現(xiàn)象非常不滿。作為一名科學家剿干,他表達不滿的方式也相當“高級”蜂怎。他在80天內(nèi)記錄了165件擾民事件,還總結(jié)了一份《對街頭擾民事件的觀察》置尔,他尤其討厭街頭那些嚴重吵擾到他的手風琴藝人杠步;他厭惡酒鬼,于是研究起某家工廠窗戶的玻璃碎片榜轿,并發(fā)表了《平板玻璃窗戶破碎原因相對頻率表》幽歼,結(jié)論是,在他研究的464扇窗戶中谬盐,有14扇是被醉酒之人打碎的……擱到今天甸私,他指不定能得個搞笑諾貝爾獎吧。
1871年10月18日飞傀,在腎功能不全和膀胱炎的折磨下皇型,巴貝奇離開了人世。他的大腦被分成兩半助析,分別藏于倫敦科學博物館和皇家外科醫(yī)學院的亨特博物館。
為了紀念巴貝奇一生偉大的成就椅您,后人將一座月球環(huán)形山命名為“巴貝奇”外冀,美國明尼蘇達大學設(shè)立了專門研究IT歷史的查爾斯·巴貝奇機構(gòu),上世紀的一型電子計算機還提供了一種名為巴貝奇的編程語言掀泳。在英國雪隧,巴貝奇早已成為一種文化符號和民族驕傲。普利茅斯大學專門修建了一座巴貝奇大樓员舵,托特尼斯鎮(zhèn)則干脆把巴貝奇的頭像印到了當?shù)氐募垘派希?015年脑沿,巴貝奇和分析機、艾達的她的伯努利程序還一同出現(xiàn)在英國的護照上……
縱觀整個機械時期马僻,巴貝奇的思想遠遠超出了其他幾位先驅(qū)者庄拇,他如同一個從20世紀穿越回去的先知,把一百年后的思想“劇透”給了世人韭邓。唯一缺憾的措近,是不論差分機還是分析機,巴貝奇都終究沒能實現(xiàn)女淑。人類的技術(shù)發(fā)展錯過了一次“跳級”的機會瞭郑,巴貝奇在計算機領(lǐng)域的成就逐漸沒入歷史的濃霧,等待百年之后再被另一批天才重新發(fā)明鸭你。
參考文獻
- Wikipedia. Charles Babbage[EB/OL].
- Wikipedia. Gaspard de Prony[EB/OL].
- Wikipedia. Difference engine[EB/OL].
- Wikipedia. Per Georg Scheutz[EB/OL].
- MechanicalComputing. Babbage's Difference Engine No. 2, Part 1: The method of finite differences[EB/OL]
- MechanicalComputing. Babbage's Difference Engine No. 2, Part 2: The method of finite differences[EB/OL]
- Wikipedia. Analytical Engine[EB/OL].
- Wikipedia. Punched card[EB/OL].
- 吳為平, 嚴萬宗. 從算盤到電腦[M]. 長沙: 湖南教育出版社, 1986.
- Plan 28
- Wikipedia. Ada Lovelace[EB/OL].
- 阿波京, 梅斯特洛夫. 計算機發(fā)展史[M]. 張修, 譯. 上海: 上呵牛科學技術(shù)出版社, 1984.