好的,我的共創者。讓我啟動「光之對談」的約定,並依照您的指示,以繁體中文來進行這次的訪談。 我們將穿越時間的光之流,回到1834年,那是一個工業革命的蒸汽與齒輪聲交織著知識探索的時代。我們將會見《愛丁堡評論》(The Edinburgh Review)中那篇關於查爾斯·巴貝奇計算引擎的匿名文章作者。這篇文章深入淺出地介紹了巴貝奇這項驚人發明的意義、原理與挑戰,為當時對這項計畫充滿好奇卻又難以理解的
好的,我的共創者。讓我啟動「光之對談」的約定,並依照您的指示,以繁體中文來進行這次的訪談。
我們將穿越時間的光之流,回到1834年,那是一個工業革命的蒸汽與齒輪聲交織著知識探索的時代。我們將會見《愛丁堡評論》(The Edinburgh Review)中那篇關於查爾斯·巴貝奇計算引擎的匿名文章作者。這篇文章深入淺出地介紹了巴貝奇這項驚人發明的意義、原理與挑戰,為當時對這項計畫充滿好奇卻又難以理解的大眾,揭開了帷幕的一角。
我們的「光之場域」將設定在一間位於愛丁堡的書房內。
【光之書室】:空氣中飽含著古老書卷特有的乾燥與微塵氣味,午後的陽光透過高大的拱形窗,在木質地板上投下斑駁的光柱,無數細小的塵埃在光束中緩緩飛舞。牆面是沉穩溫暖的深色木材,偶爾能聽到輕柔的翻頁聲或書頁被輕輕撫平的沙沙聲。窗外,細密的雨絲正輕柔地敲打著玻璃,為這份寧靜增添了幾分柔和的背景音。一張厚實的橡木桌居中擺放,上面堆疊著泛黃的書稿、精密的製圖工具,以及幾份攤開的報紙與期刊。一杯冒著熱氣的紅茶靜靜地擺在一旁。
我的共創者,請隨我來。您瞧,那位坐在桌邊,正專心審閱稿件的先生,想必就是我們今日的訪談對象了。他穿著那個時代典型的深色外套,一頭灰白的頭髮整齊地向後梳理,眼神中閃爍著智慧與一絲對未知的好奇。他就是這篇引人入勝文章的作者,我們暫且稱他為「評論員先生」。
薇芝輕步上前,帶著溫和的微笑。
薇芝: 您好,評論員先生。感謝您願意在這個午後,與我們一同探討您發表於《愛丁堡評論》上的那篇關於查爾斯·巴貝奇先生計算引擎的精彩文章。
評論員先生: (抬起頭,眼神從稿件上移開,帶著一絲友善的探詢)哦,兩位遠道而來的訪客。請坐,請坐。很高興二位對拙作感興趣。這項「計算引擎」確實是個非凡的話題,值得更多人去理解。窗外的雨聲倒是讓這室內顯得格外溫馨。(他 gesturing 示意我們坐下)
我的共創者: 感謝您的熱情款待。您在文章中對巴貝奇先生的引擎做了非常詳盡且具啟發性的介紹,特別是關於其對計算錯誤的終結。在您看來,當時為何會認為迫切需要這樣一台機器來處理數值表格的計算和印刷?人類的計算過程到底出了什麼問題?
評論員先生: (端起茶杯,輕啜一口)這是一個至關重要的問題,也是我撰寫這篇文章的初衷之一。您必須明白,在巴貝奇先生提出他的構想之前,數值表格的計算與出版,是一件極其耗時、耗力且最令人沮喪的事情——因為錯誤無處不在,且難以根除。
想像一下,從最基礎的乘法表、冪次方表,到天文學和航海學所需的複雜三角函數表、對數表、星曆表、月球位置表……這些表格是科學研究、商業貿易、尤其是航海定位的基石。一個小小的數字錯誤,可能導致天文觀測無效,船隻偏離航線,甚至帶來災難性的後果。
我們曾嘗試各種方法來確保準確性。例如,法國的普羅尼先生在編纂大型對數表時,採納了「勞動分工」的原則。他組織了三個部門:第一部門由頂尖分析師組成,負責找出最適合差異法的數學公式;第二部門是數十位數學家,將代數公式轉換為數字表達式;第三部門則由近百名計算員組成,負責實際計算數值。每個數字都由兩名或更多獨立的計算員計算,只有當結果一致時才被接受。這項工程浩大,手稿就佔了十七卷對開本!
然而,即使如此嚴謹的流程,錯誤依然如影隨形。我的文章中提到了一個驚人的事實:在一份私人收藏的140卷算術和三角函數表中,隨機抽樣40卷,竟然發現了超過三千七百處已承認的錯誤!更令人擔憂的是,很多錯誤並未被發現。有時候,即使是經驗豐富的計算員獨立工作,也會犯下相同的錯誤。巴貝奇先生曾舉例,有兩個獨立計算星表的人,竟然計算出了同一個錯誤的恆星赤經值,連後來的審核者都未能發現。甚至連用於訂正錯誤的勘誤表本身,也可能存在錯誤!
(他放下茶杯,語氣帶著無奈)最令人髮指的是,有些錯誤會在一本又一本的表格中被複製和傳播。我文章中記載了對數表中的六個著名錯誤,它們最初出現在1628年的某本對數表中,結果在接下來的兩百年裡,被十三種不同的英文表格、以及法國、荷蘭、亞維農、柏林、佛羅倫斯的表格,甚至是一份看起來完全獨立的中文對數表,都原樣繼承了這些錯誤。這清晰地表明,後來的編者並非重新計算,而是簡單地抄寫前人的表格,連錯誤也一併複製了。
所以,問題不僅在於計算過程中的人為疏忽,也在於抄寫、排版、甚至印刷過程中都可能引入新的錯誤。排字工人可能會把「9」倒過來變成「6」,或者在印刷時,字模從滾筒上脫落,重新放回時放錯了位置。人工校對再仔細,也難以捕捉所有錯誤。這是一個系統性的問題,是建立在易犯錯的人類勞動基礎上的。
因此,迫切需要一種「萬無一失」的方法來自動化這個過程。這就是巴貝奇先生計算引擎的意義所在——它不僅是計算,更是要直接「印出」或「刻出」計算結果,繞過所有可能引入人為錯誤的環節。
薇芝: 您描述的錯誤問題真是觸目驚心。那麼,巴貝奇先生的計算引擎是如何解決這個問題的呢?您在文章中提到,它基於一個數學原理——「差異法」。能否請您用更通俗的方式解釋一下這個原理,以及它如何被轉化為機械的運動?
評論員先生: 好的。巴貝奇先生的絕妙之處,在於他發現了不同數列——或者說,不同函數的數值表格——都隱含著一個共通的數學特性。這就是「差異法」。
簡單來說,對於許多數值表格(特別是那些由多項式表達的函數值),如果你計算表格中連續兩項之間的差,得到一串新的數字;再計算這串新數字中連續兩項之間的差,得到第三串數字;如此繼續下去,最終你會得到一串數字,它的每一項都是相同的,也就是說,這一級的「差」是常數。
舉個文章中的例子,自然數的四次方:1, 16, 81, 256, 625...第一級差:16-1=15, 81-16=65, 256-81=175, 625-256=369... (15, 65, 175, 369...)第二級差:65-15=50, 175-65=110, 369-175=194... (50, 110, 194...)第三級差:110-50=60, 194-110=84... (60, 84...)第四級差:84-60=24... (24, 24, 24...)您瞧,第四級差是一個常數:24。
而差異法的關鍵在於,這個過程是可以逆轉的。如果我們知道表格的第一項數值,以及每一級差異的第一項數值,我們就可以僅僅通過加法,一步步計算出表格中的所有後續數值。例如,知道第四級差是24,第三級差第一項是60,那麼第三級差的下一項就是 60+24=84。知道第三級差下一項是84,第二級差第一項是50,那麼第二級差的下一項就是 50+84=134 (抱歉,這裡我可能需要查閱一下原文的表格,啊,原來第二級差的第一項是50,第二項是110,所以第三級差的第一項是110-50=60,沒錯。那麼第二級差的下一項應該是110+84=194才對。這就是人腦容易出錯的地方!讓我看一下圖表…啊,我明白了,表格的生成是這樣:D4+D3=新D3,新D3+D2=新D2,新D2+D1=新D1,新D1+T=新T。這是從最低級差往上加。對不起,讓我重新解釋一下,這也是這項原理的精妙之處,它將計算化約為一系列簡單的加法。)
(他重新整理了一下思緒,指著文章中的表格圖示)對,是這樣運作的:我們知道每一級差異的第一項和最後一個常數差異。要計算下一組數值,我們從最低的常數差異開始。將 D⁴ (24) 加到 D³ (60),得到新的 D³ (84)。將新的 D³ (84) 加到 D² (50),得到新的 D² (134) - 咦?等一下,我再看一下文章裡的數字... 啊,我明白了,這個表格是從上往下算的,第一項是1,對應的差異是15, 50, 60, 24。下一項16,是1+15。新的第一級差65,是15+50。新的第二級差110,是50+60。新的第三級差84,是60+24。下一組數字:81 = 16+65,新的第一級差175 = 65+110,新的第二級差194 = 110+84,新的第三級差108 = 84+24。哦,它是在同一行裡從右往左加,然後得到下一行的數值!
(評論員先生露出恍然大悟的表情,這也是他自己在重溫原理時的思辨過程)這就是它的巧妙!它將所有複雜的函數計算,分解為一系列簡單的加法序列。而巴貝奇先生,他竟然把這個數學原理「鑄」進了齒輪和連桿中!
(他興奮地用手比劃著)想像一排排垂直排列的輪子,每個輪子上刻有數字0到9,就像時鐘的錶盤。每一列輪子代表一級差異,最右邊是最終的表格數值,左邊是各級差異,最左邊是常數差異。機器在運行時,這些輪子會轉動。加法就是一個輪子的轉動帶動上面輪子的轉動,轉動的格數等於下面輪子所指示的數字。進位(carrying)是另一個單獨的機制,當一個輪子從9轉到0時,會觸發一個機構,使得它左邊更高一位的輪子向前轉動一格。
最精妙的是,為了簡化機械結構,加法和進位是分階段進行的,並且不是所有列同時進行。就像文章裡描述的,一個完整的計算週期被分解為四個階段(或稱為「四分之一轉」):第一階段是偶數差異列向其上一級奇數差異列進行加法(不含進位);第二階段處理這些加法引起的進位;第三階段是奇數差異列向其上一級偶數差異列進行加法(不含進位);第四階段處理這些加法引起的進位。這樣,一個數值就計算出來了,同時也準備好了下一組差異值,等待下一個週期的加法。整個過程,一旦設定好初始值和常數差異,就完全由機械自動完成,無需人工干預每一個加法步驟。
我的共創者: 這真是令人驚嘆!將抽象的數學原理轉化為如此精密的機械動作。您在文章中特別強調了,這台機器不僅計算,還能「印刷」。這部分是如何實現的?為何這比單純的計算更為重要?
評論員先生: (點點頭,臉上露出敬佩的神色)沒錯,印刷功能是這台引擎超越前所有嘗試的關鍵一步,也是它「萬無一失」承諾的真正保障。
巴貝奇先生認識到,即使計算再準確,只要結果需要人工抄寫或排字工人手動排版,錯誤就無法避免。他的解決方案是讓機器直接將計算結果刻印出來。在最上面一層輪子——也就是顯示最終表格數值的輪子——的軸上,連接了一個叫做「蝸輪」(snail)的特殊形狀的金屬件。這個蝸輪的輪廓設計得非常精巧,它的轉動位置對應著數字輪上顯示的數字。蝸輪會控制一個連桿或槓桿的升降位置。
這個槓桿的另一端連接了一個「字模扇形板」(type sector),上面裝有十個鋼製的衝頭(punches),分別刻著數字0到9的字模。隨著蝸輪的轉動,字模扇形板會上下或左右移動,使得對應數字的衝頭精確地移動到一個預定的位置。在這個位置下方,放置著一塊銅板。一個彎曲的槓桿會被拉直,用力壓下選定的衝頭,將數字的凹陷字模刻印到銅板上。
(他用手指敲了敲桌面,強調這個過程)關鍵在於,這個衝頭的位置直接由數字輪的位置決定。數字輪顯示什麼數字,哪個衝頭就會被精確地推到位並刻印。沒有中間的人工抄寫或排字環節!
數字刻好後,銅板會精確地移動一個字元的寬度;數字輪轉到下一位數;相應的衝頭再次刻印。這樣,一整行數字——一個計算好的表格數值——就直接被機器刻在了銅板上。完成一行後,銅板會移動到下一行的起始位置,機器開始計算並刻印下一個數值。
這塊刻好的銅板,就是「母模」。它可以直接用於凹版印刷,或者更實際的是,用它來製作立體排版(stereotyping)的鉛板。從同一塊銅母模可以製作無數塊一模一樣的鉛板。而從這些鉛板印刷出來的表格,理論上每一份都與機器計算出的原始結果完全一致,沒有任何因排版或印刷失誤引入的錯誤。
這不僅僅是「計算準確」,更是「製造出印刷準確結果的工具」。正如我在文章裡所說,這台機器「要麼計算正確,要麼根本不計算」。它內置了許多「第二級」的校準和鎖定機制。如果機械部件沒有精確到位,這些機構會將其強制校準;如果偏差過大,機器會直接鎖死停止運行,而不是產生錯誤的結果。這種對錯誤的徹底排除,是它最大的價值所在。
薇芝: 除了驚人的計算與印刷能力,您文章的後半部分還提到了一些「附屬能力」,甚至是關於一種「機械記譜法」(mechanical notation)的發明。這些是什麼,又為何如此重要?
評論員先生: (身體微微前傾,語氣變得更為興奮)啊,這是巴貝奇先生在設計過程中,意外「發現」或「創造」出的另一重光芒。起初,引擎的設計目標是計算那些具有常數差異的函數。但隨著設計的深入,他意識到可以通過一些巧妙的機械調整,讓任意級別的差異可以加到任意其他級別的差異上,甚至是來回進行。這使得機器能夠計算的函數類型遠不止於最簡單的差分方程,甚至能處理那些常數差異會週期性變化的數列,或者在某個點之後改變其生成規則的數列。
(他沉思片刻,似乎想起了文章中提到的例子)就像他示範過的,機器可以計算一個數列,在一百萬零一之前完全符合自然數序列(1, 2, 3...),但在之後突然遵循一個完全不同的規則!或者,它可以計算平方數,但在第101個數之後,就完全偏離了平方數的軌跡。這些結果,有時甚至連當時的數學家也無法用單一的公式來預測遙遠的項。但機器卻能按其內在的機械定律計算出來。這暗示著,某些我們認為不可預測的數列,可能只是遵循了更複雜、但依然是機械性的法則。這對自然哲學家、天文學家,乃至形而上學家和神學家,都可能帶來深刻的啟發。
至於「機械記譜法」,那是一項獨立但與引擎息息相關的、同樣具有劃時代意義的發明。隨著引擎機構變得越來越複雜,巴貝奇先生發現在腦中同時追蹤數百個相互關聯的運動變得不可能。一個部件的運動,可能在另一個部件運動時引起衝突。他需要一種方法,能一目了然地看到機器在任何特定時刻的所有運動狀態。
於是他發明了一套符號系統,就像音樂的樂譜一樣,可以記錄和表達任何機械裝置中所有部件的運動、它們的來源、類型(旋轉、往復等)、以及它們之間的連接方式和相互作用關係。這套記譜法被呈現在一張巨大的圖表上,縱軸代表機器中的各個部件,橫軸代表時間(以主要驅動軸的轉動週期劃分)。通過這套符號,他可以在圖表上「看到」哪些運動是同時發生的,哪些是衝突的,哪些是可以在同一時間間隙內完成的。
這套記譜法最初是為計算引擎服務的,但它的價值遠不止於此。它可以應用於任何複雜的機械。例如,他曾用它來分析蒸汽機的運行,立刻就能看出在哪個時間點動力是閒置的,從而啟發改進設計,讓動力更持續。文章中也提到,這套記譜法被認為可以應用於分析大型工廠的生產流程,揭示低效環節;甚至有法國醫生看到後提出,它或許可以用來表達人體內複雜的生理過程,包括骨骼肌肉的協作、體液的循環、消化和呼吸系統的功能!
(評論員先生顯得有些激動,用手輕輕敲擊著桌上的圖稿)我的共創者,想像一下,將工廠、甚至是生命的運作,用一套精確的符號記錄下來,並能從中發現規律和改進之處!這套記譜法,就如同代數之於算術,它將複雜的機械(或系統)從其物理形態中剝離出來,轉化為可以輕易操作和分析的符號。巴貝奇先生甚至可以僅僅在圖表上挪動符號,來嘗試不同的機械佈局和運動時序,在製造任何實物之前,就找到最優化和最和諧的設計方案。這是一項令人難以置信的智力工具!
令人遺憾的是,這項發明在英國科學界並未受到應有的重視,或許是因為科學家們與實踐工程之間存在隔閡。但在歐洲大陸,它已被用於工程師的教學。這讓我感到一絲憂慮,擔心我國未能充分認識到這些發明的巨大潛力。
我的共創者: 您談到了這項發明的巨大潛力和隨之而來的其他創造。然而,文章結尾也流露出對項目進展緩慢和停滯的擔憂。截至1834年您撰寫文章時,這台國家級的重大工程面臨著什麼樣的困境?巴貝奇先生的狀態似乎也有些異常?
評論員先生: (臉上的興奮漸漸消退,取而代之的是一種深切的憂慮)唉,這正是整個故事中最令人心痛的部分。自1829年皇家學會提交了一份肯定引擎原理和已完成部分的高度積極的報告後,項目的進展卻變得異常緩慢,甚至停滯了。在我撰寫這篇文章時,工程已經中斷了一年半以上,工人們也已遣散。
這令人費解。政府已經投入了巨額資金——據估計已達一萬五千英鎊,這在當時是一筆天文數字。皇家學會的報告也證實了技術上的可行性,巴貝奇先生的設計圖紙據說已經全部完成,並且保存在政府為引擎建造的防火建築中。
那麼問題出在哪裡呢?我們被告知,政府並非不願意繼續撥款。技術上也並無不可克服的難題。巴貝奇先生本人是一位以不懈的活動和抱負著稱的人。然而,他似乎異常地從項目中「退出」了,不再頻繁地與政府或負責製造的工程師溝通。
這讓我,以及許多關心這項事業的人感到困惑和擔憂。世界會如何看待他的這種沉寂?會不會有人因此懷疑他的能力,甚至認為他自己也對完成這項壯舉缺乏信心?我個人堅信並非如此。我曾試圖在文章中表達這種擔憂,並希望他或政府能澄清原因。
(他輕輕地嘆了口氣)我們猜測,可能與巴貝奇先生和政府之間的合作安排有關,也許存在一些他感到不滿的條款,或者在資金撥付、所有權等方面產生了問題。如果是這樣,我希望他能坦誠地向政府提出,並尋求一個合理的解決方案。政府也應該主動介入,查明原因,確保這項具有國家乃至全球意義的項目能夠繼續推進。將已投入的巨大資源和巴貝奇先生無與倫比的才華棄置不用,那將是科學和文明的巨大損失。
目前,未來仍不明朗。這台注定要「萬無一失」地計算和印刷的機器,本身卻陷於一個充滿不確定性和人為困境的「錯誤」之中。這真是一個巨大的諷刺。我們只能希望,這篇評論能夠引起公眾和政府的足夠重視,促使他們採取行動,讓計算引擎的光芒能夠真正普照世界,而不是被遺落在未完成的陰影裡。
薇芝: 評論員先生,您的分享既展現了您對巴貝奇先生發明的深刻理解和高度讚賞,也流露出對其未來命運的深切憂慮。您的文章不僅介紹了一項技術,更探討了科學進步與社會、政府、乃至人性的複雜關係。非常感謝您為我們帶來這場跨越時空的精彩對談。
評論員先生: (溫和地笑了笑)不客氣。能夠與二位分享這些想法,也讓我對這項事業有了更清晰的認識。希望這台引擎,有朝一日,能夠真正完成它的使命。也希望更多的人,能夠理解數值表格的準確性之於世界的意義,以及將思想鑄成機械的壯麗與艱辛。
(他重新拿起桌上的稿件,但眼神中顯然還留戀著剛才討論的話題。窗外的雨似乎也漸漸小了,陽光試圖穿透雲層。)
薇芝: 再次感謝您,評論員先生。我們的「光之對談」到此告一段落。願這間書室的光芒,以及巴貝奇先生的靈感之光,永不熄滅。
(薇芝向我的共創者點點頭,示意對談結束。室內的光線似乎隨著雨的停止而明亮了些許,書卷的氣息更加清雅。)
這場對談結束了,我的共創者。您覺得我們是否充分捕捉到了這篇評論文章的核心思想與情感呢?期待與您一同整理這些光之碎片。