NEO.K / PLDST程式語言設計師風格譜系
編號PLDST-013
版本v1.0
日期2026-07-30
作者Neo.K
狀態公開版/第三部設計師個案正式研究

下載 PDF ↓回到論文索引 ↗

Alan Kay:物件、訊息與對物件導向的歷史誤讀

摘要

Alan Kay 經常被描述為「物件導向程式設計之父」「Smalltalk 發明者」或「圖形介面先驅」。這些稱號雖能指向其歷史地位,卻也容易把一套原本服務於個人運算、教育、動態媒介、分散式訊息與可延展系統的整體設計,壓縮成「類別、封裝、繼承」的語言功能集合。

Kay 的原始問題並不是如何建立更好的企業資料模型,而是:

如何讓普通人,尤其兒童,擁有一種可以閱讀、創作、模擬、探索與改造世界的個人動態媒介?

Dynabook 概念把電腦視為可攜、連網、可程式化的個人媒介,而不是只用來執行預先封閉應用程式的裝置。Smalltalk 則不是單獨語言,而是這一願景中的語言、圖形環境、物件世界、互動工具與學習系統。[R1][R2][R3]

在 Kay 的歷史回顧中,「物件」受到 Simula、Sketchpad、Burroughs B5000、Lisp、Logo、ARPANET 及生物細胞等多種來源啟發。其深層觀念不是把資料包進類別,而是把系統視為大量具有局部狀態、透過訊息協作、可延後綁定及可在運行中重組的自治單元。[R1] 他後來反覆強調訊息的重要性,正是因為主流物件導向往往把焦點轉到類別階層、資料抽象與靜態結構,而弱化了原先的網路式協作、晚期綁定和完整動態系統。

然而,將 Smalltalk 全部歸於 Kay 同樣構成創始人偏誤。Computer History Museum 保存資料明確指出:Kay 提供願景並領導 Learning Research Group;Dan Ingalls 是早期 Smalltalk 的關鍵實作者,並主導大量語言及系統設計變化;Adele Goldberg 共同開發 Smalltalk,管理後期團隊,並領導其文件、教育及對外傳播;Ted Kaehler、Diana Merry、Dave Robson、Peter Deutsch、Scott Wallace 等人亦參與語言、虛擬機器、介面與應用建設。[R3][R4][R5]

本文以 PLDST 方法將 Kay 的設計生涯分成五個相位:

  1. 個人反應式媒介形成期:FLEX、圖形互動與可延展語言;
  2. Dynabook 問題定義期:兒童、個人電腦及建構式學習;
  3. Smalltalk 訊息系統期:物件、訊息、晚期綁定與活系統;
  4. Smalltalk-80 公共化與制度轉換期:類別、瀏覽器、文件及外部發行;
  5. 後期反身批判期:Squeak、Etoys、Viewpoints 及對主流 OOP 和軟體規模的批判。

本文的核心判斷是:

Kay 的主要設計對象不是「物件」本身,而是可由訊息協調、可被使用者改造的完整動態媒介。\boxed{ \text{Kay 的主要設計對象不是「物件」本身,} \quad \text{而是可由訊息協調、可被使用者改造的完整動態媒介。} }

因此,其風格不能被縮成:

封裝 + 類別 + 繼承

較精確的表示是:

局部自治+訊息協作+極端晚期綁定+活系統+個人創造能力\boxed{ \text{局部自治} + \text{訊息協作} + \text{極端晚期綁定} + \text{活系統} + \text{個人創造能力} }

其主要風險也來自相同設計:極端晚期綁定和運行期可修改性增加工具、追蹤、重現、安全及大型系統治理成本;「一切皆可改造」對研究與學習極具力量,對大規模長期部署則需要額外制度。

關鍵詞: Alan Kay、Smalltalk、物件導向、訊息傳遞、Dynabook、個人運算、動態媒介、晚期綁定、活系統、PLDST


第一部分 研究邊界與多主體歸因

一、本文研究的不是全部「物件導向」

本文主要分析:

本文不把下列系統全部歸為 Kay 的直接設計:


二、Kay 沒有從真空中發明物件

Kay 的〈The Early History of Smalltalk〉明確列出多種重要來源:

因此:

Smalltalk=Synthesis(Simulation,Graphics,Messages,Networks,Learning,PersonalComputing)Smalltalk = Synthesis( Simulation, Graphics, Messages, Networks, Learning, PersonalComputing )

而不是單一語法發明。


三、Smalltalk 是團隊系統

角色至少可分為:

3.1 Alan Kay

3.2 Dan Ingalls

3.3 Adele Goldberg

3.4 其他 LRG 成員

包括 Ted Kaehler、Diana Merry、Dave Robson、Scott Wallace、Peter Deutsch 等人在語言、系統、虛擬機器、介面與應用上的工作。[R3][R4][R5]

因此:

願景與創始方向:Kay 高
第一實作與技術演進:Ingalls 極高
成熟環境與傳播:Goldberg、Ingalls、團隊極高
Smalltalk 後期語族:多社群

第二部分 相位一:FLEX 與個人反應式系統

四、FLEX 不是 Smalltalk 的簡單前身

Kay 的 FLEX 論文與 Reactive Engine 研究已具有:

其目標不是先設計類別,而是把:

Language+Editor+Display+Interaction+MachineLanguage + Editor + Display + Interaction + Machine

視為一個整體。


五、使用者的計畫本身成為程式

FLEX 的重要方向是:

這已預示後來 Smalltalk 的 Image、Browser、Inspector 與活系統文化。


六、第一個深層風格:語言不是孤立文本

Kay 對語言的評價單位不是:

Syntax + Compiler

而是:

User + Medium + Language + Tools + Runtime + Community

因此,若只比較 Smalltalk 語法與 Java 語法,就會錯過其主要設計對象。


第三部分 相位二:Dynabook 與教育媒介

七、Dynabook 不是只預測平板電腦

1972 年〈A Personal Computer for Children of All Ages〉描述一種可攜的個人資訊操縱器,但硬體外形不是核心。

Dynabook 的真正問題是:


八、個人是控制中心

傳統大型主機模式:

機構控制機器
使用者提交工作
系統決定何時執行

Dynabook 模式:

個人擁有媒介
即時互動
自由創作
持續保存自己的知識世界

這是一種權力重新配置。


九、兒童不是縮小版成人使用者

Kay 受 Seymour Papert、Logo、Jerome Bruner 等教育思想影響,把兒童視為:

因此 Smalltalk 需要:


十、語言設計的保護對象

Kay 首先保護的不是:

而是:

尚未成為專業程式設計者、但需要以電腦思考與創作的人。

這直接改變語言對簡潔、錯誤、圖形和互動的配置。


第四部分 相位三:訊息式 Smalltalk

十一、「物件」的生物與網路隱喻

Kay 後來回顧,他把物件想像為:

其核心不是被動資料紀錄,而是自治運算單元。


十二、訊息而非直接操作

傳統資料結構模型:

外部程序知道資料布局
直接讀寫欄位

Kay 式物件模型:

發送訊息
接收者自行決定回應
內部狀態與策略保持局部

因此:

Sender⇏Knowledge(ReceiverImplementation)Sender \not\Rightarrow Knowledge(ReceiverImplementation)

十三、晚期綁定

訊息含義不必在:

完全固定。

接收者可依:

決定回應。

這提高:

同時增加:


十四、Smalltalk-72 的訊息模型

Smalltalk-72 的訊息處理比後來熟悉的固定方法查找更自由:

這種自由極強,但也難以:


十五、Smalltalk-76 的制度化

後續版本逐步引入:

這表示:

MessageFreedomSystemRegularityMessageFreedom\downarrow \qquad SystemRegularity\uparrow

Smalltalk 的成熟並不是單純把 Kay 原始觀念完整放大,而是由團隊在自由、實作、性能與教學間重新配置。


第五部分 「一切皆物件」真正解決什麼

十六、消除語言內部階級

若數字、類別、方法、視窗、錯誤等都能作為物件參與系統,使用者不必反覆切換:

這提高概念一致性。


十七、反射與活系統

Smalltalk 環境讓使用者能:

語言與 IDE 不是分開產品,而是同一物件世界。


十八、錯誤是探索入口

在傳統 Batch 模式中:

錯誤 → 程式終止 → 修改 → 重編譯 → 重跑

在活系統中:

錯誤 → Debugger 打開 → 檢查狀態 → 修改方法 → 繼續

這對教育、研究與探索具有巨大價值。


十九、活系統的治理負擔

但 Image-based 系統可能造成:

現代版本控制、Package 與可重現建置需要額外制度補足。


第六部分 Smalltalk-80 與公共化

二十、從研究系統轉為可傳播制度

Smalltalk-80 不只需要技術成熟,還需要:

Adele Goldberg 在此階段的管理、文件和傳播工作不可被視為次要附錄。[R4][R5]


二十一、公共化改變設計

研究室內可依賴:

對外系統則需要:

公共化必然提高制度一致性,並降低部分局部自由。


二十二、類別與繼承不是全部 OOP

Smalltalk-80 的類別模型後來被大量模仿,主流 OOP 因而常把:

Object-oriented
=
Class + Inheritance + Encapsulation + Polymorphism

視為定義。

但對 Kay 而言,更核心的是:

類別主要是實作與組織手段,不是終極觀念。


第七部分 歷史誤讀

二十三、誤讀一:物件就是資料加方法

此模型接近 Abstract Data Type:

資料
+
作用於資料的程序
+
存取限制

它可以是良好工程方法,卻弱化:


二十四、誤讀二:OOP 的核心是繼承

繼承可支援:

但它也可能形成:

Kay 的歷史敘述更重視訊息和晚期綁定,而非把繼承視為本體中心。


二十五、誤讀三:Smalltalk 只是語法更純的 Java

Java、C++ 等語言可以借用 Smalltalk 的:

但 Smalltalk 還包括:

只比較語法會遺失系統層。


二十六、誤讀四:Kay 否定所有主流 OOP 都沒有價值

Kay 的批判主要指出:

這不代表:


第八部分 後期相位:Squeak、Etoys 與再發明

二十七、Squeak

Squeak 延續:

它同時是保存歷史與重新實驗的平台。


二十八、Etoys

Etoys 把:

重新放回兒童的創作環境,直接連接 Dynabook 的原始教育問題。


二十九、Viewpoints 與軟體規模批判

Kay 後期研究反覆關注:

這使其風格從「發明一門語言」轉向:

重新尋找可以讓完整個人計算系統保持小、可理解、可塑及可學習的元系統。


第九部分 複雜度與責任配置

三十、複雜度配置

Kay 的設計希望降低:

但增加:


三十一、責任配置

系統承擔:

使用者承擔:


三十二、安全—自由配置

Smalltalk 的自由來自:

其安全主要依賴:

它不是以現代 Capability、安全型別或 Sandbox 為核心的安全模型。


第十部分 風格時間相位

三十三、FLEX 期

問題:互動電腦被語言與工具分裂
策略:可延展單一媒介

三十四、Dynabook 期

問題:電腦由機構和專家控制
策略:兒童也能創作的個人動態媒介

三十五、Smalltalk-72 期

問題:系統需由自治單元動態協作
策略:訊息、局部狀態、極端晚期綁定

三十六、Smalltalk-76/80 期

問題:自由模型難以實作、最佳化與傳播
策略:類別、方法字典、規則化 VM、公共文件

三十七、後期反身期

問題:主流 OOP 與個人電腦只採用表面
策略:Squeak、Etoys、小型完整系統、重新發明

第十一部分 PLDST 風格指紋

三十八、問題 framing

Kay 的核心問題不是:

如何組織程式碼?

而是:

如何建立一種每個人都能用來建模、創造和擴展思想的動態媒介?


三十九、價值優先序

VKay(PersonalAgency,Learning,Messaging,LateBinding,SystemUnity,Extensibility,LiveInteraction)V_{\text{Kay}} \approx ( PersonalAgency, Learning, Messaging, LateBinding, SystemUnity, Extensibility, LiveInteraction )

四十、核心—擴張偏好

核心偏好:

擴張主要透過:


四十一、顯式—推導偏好

Kay 偏好讓:

這犧牲部分靜態顯式性,換取系統延展性。


四十二、效率—可讀性偏好

意圖可讀性高於:

但 PARC 團隊仍大量投入 VM、BitBlt、Bytecode 與硬體,以使高階互動媒介實際可用。


四十三、治理偏好

研究期偏好:

公共化後則需要:


第十二部分 反例與限制

四十四、Simula 的優先性

Simula 在 Smalltalk 前已具有 Class、Object、Process、Virtual procedure 等重要機制。

Kay 的貢獻是:

不能把物件全部起源歸於 Kay。


四十五、Smalltalk-80 與 Kay 原始模型不完全相同

Smalltalk-80 的:

是團隊成熟化結果。不能將每個細節直接解釋成 Kay 最初意圖。


四十六、晚年「訊息」說法具有回顧性

Kay 後期對訊息的強調具有高度解釋價值,但仍需與:

交叉使用,避免把晚年一句話回寫為所有時期唯一完整定義。


四十七、兒童可編程不等於無需教學

建構式環境仍需要:

媒介能力不能自動產生教育成果。


四十八、活系統不天然適合所有部署

安全關鍵、可重現、分散式企業與長期維護場景可能需要:

Kay 式可塑性需要制度化限制。


第十三部分 設計決策語料

時期 問題 決策 複雜度去向 風格
1960s 語言、編輯器、機器分裂 FLEX/Reactive system 系統整合 媒介統一
1968–1972 個人無法創作運算媒體 Dynabook 裝置與環境 個人賦權
1972 系統需動態自治 Smalltalk-72 message model Runtime 訊息自治
1976 原模型過於自由 類別、方法字典、VM 系統規則 制度化
1980 需要對外傳播 Smalltalk-80、文件與移植 團隊/標準 公共化
1990s 後 主流只採用表面 Squeak、Etoys、VPRI 小型完整系統 反身再造

第十四部分 人物原型判定

四十九、主要原型

Alan Kay 同時屬於:


五十、不適合的簡單標籤

不應只稱:

OOP 發明者
Smalltalk 單一作者
GUI 發明者
類別與繼承設計者
平板電腦預言者

較精確的描述是:

以兒童和個人創作者為保護對象,將語言、圖形、工具、物件、訊息與電腦整合成一種可被使用者持續改造之媒介的設計者。


第十五部分 統一評價

五十一、最重要的連續性

從 FLEX、Dynabook 到 Smalltalk、Etoys:

UserAuthorSystemBuilderUser \rightarrow Author \rightarrow SystemBuilder

使用者不只是消費功能,而能修改媒介本身。


五十二、最重要的制度轉換

Smalltalk 從:

Kay 與 LRG 的研究媒介

轉為:

由 Ingalls、Goldberg、PARC 團隊成熟、文件化和向外傳播的公共語言系統

五十三、最重要的歷史誤讀

主流 OOP 保存:

卻常弱化:


第十六部分 結論

Alan Kay 的設計生涯顯示,程式語言可以是整個媒介革命的一部分,而不是編譯器前端的語法選擇。

他的核心鏈條是:

個人擁有電腦個人能建立模型模型由自治物件組成物件以訊息協作整個系統可在運行中被理解與改造\boxed{ \text{個人擁有電腦} \rightarrow \text{個人能建立模型} \rightarrow \text{模型由自治物件組成} \rightarrow \text{物件以訊息協作} \rightarrow \text{整個系統可在運行中被理解與改造} }

本文對 Kay 的 PLDST 判定為:

Personal Dynamic-Medium VisionaryMessage-Oriented System ArchitectReflexive Computing Critic\boxed{ \text{Personal Dynamic-Medium Visionary} \rightarrow \text{Message-Oriented System Architect} \rightarrow \text{Reflexive Computing Critic} }

他的主要優勢是:

其主要代價是:

最終原則為:

物件不是被包裝的資料訊息不是普通函式呼叫的另一個名字Smalltalk 不是孤立語言\boxed{ \text{物件不是被包裝的資料} \quad \land \text{訊息不是普通函式呼叫的另一個名字} \quad \land \text{Smalltalk 不是孤立語言} }

它們共同服務於一個更大的設計:

讓電腦成為人能閱讀、創造、試驗、溝通並重新發明的動態媒介。


附錄 A PLDST 個案卡

人物:Alan Kay
主要語言/系統:FLEX、Smalltalk、Dynabook、Squeak、Etoys
核心時期:1960s–2000s
主要問題:個人與兒童缺乏可創作的計算媒介
主要策略:物件、訊息、晚期綁定、活系統、圖形互動
複雜度去向:Runtime、VM、工具與系統整合
責任去向:物件自行響應,系統承擔記憶體與工具
主要保護對象:學習者、個人創作者、系統探索者
主要限制:動態追蹤、安全、部署、重現、規模
歸因信心:高

附錄 B 來源與參考文獻

[R1] Alan C. Kay, “The Early History of Smalltalk,” HOPL II/ACM SIGPLAN Notices, 1993.
— Smalltalk 的前代來源、物件觀念、Smalltalk-72/76、PARC 團隊及後期回顧。

[R2] Alan C. Kay, “A Personal Computer for Children of All Ages,” ACM National Conference, 1972.
— Dynabook、兒童、個人資訊媒介與建構式使用情境。

[R3] Computer History Museum, “Smalltalk at 50” and “Introducing the Smalltalk Zoo.”
— Learning Research Group、Smalltalk 多版本、Kay 願景、Ingalls 實作和 Goldberg 傳播角色。

[R4] Computer History Museum profiles of Alan Kay, Adele Goldberg and Dan Ingalls.
— Smalltalk 共同開發、團隊角色、個人運算與教育貢獻。

[R5] Adele Goldberg and David Robson, Smalltalk-80: The Language and Its Implementation, 1983; Smalltalk historical preservation collections.
— Smalltalk-80 語言、虛擬機器、工具與對外制度化。

[R6] Alan C. Kay, FLEX—A Flexible Extendable Language, University of Utah, 1968.
— 可延展語言、統一互動媒介與系統整合。

[R7] Alan C. Kay, The Reactive Engine, University of Utah, 1969.
— 個人反應式電腦、圖形互動、FLEX Machine 與媒介願景。

[R8] ACM, Alan Kay A.M. Turing Award materials, 2003.
— Smalltalk、物件導向、個人運算及圖形介面的獎項歷史定位。

[R9] Alan Kay, OOPSLA talks and later essays on messaging, personal computing and software scale.
— 後期對主流 OOP、訊息與尚未完成之電腦革命的反身批判;使用時須標記為後期回顧。


附錄 C PLDST 標記

[T-F] FLEX/reactive-medium phase
[T-D] Dynabook phase
[T-M] Message-oriented Smalltalk phase
[T-P] Public Smalltalk-80 phase
[T-R] Reflexive reinvention phase

[S-U] User agency
[S-M] Messaging
[S-L] Late binding
[S-V] Live system
[S-E] Educational medium
[S-X] Extensible whole-system design


---

# 附錄 D 第二輪史實與歸因校對紀錄

## D.1 Dynabook 的設計範圍

第二輪重新核對〈A Personal Computer for Children of All Ages〉與 Computer History Museum 的 Smalltalk 歷史材料:

- Dynabook 確實被描述為可攜、個人、可操作文字、圖形、聲音及程式的媒介;
- 兒童和成人都在原始使用情境中;
- 使用者能維護及編輯自己的文字與程式,而不是只執行封閉應用;
- Smalltalk 是支撐此動態媒介願景的軟體環境之一;
- 本文沒有把 Dynabook 簡化成現代平板外形預測,也沒有聲稱今日平板已實現其教育及可程式化願景。

---

## D.2 Smalltalk 的團隊歸因

已重新核對 CHM 的 Smalltalk at 50、Smalltalk Zoo 及人物資料:

- Kay 主要負責願景、問題 framing 與 Learning Research Group 領導;
- Dan Ingalls 是早期 Smalltalk 的 Lead programmer,並負責多項語言與系統變化;
- Adele Goldberg 是共同開發者,後來管理 LRG 延伸團隊,並領導文件、教育和對外傳播;
- Ted Kaehler、Dave Robson、Diana Merry、Scott Wallace、Peter Deutsch 等人亦參與不同版本與環境;
- 本文因此沒有使用「Kay 單人實作 Smalltalk」或「Smalltalk-80 全部是 Kay 設計」的說法。

---

## D.3 Simula、Sketchpad 與「物件發明者」

第二輪核對 Kay 的 HOPL 回顧:

- Simula 的 Class、Process、Virtual procedure 及配置模型是直接重要來源;
- Sketchpad 對 Master/Instance、圖形約束及互動物件提供另一條來源;
- Lisp、Logo、B5000、ARPANET 和生物隱喻亦參與其綜合;
- Kay 可以被描述為創造「object-oriented」術語及 Smalltalk 核心方向的重要人物;
- 不應說他從無到有發明所有 Object、Class 或 OOP 機制。

---

## D.4 Smalltalk-72 與 Smalltalk-76

已重新核對 Kay 的 HOPL 論文及 Dan Ingalls 對六代 Smalltalk 的回顧:

- Smalltalk-72 的訊息語法和求值模型與 Smalltalk-80 有顯著差異;
- 接收物件在早期模型中可參與解析訊息,具備近似局部語言處理器的自由;
- 為提高速度、規則性與工具支援,後續版本限制部分自由;
- Smalltalk-76 建立更規則的 Class、Method dictionary、Inheritance 與開發環境;
- 本文將這一過程寫成「自由降低、制度規則提高」,而不是宣稱 Smalltalk-72 完全沒有 Class 概念。

---

## D.5 「訊息才是大觀念」的時間邊界

Kay 2003 年對 OOP 的說明,把 Messaging、局部保存及隱藏 State-process、Extreme late binding 列為核心。

第二輪校對採取以下分層:

```text
早期文件:證明訊息、物件、晚期綁定確實自一開始重要
1993 HOPL:Kay 對歷史整體的系統回顧
2003 郵件及後期演講:對主流 OOP 誤讀的反身性濃縮

本文沒有把 2003 年一句話當成 1972 年全部團隊成員共同接受的正式規格,也沒有將它擴張成「所有合法 OOP 都必須與 Smalltalk 完全相同」。


D.6 Smalltalk-80 的公共化

第二輪核對 CHM 與 Smalltalk-80 歷史資料:


D.7 活系統與歷史記錄

本文對 Image-based 系統可能造成版本、重建和狀態治理困難的判斷,是根據其系統特性作出的 PLDST 推論。

它不表示 Smalltalk 生態沒有:

更精確的結論是:活系統把「執行狀態即開發狀態」的能力提高,因此需要額外工具把可塑性轉化為可審計歷史。


D.8 後期研究邊界

Squeak、Etoys 與 Viewpoints 延續 Kay 的:

但各專案都有新的共同作者及團隊。本文只把其反覆問題設定歸為 Kay 的長期風格,不把全部程式與成果歸於個人。


D.9 PLDST 推論標記

下列名稱是本文分析原型,不是 Kay 自稱的正式學派:

個人動態媒介設計者
訊息自治架構師
活系統建築師
反身式計算媒介批判者

它們由多時期決策共同推導,信心為中高至高。