程式語言的歷史年表(科學史)#
程式語言是人類對機器下達指令的語言。從 1843 年 Ada Lovelace 為分析機寫下第一個程式,到 1950s FORTRAN/LISP 誕生、編譯器與解譯器技術成熟,再到 Python/JavaScript 與 AI 時代,程式語言史就是一部「如何讓人類思維與機器執行對接」的演化史。
本書以「推理探案」的方式,為每個歷史事件寫一篇 wiki,包含前因後果、理論與程式。每篇檔名以年份開頭。
目錄(Wiki 書篇目)#
第一幕:前史與誕生(1843–1958)#
| 年份 | 事件 | Wiki |
|---|---|---|
| 1843 | Ada Lovelace 為 Babbage 分析機寫下伯努利數程式,史上第一個程式 | 1843-AdaLovelace第一個程式.md |
| 1936 | Turing 提出圖靈機,定義「可計算」的極限 | 1936-Turing圖靈機.md |
| 1943 | Plankalkül(Zuse)設計史上第一個高階語言(未實作) | 1943-Plankalkul.md |
| 1952 | Grace Hopper 實作 A-0 編譯器,自動程式碼生成之始 | 1952-HopperA0編譯器.md |
| 1957 | FORTRAN 誕生,第一個廣泛使用的高階編譯語言 | 1957-FORTRAN.md |
| 1958 | LISP 誕生,S 表達式、遞迴、垃圾回收、Lambda 計算實作 | 1958-LISP.md |
第二幕:語言爆炸與理論基礎(1958–1972)#
| 年份 | 事件 | Wiki |
|---|---|---|
| 1958 | ALGOL 58/60:BNF 文法、區塊結構、遞迴程序,影響後世所有語言 | 1958-ALGOL.md |
| 1959 | COBOL:商業資料處理語言、英文式語法 | 1959-COBOL.md |
| 1960 | Lambda 演算與 Church-Rosser 定理成為函數式語言理論基石 | 1960-Lambda計算.md |
| 1964 | BASIC 誕生:分時系統上的解譯語言,程式教育大眾化 | 1964-BASIC.md |
| 1967 | Simula 67:類別與物件,物件導向程式設計之源 | 1967-Simula物件導向.md |
| 1968 | Dijkstra「GOTO 有害論」與結構化程式設計運動 | 1968-GOTO有害論.md |
| 1970 | Pascal 誕生:Wirth 為教學與編譯器示範設計的語言 | 1970-Pascal.md |
第三幕:型別理論與抽象化(1972–1995)#
| 年份 | 事件 | Wiki |
|---|---|---|
| 1972 | C 語言誕生:Unix 的系統程式語言、指標與手動記憶體 | 1972-C語言.md |
| 1972 | Prolog 誕生:邏輯程式設計、Horn 子句、合一演算法 | 1972-Prolog.md |
| 1973 | ML 誕生:Hindley-Milner 型別推導、多型 | 1973-ML型別推導.md |
| 1977 | Backus「能否擺脫 von Neumann 風格」演說與函數式倡議 | 1977-Backus函數式倡議.md |
| 1980 | Smalltalk-80 完成物件導向範式:訊息傳遞、影像式系統 | 1980-Smalltalk.md |
| 1983 | C++ 誕生:物件導向 + 系統程式、模板與泛型之源 | 1983-Cplusplus.md |
| 1987 | Perl 誕生:腳本語言與正則表達式、文字處理 | 1987-Perl.md |
| 1990 | Haskell 誕生:純函數式、惰性求值、型別類 | 1990-Haskell.md |
| 1991 | Python 誕生:可讀性優先、縮排語法、「 bateries included」 | 1991-Python.md |
| 1995 | JavaScript 十天誕生:原型繼承、瀏覽器語言 | 1995-JavaScript.md |
| 1995 | Java 誕生:VM、位元組碼、跨平台「寫一次到處跑」 | 1995-Java.md |
第四幕:VM 時代、腳本革命與 AI 時代(1995–至今)#
| 年份 | 事件 | Wiki |
|---|---|---|
| 2000 | C# 與 .NET 誕生:受管理執行環境、CLR | 2000-Csharp與DotNet.md |
| 2004 | Scala 融合物件與函數式;JVM 上的多範式語言 | 2004-Scala.md |
| 2009 | Go 誕生:簡潔、goroutine 併發、編譯速度快 | 2009-Go.md |
| 2010 | Rust 誕生:所有權系統、無 GC 的記憶體安全 | 2010-Rust.md |
| 2012 | Swift(2014)與現代語言設計潮流:安全、表達力、工具鏈整合 | 2014-Swift.md |
| 2016 | WebAssembly 誕生:瀏覽器中的通用位元組碼 | 2016-WebAssembly.md |
| 2020 | AI 時代的程式語言:Copilot/LLM 自動程式生成、Python 主導 ML | 2020-AI時代的程式語言.md |
因果鏈總覽#
圖靈機 (1936) ── 可計算性理論 ── Lambda 計算 (1960) ── LISP (1958) ── 函數式語言
│ │
│ └─ Backus倡議 (1977) ── Haskell (1990) ── Scala (2004)
│
├─ Plankalkül (1943) ── 高階語言概念 ── Hopper編譯器 (1952) ── FORTRAN (1957) ── ALGOL (1958)
│ │
│ ├─ COBOL (1959) ── 商業語言
│ └─ BASIC (1964) ── 解譯器/教育
│
├─ ALGOL (1958) ── BNF文法/區塊結構 ── Pascal (1970) ── C (1972) ── C++ (1983) ── Java (1995) ── C# (2000)
│ │ │
│ └─ Simula (1967) ── Smalltalk (1980) │
│ └─ Go (2009) / Rust (2010)
│
└─ 邏輯主義 ── Prolog (1972) ── AI 五代計畫
寫作方式說明#
每篇 wiki 採「推理探案」結構:
- 案發現場(前因):當時的未解之謎是什麼?誰遇到的?為何重要?
- 偵查過程(推理):設計者如何思考?關鍵靈感為何?核心技術(文法、編譯器、VM、型別系統)如何推導。
- 結案報告(後果):謎題如何解?留下什麼遺產?影響了哪些後續語言?
- 證據與工具:語言範例程式、編譯/解譯原理示意,以及 Python 模擬程式(如迷你解譯器)。