許多優秀的設計,其共同目的不是膚淺地增加表達能力(Expressiveness),而是降低
理解成本(Comprehension Cost)。
一個很好的例子:C++ 的理解成本高是眾所周知的事,而一度被認為「不入流」的
script 語言 Python,反而因易學易用(這本身也是一種極強的「表達能力」)而大受
歡迎。
這篇文章不是要證明「理解成本」是一條普遍定律,而是提出一個觀察:許多不同
知識領域中看似無關的設計選擇,似乎都朝著降低理解成本的方向演化。 這個觀察
目前還沒有標準答案,但如果它成立,「降低理解成本」也許值得被視為一條跨領域
的知識設計原則來進一步研究與驗證——本文接下來的推論,也都建立在「這是一個
值得檢驗的假說,而非已證結論」的立場上。
如果降低理解成本真的能同時解釋程式設計、CPU、Compiler、AI、數學與認知科學,
那麼它可能不只是 ClassGuidelines(我在 CSCall 專案中為 C++ class 設計訂下的
一套準則,詳見前三篇文章)的設計理念,而是一條更一般性的知識設計原則。
在討論這個假說之前,我們需要先明確定義這兩個概念:
理解(Comprehension)
一種由既有知識進行 Reconstruction(重建) 對象,並在腦中 Simulation(模擬) 其行為的過程。註:這在腦神經科學上也有「鏡像神經元(Mirror Neurons)」的說法作為類比
——即「理解」在直覺上可以類比為一種大腦內部的動態模擬過程。不過鏡像神經元
理論能否直接套用到抽象概念的理解,在神經科學界仍有爭議,這裡僅作為一種
啟發性的類比,而非嚴格論證。更貼近本文論點、且爭議較小的理論,可參考附錄
中的「基模理論」與「認知負荷理論」。
理解成本(Comprehension Cost)
理解知識時,大腦所需付出的認知或計算成本。
具體來說,理解成本的高低取決於大腦在模擬時的負荷:
這也解釋了為什麼「信念」很難改變——因為改變信念意味著既有知識網絡需要大規模地
重新建構,其「改變成本」過於昂貴。
若仔細審視各個硬核技術與知識領域,會發現許多關鍵突破都在做同一件事:降低模擬與重建的成本。
命名一致性、Coding Style、RAII、Reset 語意一致性(物件的 reset() / 重置行為
必須讓物件回到一致且有效的狀態)、單一職責原則(SRP)、Explicit 優於
Implicit……這些設計原則的共同目的,都是為了降低理解成本。
RISC 的成功不是因為指令多,而是因為每條指令都簡單、格式統一。
簡單的指令意味著邏輯線路短、構造簡單,無論是對於硬體管線(Pipeline)還是對於編譯器的生成邏輯來說,都極為容易推理與預測。
LLVM IR 並不是程式碼最終執行最快的形式,但它是共同理解形式。
它建立了統一的中介表達,使得前端語言與後端硬體解耦,大幅降低了整個編譯器生態系在擴充與優化時的理解與維護成本。
為什麼 Attention 機制比以往的 RNN 方法更成功?
其中一個重要原因在於:Attention 模型能建立顯式、結構化的資訊相關性表示,而不是像 RNN 那樣讓所有長期依賴關係都混雜在隱藏狀態(Hidden State)中。結構化的表示讓後續的資訊處理變得很清晰。
歐幾里得的《幾何原本》能流傳兩千多年,不只是因為結論正確,而是因為它把複雜的推論拆解成可以一步步追隨、在腦中重建的結構。好的證明往往不是最短的證明,而是最容易跟著走(降低模擬成本)的證明。
回到我近期在 C++ 與 BitMachine 的探索中,我整理出了四個逐漸清晰的線索:
線索一:ClassGuidelines 的核心是可預測性
Guidelines 幾乎沒有追求「寫得更快」,而是一直在追求:Reset 語意一致、
Destructor 必須成功、Move 要單純、Error 必須檢查、Object 永遠 Valid。它追求的不是 Expressiveness(表達力),而是Correctness(正確性) 與 Predictability(可預測性)。
線索二: Exception 增加了理解成本
我不是反對 Exception,而是因為它破壞了可預測性,讓大腦模擬控制流時的成本大幅提升,不能取代返回錯誤碼的地位。
線索三:BitMachine 是知識的低理解成本表示法
BM graph 很龐大,以前我一直把「龐大」當成工程問題,現在我開始懷疑:這龐大的結構可能就是理解成本本身。它試圖建立的是一種像 LLVM IR 一樣,可被完全重建(Class 能夠被重建並且被模擬)的低理解成本表達方式。
線索四:從實數退回「數石子」——認知的溯源
「將實數的理解分析至自然數的理解,也就是數石子的計數動作。」這句話看似數學,實則是認知科學。
這代表著一種嘗試:把複雜抽象的概念,拆解並還原成人類大腦最基本、成本最低的認知與物理模擬單位(實數 $\rightarrow$ 無限 $\rightarrow$ 自然數 $\rightarrow$ 計數 $\rightarrow$ 數石子/刻泥板)。
原因其實非常簡單:科學知識的累積與傳遞,受限於人類大腦有限的認知容量。
大腦的空間就這麼大,存在著嚴重的排擠效應。如果一門知識、一個架構的理解成本太高、太複雜,它就極難被簡單累積與傳遞,最終成為技術與文明進步的障礙。
「降低理解成本」不是因為規則漂亮,而是為了讓大腦在模擬時需要維護的狀態變少。
這裡我依然保持謹慎:目前這還是一個值得檢驗的假說,而不是已經證明的結論。接下來真正有價值的工作,不是再提出更多直覺,而是觀察不同領域的具體案例,是否真的都能用這個原則得到一致且有解釋力的說明。
如果從 C++、CPU、Compiler、UI、數學、AI 到認知科學都一直出現同一件事,那麼**「降低理解成本」就不是單一領域的設計指南,而是一條更一般性的知識設計原則**。這個方向,值得我們繼續驗證下去。
以下整理與本文「降低理解成本」假說相關的既有理論與文獻,供有興趣進一步查證、
或反駁本文論點的讀者參考。本文的觀察多屬個人歸納,下列理論不代表本文已被
學界證實,僅作為相近脈絡的對照與延伸。