iT邦幫忙

0

從 C++ 類別到統一知識語言的想法(續篇4)

  • 分享至 

  • xImage
  •  

知識設計的暗線:為什麼「降低理解成本」是一條跨領域原則?

許多優秀的設計,其共同目的不是膚淺地增加表達能力(Expressiveness),而是降低
理解成本(Comprehension Cost)。

一個很好的例子:C++ 的理解成本高是眾所周知的事,而一度被認為「不入流」的
script 語言 Python,反而因易學易用(這本身也是一種極強的「表達能力」)而大受
歡迎。

這篇文章不是要證明「理解成本」是一條普遍定律,而是提出一個觀察:許多不同
知識領域中看似無關的設計選擇,似乎都朝著降低理解成本的方向演化。
這個觀察
目前還沒有標準答案,但如果它成立,「降低理解成本」也許值得被視為一條跨領域
的知識設計原則來進一步研究與驗證——本文接下來的推論,也都建立在「這是一個
值得檢驗的假說,而非已證結論」的立場上。

如果降低理解成本真的能同時解釋程式設計、CPU、Compiler、AI、數學與認知科學,
那麼它可能不只是 ClassGuidelines(我在 CSCall 專案中為 C++ class 設計訂下的
一套準則,詳見前三篇文章)的設計理念,而是一條更一般性的知識設計原則。


一、 什麼是「理解」與「理解成本」?

在討論這個假說之前,我們需要先明確定義這兩個概念:

理解(Comprehension)
一種由既有知識進行 Reconstruction(重建) 對象,並在腦中 Simulation(模擬) 其行為的過程。

註:這在腦神經科學上也有「鏡像神經元(Mirror Neurons)」的說法作為類比
——即「理解」在直覺上可以類比為一種大腦內部的動態模擬過程。不過鏡像神經元
理論能否直接套用到抽象概念的理解,在神經科學界仍有爭議,這裡僅作為一種
啟發性的類比,而非嚴格論證。更貼近本文論點、且爭議較小的理論,可參考附錄
中的「基模理論」與「認知負荷理論」。

理解成本(Comprehension Cost)
理解知識時,大腦所需付出的認知或計算成本。

具體來說,理解成本的高低取決於大腦在模擬時的負荷:

  • 需要維護多少狀態?(工作記憶體負擔)
  • 是否容易追蹤流程?(邏輯線路長度)
  • 行為是否容易預測?(例外與分支狀況)
  • 是否需要不停回頭檢查?(Backtracking 的次數)
  • 是否容易重建原本的結構?(Reconstruction 的難易度)

這也解釋了為什麼「信念」很難改變——因為改變信念意味著既有知識網絡需要大規模地
重新建構,其「改變成本」過於昂貴。


二、 跨領域觀察:降低理解成本的演化軌跡

若仔細審視各個硬核技術與知識領域,會發現許多關鍵突破都在做同一件事:降低模擬與重建的成本

1. 程式設計(Programming)

命名一致性、Coding Style、RAII、Reset 語意一致性(物件的 reset() / 重置行為
必須讓物件回到一致且有效的狀態)、單一職責原則(SRP)、Explicit 優於
Implicit……這些設計原則的共同目的,都是為了降低理解成本

  • Predictability(可預測性)> Expressiveness(表達力):語法炫技只是讓寫的人快,但可預測的結構才能讓讀的人降低維護狀態的成本。
  • 為什麼 Exception 讓控制流程較難追蹤? 不是 Exception 語法不好,而是因語言需求創造了隱形的跳躍分支,打破了局部推論(Local Reasoning),讓大腦在模擬時需要維護的狀態爆棚。

2. CPU 架構:RISC 為什麼成功?

RISC 的成功不是因為指令多,而是因為每條指令都簡單、格式統一
簡單的指令意味著邏輯線路短、構造簡單,無論是對於硬體管線(Pipeline)還是對於編譯器的生成邏輯來說,都極為容易推理與預測

3. 編譯器(Compiler):LLVM IR 的價值

LLVM IR 並不是程式碼最終執行最快的形式,但它是共同理解形式
它建立了統一的中介表達,使得前端語言與後端硬體解耦,大幅降低了整個編譯器生態系在擴充與優化時的理解與維護成本。

4. 人工智慧(AI):Transformer 與 Attention

為什麼 Attention 機制比以往的 RNN 方法更成功?
其中一個重要原因在於:Attention 模型能建立顯式、結構化的資訊相關性表示,而不是像 RNN 那樣讓所有長期依賴關係都混雜在隱藏狀態(Hidden State)中。結構化的表示讓後續的資訊處理變得很清晰。

5. 數學(Mathematics):好的證明

歐幾里得的《幾何原本》能流傳兩千多年,不只是因為結論正確,而是因為它把複雜的推論拆解成可以一步步追隨、在腦中重建的結構。好的證明往往不是最短的證明,而是最容易跟著走(降低模擬成本)的證明。


三、 四個深層線索:尋找認知的最小單位

回到我近期在 C++ 與 BitMachine 的探索中,我整理出了四個逐漸清晰的線索:

  1. 線索一:ClassGuidelines 的核心是可預測性
    Guidelines 幾乎沒有追求「寫得更快」,而是一直在追求:Reset 語意一致、
    Destructor 必須成功、Move 要單純、Error 必須檢查、Object 永遠 Valid。它追求的不是 Expressiveness(表達力),而是Correctness(正確性) 與 Predictability(可預測性)

  2. 線索二: Exception 增加了理解成本
    我不是反對 Exception,而是因為它破壞了可預測性,讓大腦模擬控制流時的成本大幅提升,不能取代返回錯誤碼的地位。

  3. 線索三:BitMachine 是知識的低理解成本表示法
    BM graph 很龐大,以前我一直把「龐大」當成工程問題,現在我開始懷疑:這龐大的結構可能就是理解成本本身。它試圖建立的是一種像 LLVM IR 一樣,可被完全重建(Class 能夠被重建並且被模擬)的低理解成本表達方式。

  4. 線索四:從實數退回「數石子」——認知的溯源
    「將實數的理解分析至自然數的理解,也就是數石子的計數動作。」這句話看似數學,實則是認知科學
    這代表著一種嘗試:把複雜抽象的概念,拆解並還原成人類大腦最基本、成本最低的認知與物理模擬單位(實數 $\rightarrow$ 無限 $\rightarrow$ 自然數 $\rightarrow$ 計數 $\rightarrow$ 數石子/刻泥板)。


四、 結論:科學知識累積的底層障礙

原因其實非常簡單:科學知識的累積與傳遞,受限於人類大腦有限的認知容量。

大腦的空間就這麼大,存在著嚴重的排擠效應。如果一門知識、一個架構的理解成本太高、太複雜,它就極難被簡單累積與傳遞,最終成為技術與文明進步的障礙。

「降低理解成本」不是因為規則漂亮,而是為了讓大腦在模擬時需要維護的狀態變少

這裡我依然保持謹慎:目前這還是一個值得檢驗的假說,而不是已經證明的結論。接下來真正有價值的工作,不是再提出更多直覺,而是觀察不同領域的具體案例,是否真的都能用這個原則得到一致且有解釋力的說明。

如果從 C++、CPU、Compiler、UI、數學、AI 到認知科學都一直出現同一件事,那麼**「降低理解成本」就不是單一領域的設計指南,而是一條更一般性的知識設計原則**。這個方向,值得我們繼續驗證下去。


附錄:延伸閱讀與相關理論脈絡

以下整理與本文「降低理解成本」假說相關的既有理論與文獻,供有興趣進一步查證、
或反駁本文論點的讀者參考。本文的觀察多屬個人歸納,下列理論不代表本文已被
學界證實,僅作為相近脈絡的對照與延伸。

認知科學

  • 認知負荷理論(Cognitive Load Theory, Sweller, 1988):主張學習與理解
    受限於工作記憶的有限容量,並將負荷細分為三種:intrinsic load(材料本身
    固有的複雜度)、extraneous load(因表達或呈現方式不佳而額外產生的負擔)、
    germane load(用於建構長期記憶基模的有效負荷)。本文所談的「降低理解
    成本」,多數情況下對應的正是砍掉 extraneous load——問題本身的難度沒有
    變,但因為表達方式改善,多餘的負擔被移除了。
  • 組塊與工作記憶容量(Miller, 1956;Cowan, 2001):早期研究認為工作
    記憶一次約可處理 7±2 個意元(chunk),後續研究修正為約 3–4 個。這給
    「需要維護多少狀態?」這條判準一個具體的數字錨點。
  • 基模理論(Schema Theory, Bartlett, 1932;Piaget):基模是儲存在長期
    記憶中、用來組織與壓縮知識的結構。熟練的理解,某種程度上就是把新知識
    掛接到既有基模上,而不必每次都從零重建——這比鏡像神經元的類比更直接
    支持本文「理解=重建」的說法,且爭議較小。

軟體工程

  • 本質複雜度 vs. 附帶複雜度(Essential vs. Accidental Complexity)
    Fred Brooks 在〈No Silver Bullet〉一文中提出的經典區分——問題本身固有
    的複雜度無法消除,但工具、語言、架構帶來的「額外」複雜度可以被設計掉。
    這與本文的核心主張幾乎是同一件事的不同講法。
  • Simple 優先於 Easy:Rich Hickey 在其著名演講〈Simple Made Easy〉中,
    區分了「simple(結構上元件少、耦合少)」與「easy(上手快、寫起來順手)」,
    主張前者才是長期可維護性的關鍵,這與本文「Predictability > Expressiveness」
    是同一命題的軟體工程版本。
  • John Ousterhout,《A Philosophy of Software Design》:以「模組深度」與
    「認知複雜度」為核心概念,系統性地討論如何設計出降低理解成本的軟體介面。

資訊理論 / 機器學習

  • 最小描述長度原則(Minimum Description Length, MDL)與 Kolmogorov 複
    雜度
    :在統計學習理論中,「好的模型」被定義為能以最短程式或最少位元
    描述資料的模型。這其實是本文所說「BitMachine 是知識的低理解成本表示法」
    在數學上的一個對應概念,值得未來進一步展開。

使用者介面設計

  • Steve Krug,《Don't Make Me Think》:UI/UX 設計領域中同源的思想,主張
    好的介面設計應該讓使用者不需要停下來思考。如果本文的跨領域清單要再擴充
    一個維度,這會是很自然的第六個例子。

*提醒邦友,使用第三方服務/API 時,請務必評估資安風險與隱私保護
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言