跳轉到

第 2 章 查爾斯·巴貝奇與愛達·洛夫萊斯:機械計算機上的第一串程式指令#

2.3 邏輯的自動化預言:為什麼 19 世紀的數學家就已經開始思考「指令與數據分離」的偉大範式?#

2.3.1 三條通往「存儲程序」的思想之路#

指令與數據分離(乃至合一存儲)並非巴貝奇的獨想,而是 19 世紀三條思想線的匯合:

  1. 織造業:Jacquard 織機(1804)以打孔卡控制織紋——「程序以物理介質存儲、可替換」已在工業中運轉;
  2. 邏輯學:布爾《思維規律的研究》(1854)證明推理可化為代數運算;De Morgan(洛夫萊斯的老師)發展關係邏輯——「思維過程可符號化」的數學基礎;
  3. 鐵路與電報:時刻表、信號系統把「調度程序」變成制度化的指令集——程序性思維滲透工業社會。

2.3.2 巴貝奇—洛夫萊斯範式的超前與侷限#

分析機的「指令打孔卡+數據儲存庫」已具程序/數據分離,且卡可被讀回(條件分支的雛形)。但它無法實現 20 世紀最關鍵的一步:程序本身存入與數據同一的記憶體(存儲程序),因而不能在運行中修改自身指令——這一步要等 1945 年的 EDVAC 報告(4.1)。超前的想像限於機械實現的物理性。

2.3.3 從邏輯到可計算性:希爾伯特的挑戰#

19 世紀末至 20 世紀初,數學基礎危機(集合論悖論)把「機械化證明」變成嚴肅問題:

  • 希爾伯特 1928 年提出 Entscheidungsproblem(判定問題):是否存在機械程序判定任意數學命題?
  • 1936 年圖靈以「圖靈機」證明其不可判定——同時意外給出「通用計算機」的數學定義(3.2 的思想源頭);
  • Church 的 λ 演算與 Gödel 的遞歸函數給出等價刻畫——「演算法」從手工技藝正式變成數學對象。

2.3.4 前因後果#

  • 前因:工業程序化+邏輯代數+數學基礎危機。
  • 事件:1854 布爾代數、1928 希爾伯特判定問題、1936 圖靈論文。
  • 後果:「演算法」獲得嚴格定義(可計算性理論);計算機從工程幻想變成數學必然——二戰的密碼戰將把這門數學推上戰場(第 3 章)。

下一章:第 3 章 圖靈與炸彈機