By Xion

宇宙如同一個 API:用物件導向程式設計理解易經

AI 翻譯免責聲明
本段內容由英文原文自動翻譯而來,可能存在歧義或理解偏差。如有疑惑,請以英文原文為準。
查看英文原文

終極遺產程式碼

figure-1

想像有一個龐大的軟體專案正在運行。它已經執行了138億年,有著兆級的連結組件,而原始程式設計師卻無處可尋。沒有文件說明,沒有 README 檔案,也沒有註解的程式碼。這就是我們的宇宙。我們用一生試圖理解它如何運作,預測它會做什麼,並理清其複雜性。

現在,如果有一本古老的書籍,經常被視為神祕的占卜書,實際上卻是另一回事呢?如果它是一份這個宏偉宇宙軟體的高階系統設計文件呢?這就是易經,或稱「周易」。本文主張,我們作為程式設計師和系統思考者,可以透過物件導向程式設計(OOP)的原則來解碼其核心邏輯。我們可以重新思考易經,不是魔法,而是一個智慧的現實模型。

由 0 與 1 組成的系統

易經的核心建立在二進位基礎之上,這比現代計算早了數千年。系統使用兩種主要的線條類型:實線,陽(⚊),以及斷線,陰(⚋)。以我們的角度來看,映射是直接且簡單的:陽為 1(主動、創造、開啟位元),陰為 0(被動、接納、關閉位元)。這是基礎的易經二元碼,是建構複雜系統的簡潔而強大起點。

我們的程式設計探索

我們這裡的目標不是占卜,而是逆向工程。我們將展開一場探索之旅,將易經的64卦——其主要的象徵結構——對映為「通用類別」與「物件」系統。透過這樣做,我們希望建立一個理解變化模式的新邏輯架構,成為程式設計師解讀存在物件模型的指南。

核心邏輯

在將易經對應到物件導向之前,我們首先必須了解其基本結構。系統的美在於其擴展性,從簡單的二元選擇建構出複雜的描述模型。這是一堂關於組合如何擴展的精彩示範。

基本的「位元」

整個系統始於二元對立,是普遍定義彼此的相反概念。

  • 陽 (⚊) 代表主動、創造與起始力量。在我們的模型中,是 1
  • 陰 (⚋) 代表被動、接納與滋養力量。在我們的模型中,是 0

這些是宇宙機器的基本位元。易經中描述的每一個複雜狀態,都是這兩個簡單值的組合。

建構「位元組」

從這些單一位元,系統創造其首個有意義的資料結構:三畫卦(trigrams)。三畫卦是由三條線堆疊而成,或視作3位元的數值。有三個位置,每個位置可以是陰或陽,因此有 2³ 即 8 種獨特組合。這八個三畫卦代表自然與家庭的基本類型——現實的主要組成元素。

三畫卦 符號 二進位 意義
乾 (Qián) 111 創造
兌 (Duì) 110 喜悅
離 (Lí) 101 附著
震 (Zhèn) 100 喚醒
巽 (Xùn) 011 溫和
坎 (Kǎn) 010 險陷
艮 (Gèn) 001 靜止
坤 (Kūn) 000 柔順

完整的「暫存器」

為了建立更詳盡且具描述性的系統,易經將兩個三畫卦結合,前後重疊,形成一個六畫的形象,稱為六十四卦(hexagram)。這是一個6位元系統,任何程式設計師都知道,6位元可產生 2⁶,即64個獨特組合。這64個六十四卦構成易經核心,代表完整的典型情境、過程和變化狀態集合。

這並非現代將二進位強行套用於古代文本。這個連結既歷史悠久也極為深刻。1703年,偉大數學家與哲學家萊布尼茲(Gottfried Wilhelm Leibniz),現代二進位算術之父,發表了《二進位算術說明》一文。他曾與在中國的法國耶穌會士若望博韋特(Joachim Bouvet)通信,博韋特寄給他64卦的排列。萊布尼茲驚嘆於見到一套完整、秩序井然的二進位系統早已存在。這古老的易經二進位碼直接驗證了他的理論,證明計算原理早就編織於遠比我們所建造的機器更古老的模式中。

龍生肖守護者:貴人與盟友能量手鍊

風水解法

龍生肖守護者:貴人與盟友能量手鍊

每日佩戴,助您在程式設計中引導古老智慧與宇宙能量。

查看產品

宏偉的比較

確立了二進位基礎後,我們現在可以應用核心比較:宇宙作為一個物件導向系統。在OOP中,我們透過定義 類別(事物的藍圖)來建模世界,再用它來創建 物件(這些事物的具體實例)。這些物件擁有 屬性(資料)和 方法(行為)。這種方法提供了一個強大的視角來審視易經。

道作為命名空間

在程式設計中,命名空間是一個容器,用來群組相關程式碼並防止命名衝突。把 (或無極,未顯化的潛能狀態)想像成最終極的頂層命名空間。它是抽象的、靜態的類別,所有現實皆由它而來。它包含所有類別和物件的潛能,卻不是一個可被實例化的物件。它是宇宙的 System 函式庫,是一切運行時的無聲背景。

六十四卦作為「類別」

這裡我們達到獨特觀點的核心。64個六十四卦不只是64個靜態符號代表64種情境。它們是 類別定義。每一卦是特定類型典型過程或情境能量的藍圖,定義與該類型相關的屬性及潛在行為。

例如,第一卦,☰☰(乾),是 創造 類別。它的定義概述純粹、無限擴張的起始力量。它是起始、突破與領導的類別。相較之下,第四十八卦,☵☴(井),可視為 基礎設施 類別。它定義了穩定、不變並賦予生命的資源,服務於群體。其屬性涵蓋深度、可靠性與維護。

情境作為「物件」

若卦是類別,那麼任何現實情境即為 物件——這些類別的具體實例。我們所面對的挑戰、管理的專案,或處理的人際關係,都是從64個通用藍圖中創建的物件。

當你創業啟動時,可以這樣創建一個 創造 類別的物件:
my_startup_launch = new Creative();

如果你的團隊正經歷溝通不良及士氣低落的困難階段,該情境可以是 險陷 類別(第29卦,☵☵)的實例:
current_team_dynamic = new Abysmal(Water);

figure-2

我們親身體驗過在除錯生產環境關鍵問題時的情境。該系統是由多個微服務組成的複雜網絡,一個錯誤從它們不可預測的交互中浮現。情況看似混亂且無法解決。用這個視角觀看,它成為第45卦,☱☷(萃)的實例——「聚集」。這改變了我們的觀點。它不再是單純的混亂,而是一個複雜元素的集合。將它視為 Gathering 類別的物件,使我們停止當它是隨機混亂,而改為尋找關鍵的「王」,即其他元素聚集的中心。結果直接引導我們找出一個隱藏的競態條件,這才是問題的真正根源。

剖析「六十四卦」類別

為了讓我們的 OOP 比較更有說服力,我們必須展示六十四卦內部組件與類別組件的明確對應。六十四卦的結構並非隨機,而是精心設計的資料結構。

屬性即特性

類別擁有定義其狀態的屬性。六十四卦的六條線即為其 屬性。它們在所有意義上是一組六個布林屬性,定義了該被創建物件的具體狀態。

我們可以這樣模型化 Hexagram 類別的屬性:

class Hexagram {
  line_1: boolean; // 0 代表陰, 1 代表陽
  line_2: boolean;
  line_3: boolean;
  line_4: boolean;
  line_5: boolean;
  line_6: boolean;
}

這六個 true/false(或 1/0)值的特定組合決定了物件所屬的 64 個類別之一。例如,擁有屬性 [1, 1, 1, 1, 1, 1] 的物件是 Creative(乾卦)類的實例。擁有 [0, 0, 0, 0, 0, 0] 的物件是 Receptive(坤卦)類別的實例。

作為變爻的方法

這或許是整個比喻中最有力的部分。易經不是一套靜態系統;其名稱意指「變化之書」。這種變動透過「變爻」的概念來編碼。當一個卦象生成時,一條或多條爻可以被標記為「變爻」,意味著它們正處於張力狀態,即將轉變為相反狀態。

在我們的物件導向模型中,變爻是一個 method。這是一個改變物件狀態的函式。當你針對一個有變爻的情況(物件)操作時,本質上就是呼叫方法:hexagram_instance.transform(line_position)

此方法執行後會引起狀態改變:該條爻的布林值被反轉。這會改變物件的六個屬性集合,代表物件從原始類別被「重新鑄造」到新的類別。原卦象代表當前情況,而變卦則代表未來潛能或變化方向。這優雅地模擬了現實過程導向的本質。

繼承與組合

良好的軟體設計傾向於組合勝過繼承。複雜的物件應該由較簡單、可重用的元件組成。易經的結構恰巧遵循此原則。一個 Hexagram 類別不是一個單一實體,而是由兩個 Trigram 物件組成。

class Hexagram {
  lower_trigram: Trigram;
  upper_trigram: Trigram;
}

這 64 個複雜類別是由 8 個較簡單、可重用的元件調色盤組成。卦象的意義來自其兩個組成三爻卦之間的互動──內外、下上兩個層面。這與我們使用簡單可重用的網頁元件構建複雜用戶界面,或用模組化函式庫打造複雜應用程式的原理相同。

禪風掛式香爐

風水解法

禪風掛式香爐

在學習時佩戴,提升專注力與清晰度,深入探索古老的風水智慧

查看產品

讓我們撰寫些「宇宙程式碼」吧

為使這整個比喻具體化,以下簡單勾勒一個概念驗證的實作範例。這將討論從純理論轉為具體模型,任何程式設計師都能理解甚至擴充。以下偽程式碼使用類似 Python 的風格撰寫以便清晰說明。

類別定義

首先,我們定義基礎的 Hexagram 類別。它將保存爻線,從預設字典(未顯示)查找名稱,並知道如何轉換自身。

# 一個簡化的類 Python 範例
HEXAGRAM_NAMES = { "111111": "Creative", "000000": "Receptive", ... }

class Hexagram:
    def __init__(self, lines: list[int]):
        # lines 是六條由 0 或 1 組成的清單
        if len(lines) != 6 or not all(line in [0, 1] for line in lines):
            raise ValueError("一個卦象必須有六條 0 或 1 組成的爻線。")
        self.lines = lines

        # 從二進位字串查找名稱
        binary_string = "".join(map(str, reversed(self.lines))) # 易經爻線自下而上讀取
        self.name = HEXAGRAM_NAMES.get(binary_string, "Unknown")

    def __str__(self):
        # 印出視覺化表示的方法
        visual_lines = ["⚊" if line == 1 else "⚋" for line in reversed(self.lines)]
        return f"{self.name}\n" + "\n".join(visual_lines)
def transform(self, changing_lines: list[int]): # 處理變動爻,並回傳一個新的 Hexagram 物件的方法 # changing_lines 是一個包含位置 (1-6) 的列表 new_lines = self.lines[:] for position in changing_lines: if 1 <= position <= 6: # 反轉比特 (0 變成 1,1 變成 0) new_lines[position-1] = 1 - new_lines[position-1] return Hexagram(new_lines)

「擲銅錢」

接著,我們需要一種方法來建立一個代表目前狀況的物件。這與傳統擲銅錢或蓍草來產生六爻的方式相似。

import random

def generate_lines():
    # 一個簡單模擬用來產生六個爻和可能的變動
    lines = [random.randint(0, 1) for _ in range(6)]
    # 為了簡化,此例假設有一個變動的爻
    changing_positions = [random.randint(1, 6)] if random.random() > 0.5 else []
    return lines, changing_positions

# 讓我們看看目前的狀況是什麼
current_lines, changes = generate_lines()
my_current_situation = Hexagram(current_lines)

觀察變化

最後,我們可以透過呼叫先前建立物件的 transform 方法來觀察轉變的過程。

print("目前狀況:")
print(my_current_situation)

if changes:
    future_potential = my_current_situation.transform(changes)
    print(f"\n變動爻位置:{{changes}}")
    print("轉變為...")
    print("\n未來可能狀況:")
    print(future_potential)
else:
    print("\n狀況穩定,無變動爻。")

這段簡單的程式碼讓整個系統變得具體。我們定義了類別,建立一個代表當下的物件,並呼叫方法展現物件的下一個狀態。

結論:永恆的模式

從物件導向程式設計的角度來看易經的二進位碼,不只是巧妙的比喻。它是一個運作模型,用來理解這個用以描繪變動本質的複雜動態系統。

一個模型,而非魔法

我們需要釐清:這是一個心智模型,而不是字面上斷言宇宙「運作於 Python」。此模型的價值在於它能將古老且看似神祕的系統,轉化為我們日常使用的系統設計中,邏輯且結構化的語言。它解構易經,展現其為一個深奧的信息設計。

建築師的視野

終究,古代聖賢與現代軟體建築師的探索是一致的:洞察複雜系統背後的底層模式。無論我們是在設計分散式資料庫,或是在人生轉職的過程中,理解系統底層結構是與系統合作而非對抗的關鍵。易經作為一個跨越三千年的不朽見證,提醒我們,對優雅且普遍模式的追尋,是刻印在我們意識深處的共同使命。

有問題或想交流?
如果您有任何疑問或想交流,歡迎在下方留言,我們通常會在 24 小時內回覆您。

0 則留言

發表留言

請注意,留言須先通過審核才能發布。