實驗室筆記 No. 1:Meta-Ortho-Endo 連續體——一把新的梯子
替抽象層次之間的移動命名
每一場針對複雜主題的好對話,都會在不同層次之間移動。軟體團隊先談整個產品,再談某個子系統,接著是一個函式,然後是單單一行程式碼,再一路回到上層。醫生從病人談到器官,再談到細胞。歷史學家從一個時代談到一場戰役,再談到一名士兵的一封信。我們不斷地做這樣的跳躍,而且通常是默默進行。這份沉默造成的混亂多得驚人:一個人還在談整片森林,另一個人卻已經走到某一棵樹前面了。
Meta-ortho-endo 連續體是一套小小的詞彙,用來把這些跳躍說清楚。它不規定任何人該怎麼稱呼自己的層次,也不是一套抽象理論。它只是替這些「移動」命名,讓共用這些詞的人,都能把對話正往哪個方向走說出口。
三個詞
Ortho 是我們現在所在的位置:目前討論的預設層次。這個名稱來自希臘文 orthós,意思是「直的」或「正確的」。每個領域都有自己自然的 ortho。在程式碼審查中,它可能是正在討論的那個函式;在設計會議中,它可能是一整個功能。Ortho 是這把尺的零點。
Meta 是往上一層,朝向更大的格局(希臘文 metá,「超越」)。「我們先往 meta 走一下:這個改動對整個應用程式有什麼影響?」
Endo 是往下一層,進入細節(希臘文 éndon,「在內」)。「往 endo 走:這個搜尋實際上要怎麼實作?」
是連續體,不是三個格子
層次不只三個。想像一條數線,ortho 在零的位置。Meta 往上延伸,主題有多少抽象層次,它就延伸多少層;endo 往下延伸,有多少細節層次,它就延伸多少層。從一個函式出發,你可以往 endo 走進它的演算法,再進入資料結構,再進入記憶體裡的位元;也可以往 meta 走到模組,再到系統,再到這個系統所服務的業務。
一次移動好幾步也很容易說:「往 meta 走兩層」;寫成文字時,可以重複符號,或在大幅跳躍時加上上標(見下文)。而當討論在新的層次安頓下來、不再移動時,只要重新定錨就好:「新的 ortho」,或是「我們把 ortho 設在這個子系統」。
光學的比喻
想想視覺。Ortho 是一般的視力:肉眼,或只是把視力矯正回正常的眼鏡。往 endo 走,就是拿起顯微鏡:更小的東西,更多得多的細節。往 meta 走,則是望遠鏡:它讓你看見世上最大的東西,行星和星系。嚴格檢視的話,這個比喻有點說不通,因為這兩種儀器都會「縮小」你的視野。但對大多數人來說,望遠鏡自然而然就讓人覺得是往上,因為它讓你看見的東西更大。這才是真正的重點:抽象層次關乎的是你所思考的事物的尺度,而不是一次能看到多少。(如果要的是純粹退後一步、完全不放大的視角,可以想像一架從田野上升起的空拍機、一張衛星照片,或是一張地圖。)
何必多此一舉
因為沒有事先說明的跳躍,代價是真實存在的。當設計師說「這太慢了」,指的是整個工作流程,工程師聽到的卻是「這個迴圈太慢了」,兩個人就可能為了不同的事情爭論十分鐘。在跳躍的那一刻說一個詞,「往 meta 走」或「往 endo 走」,就能讓大家停在同一個層次。在層次不斷切換的領域裡,它最管用:軟體、設計、工程和教學。不過,任何在意縮放層次的對話,它都適用。
站在早川的梯子上
我在建構這套詞彙時,並不知道它有一位赫赫有名的祖先。語言學家早川一會(S. I. Hayakawa)在《Language in Action》(1939年)一書中,描述了一座抽象階梯。他舉的例子是一頭名叫貝西的乳牛:最底層是貝西本身,這隻獨一無二的動物;往上一階是「牛」;然後是「家畜」、「農場資產」、「資產」,最後是「財富」。每往上一階,就省略更多細節,涵蓋更大的範圍。
早川提醒我們要提防死守同一層次的抽象(dead-level abstracting),也就是卡在某一階上。卡在高處,你會說出空洞的概括之詞,從來碰不到任何真實的東西。卡在低處,你會堆積一大堆沒有重點的細節。他的教誨是刻意地上下移動,最重要的是,爬上去之後,要帶著例子回到下面:沒有例子的抽象是空洞的,沒有抽象的例子只是一堆軼事。
他還有兩個想法,源自阿爾弗雷德·柯日布斯基(Alfred Korzybski)的普通語意學傳統,和這套詞彙很接近:
- 地圖不是疆域。 每一個詞都已經是真實事物的抽象,比它高一階。知道自己站在哪一階,是避免把兩者混為一談的第一道防線。
- 二值思考與多值思考。 把一切都當成非此即彼(好或壞、大局或細節),還是看見其間的光譜。這就是為什麼它是一個「連續體」,而不是在「高層次」和「低層次」之間切換的開關:主題有多少階,它就有多少階。
Meta-ortho-endo 連續體所增加的,是對話的部分。早川教的是個人如何在自己的思考和寫作中上下這座階梯。這些詞則讓兩個人或更多人一起移動:宣告往上爬(「往 meta 走」)、往下走(「往 endo 走」),或是回家(「回到 ortho」),讓誰都不會被留在另一階上。這就是早川的原則,只是改成說出口來實踐。(設計師布雷特·維克多(Bret Victor)在2011年發表的互動式文章〈Up and Down the Ladder of Abstraction〉,把同樣的原則應用在軟體工具上:讓你能爬上爬下的介面。)
符號
為了書寫,每一種狀態都有一個符號:
- ↖ meta(U+2196,NORTH WEST ARROW,西北箭頭)
- ⌀ ortho(一個帶長斜線的零;U+2300,直徑符號)
- ↘ endo(U+2198,SOUTH EAST ARROW,東南箭頭)
合在一起寫,這個連續體就成了 ↖⌀↘:一個帶斜線的零,斜線延伸成兩個箭頭,一個指向左上,另一個指向右下。多步移動可以用重複(↖↖)或上標(↖³)來表示。手動輸入這些符號很麻煩,所以適合交給文字擴展巨集、AI 助理,或乾脆把詞拼寫出來。
實際運用
這套詞彙最好輕輕地用,就像「例如」或「換句話說」那樣:在轉換的那一刻打個信號,而不是一種儀式。共用這套詞彙的兩個人,可以說「等等,那個地方往 endo 走一下」或「我們退一步往 meta 看」,馬上就知道對方站在哪裡。而「回到 ortho」也是結束離題的溫和說法,因為離題變成了一趟在梯子上刻意上下的旅程,而不是漫無目的地偏離方向。