← Archive
lm-002200 · 2026-08

PLDST-005_風格的時間相位_設計師思想語言演化與社群治理如何分離_v1.0

下載 MD 檔 ⬇

風格的時間相位:設計師思想、語言演化與社群治理如何分離

英文名稱: Temporal Phases of Design Style: Separating Designer Thought, Language Evolution, and Community Governance
系列: Programming Language Designer Style Taxonomy(PLDST)
文件編號: PLDST-005
版本: v1.0
日期: 2026-07-30
作者: Neo.K
文件狀態: 公開版/第一部封頂論文


摘要

程式語言設計師常被賦予一個看似穩定的終身標籤:

  • Wirth 代表極簡;
  • Stroustrup 代表相容性與零額外成本;
  • Guido 代表可讀性;
  • Matz 代表程式設計者愉悅;
  • Rust 代表安全;
  • Go 代表簡潔。

這些標籤可以作為初步索引,卻容易將數十年的思想、技術與制度演化壓縮為一個靜態人格。設計者可能改變觀點;語言可能在創始者離開後繼續演化;共同體可能把創始原則制度化,也可能以相同口號支持與原意不同的決策;向後相容可能把早期偶然選擇固定成永久表面;工具與生態還可能建立一套規格之外的「事實語言」。

Niklaus Wirth 從 Pascal 走向 Modula-2 時,曾為修正 Pascal 的缺陷而犧牲向上相容;到了 Oberon,他又依新硬體、系統實作經驗與對軟體膨脹的反思進一步縮減語言。Python 從 Guido van Rossum 的 BDFL 裁決轉為 Steering Council 治理。Rust 使用 Edition 機制,讓部分不向後相容的語法與解析變更採明確 opt-in,同時允許不同 Edition 的 crate 互操作。Go 透過 Go 1 Compatibility Promise 將穩定性變成長期制度承諾,並在 Go 1.21 進一步建立與語言版本相關的相容行為。C++ 的創始設計進入 WG21 後,演化受到多國標準化、既有程式與提案制度共同塑造。ECMAScript 新功能則經 TC39 的 Champion、階段成熟、實作與共識流程進入年度規格。[R1][R2][R3][R4][R5][R6]

本文提出 設計風格時間相位模型(Temporal Phase Model of Design Style, TPM-PL),將下列三條時間線分離:

Σdesigner(t)Llanguage(t)Ggovernance(t)\boxed{ \Sigma_{designer}(t) \neq L_{language}(t) \neq G_{governance}(t) }

其中:

  • Σdesigner(t)\Sigma_{designer}(t) :設計師思想與直接決策風格;
  • Llanguage(t)L_{language}(t) :語言規格、實作、工具與生態的實際狀態;
  • Ggovernance(t)G_{governance}(t) :誰能提出、批准、否決與維護變更。

本文進一步定義七個時間相位,以及八種風格流變:

  • 保留;
  • 放大;
  • 弱化;
  • 反轉;
  • 化石化;
  • 分岔;
  • 制度化;
  • 回顧性重構。

核心命題為:

早期設計原則的延續⇏創始者仍在做決定\boxed{ \text{早期設計原則的延續} \not\Rightarrow \text{創始者仍在做決定} }

以及:

語言今天呈現某種風格⇏創始者在所有時期都持有相同觀點\boxed{ \text{語言今天呈現某種風格} \not\Rightarrow \text{創始者在所有時期都持有相同觀點} }

PLDST 對一位設計師的正確輸出,不應是一個跨越終身的固定分數,而應是一組具有時間、決策範圍、治理背景、證據與信心的風格相位:

Σd={Σd,t1,Σd,t2,,Σd,tn}\Sigma_d = \{ \Sigma_{d,t_1}, \Sigma_{d,t_2}, \dots, \Sigma_{d,t_n} \}

關鍵詞: 程式語言設計、時間相位、語言演化、設計師思想、社群治理、向後相容、Edition、標準化、PLDST


第一部分 為何風格需要時間維度

一、靜態標籤的便利與危險

靜態標籤很方便:

某人=極簡
某語言=安全
某共同體=保守
某委員會=功能擴張

但它會隱藏四個問題:

  1. 設計師在不同年代可能面對不同問題;
  2. 同一原則在不同規模下可能導致相反決策;
  3. 語言進入制度後,決策者已經改變;
  4. 今日特徵可能只是歷史相容性,而不是當代偏好。

二、個人思想不等於語言狀態

設計者可以:

  • 後悔早期選擇;
  • 提倡新的方向;
  • 不再具有正式權力;
  • 離開專案;
  • 轉向另一種語言;
  • 以回顧方式重新解釋過去。

但語言中的既有程式與相容承諾不會因此消失。

因此:

ΔΣdesigner⇏ΔLlanguage\Delta\Sigma_{designer} \not\Rightarrow \Delta L_{language}

設計者改變思想,不代表語言能同步改變。


三、語言狀態不等於治理偏好

某個歷史特徵被保留,可能是因為:

  • 委員會仍然喜歡它;
  • 不能破壞既有程式;
  • 缺乏遷移工具;
  • 多實作無法同步;
  • 生態成本過高;
  • 沒有人願意投入修改;
  • 正在等待下一個 Edition 或 major version。

因此:

FeaturePresent(t)⇏FeaturePreferred(t)FeaturePresent(t) \not\Rightarrow FeaturePreferred(t)

四、治理制度不等於社群結果

正式制度可能批准某功能,但生態:

  • 不採用;
  • 只在特定領域採用;
  • 建立 Linter 禁止;
  • 以 Framework 包裝;
  • 形成不同慣例。

反之,一個未進入核心的模式也可能因程式庫與工具而成為事實標準。


第二部分 三條獨立時間線

五、設計師思想軌跡

定義:

Σd(t)=(Problems,Values,Tradeoffs,RejectedChoices,Responsibility,Complexity,GovernancePreference)t\Sigma_d(t) = ( Problems, Values, Tradeoffs, RejectedChoices, Responsibility, Complexity, GovernancePreference )_t

它只涵蓋能合理歸因於設計者本人的材料:

  • 原始文章;
  • 演講;
  • 訪談;
  • 直接設計;
  • 親自拒絕;
  • 具有裁決權時的決定。

六、語言技術軌跡

定義:

L(t)=(Syntax,Semantics,TypeSystem,Runtime,Libraries,Tools,Implementations,Compatibility)tL(t) = ( Syntax, Semantics, TypeSystem, Runtime, Libraries, Tools, Implementations, Compatibility )_t

它回答:

某個時間點,使用者實際面對的是什麼語言?


七、治理權力軌跡

定義:

G(t)=(Proposal,Review,Approval,Veto,Release,Maintenance,Representation)tG(t) = ( Proposal, Review, Approval, Veto, Release, Maintenance, Representation )_t

它回答:

  • 誰能提案?
  • 誰能要求修改?
  • 誰能接受?
  • 誰能阻止?
  • 誰控制 Release?
  • 誰維護規格與實作?

八、生態使用軌跡

雖然核心模型以三線為主,完整研究還應保存:

E(t)=(Adoption,Idioms,Libraries,Frameworks,Education,Organizations,Constraints)tE(t) = ( Adoption, Idioms, Libraries, Frameworks, Education, Organizations, Constraints )_t

因為語言的有效風格常由生態而非規格單獨決定。


九、觀察到的風格

某時間點外界感受到的語言風格可表示為:

OL(t)=αtΣd(t)+βtL(t)+γtG(t)+δtE(t)+ϵtX(t)O_L(t) = \alpha_t\Sigma_d(t) + \beta_tL(t) + \gamma_tG(t) + \delta_tE(t) + \epsilon_tX(t)

其中 X(t)X(t) 是硬體、平台、公司與時代限制。

各權重會隨時間改變。創始期通常 αt\alpha_t 高;制度成熟後, γt\gamma_tδt\delta_t 可能上升。


第三部分 七個時間相位

十、相位一:問題孕育期

特徵:

  • 尚無正式語言;
  • 設計者批判既有工具;
  • 問題 framing 尚在形成;
  • 設計替代方案多;
  • 後來核心原則可能尚未明說。

主要資料:

  • 早期備忘錄;
  • 前代專案;
  • 實驗;
  • 組織問題;
  • 個人回憶。

風險:

  • 以後來成功敘事回寫早期動機。

十一、相位二:創始凝結期

特徵:

  • 核心語法與語義形成;
  • 第一個實作;
  • 小型團隊;
  • 個人裁決權高;
  • 變更成本低;
  • 可接受大幅重寫。

此時最適合研究個人設計風格,但仍需列出共同設計者與實作者。


十二、相位三:公開擴張期

特徵:

  • 外部使用者加入;
  • 新領域採用;
  • 程式庫與工具增加;
  • Bug 與邊界案例暴露;
  • 原始原則接受壓力測試。

此時可能發生:

  • 原則被放大;
  • 原則被修正;
  • 功能快速加入;
  • 核心團隊擴張;
  • 實作者權重上升。

十三、相位四:制度化期

特徵:

  • PEP/RFC/Proposal;
  • Core Team;
  • Council;
  • Committee;
  • 正式 Release;
  • Stability process;
  • Feature gate。

個人偏好開始被轉譯成可重複制度。


十四、相位五:相容性鎖定期

當程式、生態與組織大量依賴既有行為後:

Freedomdesign(t)Freedom_{design}(t)\downarrow Costchange(t)Cost_{change}(t)\uparrow

此時保留舊特徵不一定表示贊同,而可能是:

  • 相容承諾;
  • 遷移成本;
  • 多實作;
  • 教材;
  • 信任。

十五、相位六:後創始者期

創始者不再具有最終裁決權,可能:

  • 退出;
  • 退休;
  • 轉為顧問;
  • 只保留象徵性影響;
  • 與現行制度意見不同。

研究此相位時應主要分析制度與共同體,而不是持續替創始者記帳。


十六、相位七:反身重構期

成熟共同體開始主動管理自己的歷史:

  • Edition;
  • Migration;
  • Deprecation;
  • Compatibility mode;
  • Retrospective;
  • Governance reform;
  • Style reform;
  • Tool-assisted rewrite。

語言不再只是演化,而是建立「如何演化」的二階機制。


第四部分 八種風格流變

十七、保留 Conservation

創始原則在後續制度中持續被支持。

例如:

  • 小型核心;
  • 可讀性;
  • 向後相容;
  • 零額外成本。

保留需要證據:

  • 後期正式文件;
  • 重複決策;
  • 反例處理;
  • 制度化規則。

十八、放大 Amplification

共同體把原始傾向推得更遠。

例如:

  • 原始設計只偏好安全,後來加入更完整的 Lint、Proof 或 Supply-chain policy;
  • 原始語言重視可讀,後來 Formatter 與 Style guide 將其制度化。

放大後的結果不能完全回寫成創始者本人主張。


十九、弱化 Attenuation

原始原則仍存在,但因生態與相容性而降低優先級。

例如:

  • 小型語言核心在大型程式庫與 Framework 下不再等同簡單使用經驗;
  • 自由表達在大型組織 Style guide 中受到限制。

二十、反轉 Inversion

後來制度採取與創始期相反的方向。

可能原因:

  • 規模改變;
  • 安全事故;
  • 新硬體;
  • 新使用者;
  • 公司策略;
  • 創始者離開。

反轉不應被勉強解釋成「其實仍符合原始精神」,除非有明確證據。


二十一、化石化 Fossilization

一個早期選擇因相容性被永久保存,即使現代設計者不再偏好。

化石特徵:

存在
但不推薦
不能移除
工具警告
新程式避免
舊程式依賴

二十二、分岔 Bifurcation

同一語言或共同體形成兩條路線:

  • 核心與生態;
  • Stable 與 Experimental;
  • Strict 與 Dynamic;
  • Edition A 與 Edition B;
  • 標準與方言;
  • 原專案與 Fork。

此時不應輸出單一風格。


二十三、制度化 Institutionalization

原本依賴個人判斷的原則,被轉化為:

  • Proposal template;
  • Compatibility policy;
  • Feature gate;
  • Review team;
  • Test requirement;
  • Release cadence;
  • Council charter。

制度化是原則的程序化,不代表程序能完全保存原始價值。


二十四、回顧性重構 Retrospective Reconstruction

後來的成功、失敗與身份認同會重新敘述早期歷史。

常見形式:

  • 將偶然限制寫成有意原則;
  • 將多方共同設計寫成個人願景;
  • 將後期價值回寫到第一版;
  • 將被淘汰路線從歷史中刪除。

PLDST 必須分開:

contemporary evidence
later recollection
institutional narrative
current interpretation

第五部分 相位邊界判定

二十五、不能只按版本號分期

版本號未必代表權力或思想轉換。

真正相位邊界可能是:

  • 核心成員改變;
  • 創始者離開;
  • 第一個正式標準;
  • 相容承諾;
  • RFC 制度;
  • 多實作;
  • 重大事故;
  • 公司收購;
  • Edition;
  • Governance reform。

二十六、相位轉換指標

定義事件集合:

B={bauthority,bcompatibility,bimplementation,bcommunity,bspecification,becosystem}B= \{ b_{authority}, b_{compatibility}, b_{implementation}, b_{community}, b_{specification}, b_{ecosystem} \}

若多項指標同時改變,可判定相位轉換。


二十七、權力轉換

當下列主體改變時:

  • 最終裁決者;
  • Release owner;
  • Spec editor;
  • Core team;
  • Committee;
  • Council;

治理相位可能已變。


二十八、相容性轉換

當專案首次承諾:

  • 1.x compatibility;
  • Semantic Versioning;
  • Stable ABI;
  • Edition interoperability;
  • Deprecation period;

設計自由的時間結構已改變。


二十九、實作轉換

第一個實作與多個獨立實作之間,語言規格的地位會改變。

單一實作時:

ImplementationSpecificationImplementation\approx Specification

多實作時必須更清楚區分:

SpecificationImplementationSpecification \neq Implementation

第六部分 代表案例

三十、Wirth:相位不是單純維持極簡

Wirth 的語言歷程至少包含:

ALGOL W
→ Pascal
→ Modula/Modula-2
→ Oberon
→ Oberon-07

ETH 的專案回顧指出,他從 Pascal 轉向 Modula-2 時,願意犧牲向上相容以避免 Pascal 的缺陷;其後又因大型系統、模組、併行與硬體經驗持續修正設計。[R1]

在 Modula-2 到 Oberon 的回顧中,Wirth 也具體說明硬體變化如何改變程式碼密度、指令選擇與編譯器設計考量。[R1]

因此他的風格不是靜態的「永遠刪功能」,而更接近:

持續尋找最小且足以支撐當前系統的機制
願意以新語言修正舊語言
讓硬體與完整系統實作反饋語言設計

這是一種相位化極簡,而非固定功能數量。


三十一、Python:思想延續與治理權轉移

Python 的可讀性、實用性與開放整合原則在多個時期仍可觀察,但治理已發生根本轉換。

PEP 13 記錄:

  • Guido van Rossum 啟動 Python;
  • 自創始至 2018 年 7 月擔任 BDFL;
  • 現代治理以五人 Steering Council 為核心;
  • Council 傾向透過程序與委任而非頻繁直接裁決。[R2]

因此:

StyleContinuityAuthorityDiscontinuityStyleContinuity \land AuthorityDiscontinuity

可以同時成立。

今日 Python 仍可能延續早期風格,但新決策的正式歸因需放在 PEP、Delegate、Core Team 與 Steering Council。


三十二、Rust Edition:將斷裂限制在明確相位

Rust Edition Guide 說明:

  • 不向後相容變更會放入下一 Edition;
  • Edition 採 opt-in;
  • 既有 crate 不會自動改變;
  • 不同 Edition crate 可以互相連結;
  • 新 Compiler 支援其發布前存在的 Edition。[R3]

這建立:

LanguageVersionEditionLanguageVersion \neq Edition

Edition 不是傳統 major-version 全面斷裂,而是局部管理解析、關鍵字與部分語言變更的時間邊界。Rust Book 將 Edition 差異概括為編譯器初始解析方式的差異;本文採此官方相容模型,但不將它擴張為「所有 Rust 語義演化都只涉及 Parser」的普遍斷言。

其制度風格為:

允許修正
但限制跨代破壞
提供遷移工具
維持生態互操作

Rust 2024 的相容 Lint 與 cargo fix --edition 進一步把相位轉換工具化。[R7]


三十三、Go:相容承諾形成演化重力

Go 1 Compatibility Promise 的基本期待是:為 Go 1 撰寫的程式應在後續 Go 1 版本中持續編譯與正確運行,但官方文件也列出安全、未指定行為、工具與 Bug 修正等邊界。[R4]

這使 Go 語言設計進入相容性鎖定期。

後續語言變更需通過提案與語言審查;Go Team 對 Go 2 的討論也明確傾向拒絕尚未充分發展、收益不足以支付永久成本的功能。[R8]

Go 1.21 又透過版本與 GODEBUG 相容行為,強化新工具鏈對舊版本語義的支援。[R4]

因此 Go 的「簡潔」在後期不只是創始者審美,而是:

  • 相容承諾;
  • 高語言變更門檻;
  • 提案成本;
  • 實作與經驗要求;

共同維持的制度結果。


三十四、C++:創始原則與標準化疊加

Stroustrup 的原始設計持續影響:

  • C 相容;
  • 硬體映射;
  • 一般化抽象;
  • 零額外成本。

但 C++ 的現代演化由 WG21 多國專家、Working Groups、Papers、實作者與既有程式共同塑造。WG21 成立於 1990–1991 年,現代語言已經歷多次標準版本。[R5]

因此 C++ 應至少分為:

C with Classes 創始期
早期 C++ 擴張期
ARM/標準化前期
C++98 制度定型
C++11 現代化
後續週期性標準演化

「C++ 風格」在後期是個人原則、委員會制度與相容性歷史的疊加,而非單一意志。


三十五、ECMAScript:從快速創始到年度制度演化

JavaScript 的早期形成與今日 ECMAScript 規格制度具有完全不同的時間條件。

TC39 Process 要求 Stage 1 以上提案由委員會擁有,並透過逐階成熟處理問題、規格文字、實作、測試與共識;完成 Stage 4 的提案會進入後續年度規格。[R6]

因此今日 ECMAScript 功能應描述為:

某 Champion 推動
TC39 共同體審查
引擎實作者提供回饋
Test262 與規格編輯驗證
共識後進入規格

它不是創始者風格的直接延伸。


第七部分 思想變化的判定

三十六、何謂設計者真正改變觀點

不能只因某語言新增功能就說設計者改變思想。

至少需要:

  1. 本人後期明確陳述;
  2. 由本人直接控制的後期決策;
  3. 多項決策呈現一致方向;
  4. 排除相容性與制度強迫;
  5. 與早期材料比較。

三十七、觀點修正與問題改變

設計者可能沒有改變價值,而是問題尺度改變。

例如:

  • 個人程式轉為大型團隊;
  • 單機轉為分散式;
  • 研究原型轉為生產平台;
  • 單一實作轉為標準;
  • 小型生態轉為全球生態。

相同原則在新尺度下可能產生不同機制。


三十八、工具改變可行選項

新技術可能讓過去昂貴的設計變得可行:

  • 增量編譯;
  • IDE;
  • SMT;
  • JIT;
  • GC;
  • LSP;
  • 自動遷移;
  • AI 輔助。

因此後期決策不同,不必然表示價值反轉。


三十九、沉默不等於同意

創始者沒有公開反對某項後期功能,不代表:

  • 贊成;
  • 參與;
  • 應被歸因;
  • 功能符合原始風格。

PLDST 只依可確認決策。


第八部分 時間相位資料模型

四十、相位記錄

phase_id
designer_or_body
language
start_date
end_date
trigger_events
decision_authority
active_constraints
core_values
representative_decisions
rejected_decisions
compatibility_regime
implementation_regime
ecosystem_scale
evidence
confidence

四十一、決策時間標記

每筆決策 qq 保存:

q=(tproposal,tdecision,timplementation,tstabilization,tadoption,tdeprecation)q= ( t_{proposal}, t_{decision}, t_{implementation}, t_{stabilization}, t_{adoption}, t_{deprecation} )

同一功能的提出、接受、實作與廣泛採用可能相隔多年。


四十二、風格相位向量

Σa,p=(V,C,R,E,G,X)\Sigma_{a,p} = ( V, C, R, E, G, X )

其中:

  • VV :價值優先序;
  • CC :複雜度配置;
  • RR :責任配置;
  • EE :演化偏好;
  • GG :治理偏好;
  • XX :外部限制。

四十三、相位差

比較兩相位:

ΔΣpipj=ΣpjΣpi\Delta\Sigma_{p_i\rightarrow p_j} = \Sigma_{p_j}-\Sigma_{p_i}

輸出不只顯示數值,還要分類:

保留
放大
弱化
反轉
化石化
分岔
制度化
不可判定

第九部分 PLDST 個案研究規則

四十四、不得使用終身平均

錯誤格式:

Guido 的治理集中度:8/10

因為 BDFL 與 Steering Council 時期完全不同。

正確格式:

創始/BDFL 期:最終裁決高度集中
後 BDFL 期:個人創始影響仍在,但正式權力轉移至 Council

四十五、人物與語言同時分期

每個人物個案至少建立兩張表:

設計師思想相位

早期問題
核心形成
公開回顧
後期修正
退出後觀點

語言演化相位

原型
首次發布
穩定版本
治理制度
相容鎖定
後創始者

兩張表不得強制一一對齊。


四十六、制度變更必須單獨成段

若出現:

  • BDFL 退出;
  • Council;
  • RFC;
  • Edition;
  • ISO;
  • Stage process;
  • Compatibility promise;

必須說明它如何改變決策權重。


四十七、歷史特徵分類

每個現存特徵標記為:

active preference
compatibility fossil
institutional compromise
ecosystem convention
implementation constraint
deprecated legacy

第十部分 時間相位下的風格比較

四十八、同時期比較

比較設計者應優先選擇相近時期與規模:

  • 1970 年代研究語言;
  • 1990 年代商業物件語言;
  • 2010 年代系統語言;
  • 成熟標準化語言。

避免以現代工具要求早期設計。


四十九、跨時期比較

跨時期比較應問:

  • 哪些問題已被工具消除?
  • 哪些相容成本不同?
  • 硬體有何變化?
  • 使用者規模有何變化?
  • 治理制度有何變化?

五十、同一設計者跨作品比較

這是辨識深層風格的重要方法。

例如 Wirth:

若特徵改變但取捨規則重複
→ 深層風格可能保留

若取捨規則也改變:

→ 思想相位可能轉換

第十一部分 PLDST SKILL 規格

五十一、輸入

designer
language
time_range
decision
version
governance_event
source_documents

五十二、處理管線

重新網路搜尋
→ 時間線建立
→ 人物/語言/治理三線分離
→ 相位邊界偵測
→ 決策歸因
→ 風格流變分類
→ 相容性化石檢查
→ 回顧性重構檢查
→ 反例搜尋
→ 第二輪事實校對
→ 報告

五十三、相位邊界演算法雛形

for each event:
    if authority changed:
        add governance boundary
    if compatibility regime changed:
        add compatibility boundary
    if implementation count changed materially:
        add implementation boundary
    if founder exited:
        add post-founder boundary
    if edition/major migration introduced:
        add reflexive-evolution boundary

merge nearby boundaries
require source evidence
assign confidence

五十四、輸出 JSON 雛形

{
  "subject": "Python governance style",
  "phases": [
    {
      "name": "BDFL phase",
      "authority": ["Guido van Rossum"],
      "style": {
        "decision_centralization": "high",
        "delegation": "present"
      }
    },
    {
      "name": "Steering Council phase",
      "authority": ["elected steering council"],
      "style": {
        "decision_centralization": "collective",
        "delegation": "high",
        "formal_process": "high"
      }
    }
  ],
  "continuities": ["PEP-based public design"],
  "discontinuities": ["final authority"],
  "founder_attribution_limit": "post-2018 decisions require separate attribution"
}

五十五、SKILL 禁止事項

不得:

  • 用目前語言狀態代表創始期;
  • 用創始期思想代表現代制度;
  • 用版本號自動判斷思想轉變;
  • 把相容保留寫成現代偏好;
  • 把創始者沉默寫成支持;
  • 把制度口號直接當實際權力;
  • 把回顧文章當唯一歷史來源;
  • 用一個終身分數覆蓋多相位;
  • 忽略硬體、公司與實作變化。

第十二部分 對第一部方法論的整合

五十六、PLDST-001:決策風格

第一篇建立:

Σd,t=(Context,Problem,Values,Complexity,Responsibility,Evolution)\Sigma_{d,t} = ( Context, Problem, Values, Complexity, Responsibility, Evolution )

本篇正式將 tt 從標記提升為核心分析維度。


五十七、PLDST-002:複雜度配置

複雜度配置會隨相位改變:

  • 創始期願意破壞相容;
  • 成熟期把成本移入治理;
  • Edition 把成本分期;
  • 工具把遷移成本攤銷。

因此:

C(d,t)C(d)\mathbf{C}(d,t) \neq \mathbf{C}(d)

五十八、PLDST-003:責任配置

責任也會隨制度轉移:

創始者裁決
→ Core team
→ Council/Committee
→ Tool/Migration/Compatibility policy

所以:

Resp(a,k,t)Resp(a,k,t)

必須帶時間索引。


五十九、PLDST-004:多主體歸因

上一文建立:

CreditCausalityAuthorityAccountabilityMaintenanceCredit \neq Causality \neq Authority \neq Accountability \neq Maintenance

本篇補充:這五種歸因都會隨時間改變。


六十、第一部統一模型

PLDST 第一部的完整分析單位為:

D=(Actor,Decision,Context,Time,Style,Complexity,Responsibility,Attribution,Governance,Evidence)\boxed{ \mathfrak{D} = ( Actor, Decision, Context, Time, Style, Complexity, Responsibility, Attribution, Governance, Evidence ) }

這將成為第二部風格原型與第三部人物個案的共同方法。


第十三部分 限制

六十一、相位邊界不是自然唯一

歷史是連續的,研究者畫出的相位是分析工具。

不同研究問題可能需要不同分期。


六十二、文件日期不等於思想形成日期

文章發布時間只證明觀點最晚在該時可被確認,不保證觀點在那天才形成。


六十三、制度規則不等於實際行為

正式文件可能與實際權力、公司資源與非正式影響不同。

需要結合:

  • 決議;
  • 實作;
  • 會議;
  • Release;
  • 參與者證詞。

六十四、相容性化石難以判定

一個舊特徵也可能仍受部分使用者喜愛。除非有:

  • 正式棄用;
  • 明確反對;
  • 替代機制;
  • 新程式不建議;

否則不應武斷稱為化石。


六十五、創始者思想可能多線並存

設計者可以同時:

  • 重視簡潔;
  • 接受某些複雜機制;
  • 反對某種相容;
  • 保護另一種相容。

相位分析不能把人變成單一方向向量。


第十四部分 第二輪事實校對紀錄

六十六、Wirth 的相容性與硬體回饋

已核對 ETH 官方專案回顧與〈The History of Modula-2 and Oberon〉:

  • Wirth 從 Pascal 轉向 Modula-2 時,確實選擇犧牲 upward compatibility 以避免 Pascal 缺陷;
  • Oberon 的設計與完整系統實作相關;
  • 硬體指令與記憶體特性變化確實改變了編譯器與程式碼密度考量。

本文沒有把他的思想簡化成永遠拒絕所有新功能。


六十七、Python 治理

已核對 PEP 13:

  • Guido 至 2018 年 7 月為 BDFL;
  • 當前治理以五人 Steering Council 為核心;
  • Council 具有廣泛權力,但傾向建立流程與委任。

因此本文將風格延續與權力斷裂分開。


六十八、Rust Edition

已核對 Rust Edition Guide、Rust Book 與 Edition RFC:

  • Edition 是 opt-in;
  • 不向後相容變更可放入下一 Edition;
  • 不同 Edition crate 可互操作;
  • Compiler 支援其發布前既有 Edition;
  • Rust 2024 具有遷移 Lint 與 cargo fix --edition 支援。

本文沒有把 Edition 說成完全獨立語言或傳統 major version。


六十九、Go 相容性

已核對 Go 1 Compatibility Promise 與 Go 官方相容性文章:

  • Go 1 對多數既有程式提供長期相容期待;
  • 官方明確列出有限例外;
  • Go 1.21 加強了工具鏈、語言版本與 GODEBUG 的相容模型。

本文沒有將承諾誇張為任何程式永不破壞的絕對保證。


七十、C++ WG21

已核對 WG21 官方頁面:

  • WG21 於 1990–1991 年成立;
  • 是 C++ 的國際標準化 Working Group;
  • 現代演化涉及 Papers、分組、專家與標準程序。

本文保留 Stroustrup 創始原則的持續影響,但未將全部後期標準決策歸於個人。


七十一、TC39

已核對 TC39 Process 與 ECMAScript 規格頁:

  • Stage 1 以上提案由 Committee 擁有;
  • 提案採分階段成熟;
  • Stage 4 完成後進入後續年度規格;
  • 現行規格頁會整合年度快照與已完成提案。

本文沒有把現代 ECMAScript 功能回寫成 JavaScript 創始者的直接決策。


第十五部分 結論

程式語言設計風格不是一張永久貼在人物身上的標籤。它是在特定時期、問題、權力、實作與相容條件下,透過一連串決策呈現的模式。

本文將三條時間線正式分離:

Σdesigner(t)Llanguage(t)Ggovernance(t)\boxed{ \Sigma_{designer}(t) \neq L_{language}(t) \neq G_{governance}(t) }

並加入生態與外部條件:

OL(t)=αtΣd(t)+βtL(t)+γtG(t)+δtE(t)+ϵtX(t)O_L(t) = \alpha_t\Sigma_d(t) + \beta_tL(t) + \gamma_tG(t) + \delta_tE(t) + \epsilon_tX(t)

語言風格可能經歷:

保留+放大+弱化+反轉+化石化+分岔+制度化+回顧性重構\boxed{ \text{保留} + \text{放大} + \text{弱化} + \text{反轉} + \text{化石化} + \text{分岔} + \text{制度化} + \text{回顧性重構} }

因此,PLDST 不再輸出:

某設計師一生都是某一派。

而輸出:

在某一時間相位、某組可直接歸因的決策與某種治理結構下,該設計者呈現何種優先序;後續語言與制度如何保留、修正、放大或反轉這些選擇。

第一部至此建立了完整方法論:

  1. 從語言特徵轉向設計決策;
  2. 分析複雜度被如何配置;
  3. 分析錯誤與控制責任由誰承擔;
  4. 分離創始者、共同體與制度;
  5. 以時間相位防止靜態人格化。

其統一分析物件為:

D=(Actor,Decision,Context,Time,Style,Complexity,Responsibility,Attribution,Governance,Evidence)\boxed{ \mathfrak{D} = ( Actor, Decision, Context, Time, Style, Complexity, Responsibility, Attribution, Governance, Evidence ) }

後續第二部將不再只列出「極簡、實用、安全、表達力」等抽象原型,而會用這套方法分析每一種風格在什麼情境形成、把複雜度與責任放到哪裡、如何隨時間演化,以及在何種條件下從優勢轉為負債。


附錄 A 時間相位速查

相位 主要特徵
問題孕育期 問題 framing、前代批判、實驗
創始凝結期 核心設計、第一實作、個人權重高
公開擴張期 使用者、工具、程式庫與壓力測試
制度化期 PEP/RFC/Council/Committee
相容性鎖定期 變更成本、既有程式與承諾
後創始者期 正式權力轉移、制度與共同體主導
反身重構期 Edition、遷移、治理改革、歷史修正

附錄 B 風格流變速查

Conservation
Amplification
Attenuation
Inversion
Fossilization
Bifurcation
Institutionalization
Retrospective Reconstruction

附錄 C 來源與參考文獻

[R1] Niklaus Wirth, “The History of Modula-2 and Oberon,” revised manuscript, 2006; ETH Zürich project history and Oberon language reports.
— Pascal、Modula-2、Oberon 的設計演化、相容選擇、系統實作與硬體回饋。

[R2] Python Enhancement Proposals, “PEP 13 – Python Language Governance,” and related PEP 8000-series governance records.
— BDFL 時期、2018 年治理轉換與 Steering Council。

[R3] Rust Project, The Rust Edition Guide, The Rust Programming Language, RFC 2052, RFC 3085, and RFC 3501.
— Edition 的 opt-in、跨 Edition 互操作、遷移與週期制度。

[R4] Go Project, “Go 1 and the Future of Go Programs,” “Backward Compatibility, Go 1.21, and Go 2,” and Go language proposal documentation.
— Go 1 相容承諾、例外、語言版本與 GODEBUG 相容機制。

[R5] ISO/IEC JTC1/SC22/WG21 official committee pages and Bjarne Stroustrup, The Design and Evolution of C++.
— C++ 創始設計、標準化與多階段演化。

[R6] Ecma TC39, “The TC39 Process,” and the ECMAScript specification repository.
— Champion、提案階段、委員會所有、實作與年度規格。

[R7] Rust Edition Guide, Rust 2024 migration chapters and compatibility lint documentation.
cargo fix --edition 與 Edition migration。

[R8] Go Project, “Go 2, here we come!,” “Toward Go 2,” “Proposals for Go 1.15,” and Contribution Guide.
— 語言提案門檻、功能成本、經驗與受控演化。


附錄 D PLDST 時間標記

[T-F] Founder phase
[T-C] Core formation
[T-E] Expansion
[T-I] Institutionalization
[T-L] Compatibility lock-in
[T-P] Post-founder
[T-R] Reflexive reconstruction

[S-C] Conservation
[S-A] Amplification
[S-W] Attenuation
[S-I] Inversion
[S-F] Fossilization
[S-B] Bifurcation
[S-N] Institutionalization
[S-R] Retrospective reconstruction