快轉到主要內容

用語言創造Linux桌面世界——從語言學角度看NixOS程式的哲學

· 民國114年乙巳年
·
切換繁體/簡體
分類 人文藝術 自由軟體議題
標籤 Immutable Distro Linguistics
目錄

用語言創造桌面世界——從語言學角度看NixOS的哲學

Creating a Desktop by Language: The Philosophy of NixOS

這篇文章是我上了語言學的Semantics課程之後,再加上玩了一陣子NixOS,一時興起讓ChatGPT協助胡謅出來的一篇文章,我寫好大綱,然後請AI協助補充細節。當我在台上報告的時候,包括教授在內的所有人都一頭霧水。

其實我也不知道自己在工三小。

1. 第三個作業系統
#

尤達大師說過:There’s another。

作業系統的世界,除了 Windows 和 macOS,其實還有第三個強大的系統世界:Linux。

如果 Windows 是便利商店、macOS 是精品咖啡廳,那 Linux 就像自己種豆子、自己烘、自己煮的咖啡愛好者。並且Linux可以有很多間分店,每間分店有自己的配方,這稱之為Linux發行版。

Linux 的一個特別發行版 —— NixOS。

它不只是系統,還是一種「用語言描述電腦世界」的哲學。

從語言談起NixOS。

如果語言的意思是可以用數學或邏輯規則表達的,那我們就能把語言變成像程式一樣精確的東西。

說話也是在創造世界,所有的輸入與輸出都可以看成一個函數,怎樣的輸入必然得到怎樣的結果,沒有例外。

這邊聽起來有點瘋對吧?但語言學家 Montague 也曾經試圖把語言變成數學公式,所以我只是延續傳統而已(笑

2. 語言學概念
#

英國哲學家約翰·奧斯丁提出「說話行為」(Speech Act Theory)在說出某句話就能改變現實,例如「我宣布你們結為夫妻」。

那如果我們能用語言不只是結婚,而是『讓一整個電腦軟體世界出現』呢?」

NixOS它讓你只要寫下一份設定檔,整個系統就會自己生成。

NixOS即利用Nix套件管理器組成的宣告式系統。

一般 Linux系統是你要自己安裝每個軟體、自己設定

NixOS 則是你只要用幾行文字說明你要的世界,它就會自動建好。

Declarative vs. Imperative

傳統Linux是imperative:用指令「一步步」操作系統

NixOS乃declarative:用設定檔「描述」理想狀態,一蹴可幾。

System as Code:語言的具象化

Nix configuration file = 作業系統的語法樹

每個套件設定都是語言單位(lexeme)

整個作業系統是語句的實現(utterance)

寫成公式的話

對於NixOS系統而言

system = f (configuration.nix)

在語意學裡面

meaning = f (syntax, context)

一小段Nix設定檔範例:

{
  services.desktopManager.plasma6.enable = true;

  services.displayManager.sddm.enable = true;

  services.displayManager.sddm.wayland.enable = true;
}

這行文字的意思就像一句祈使句:

讓KDE桌面出現吧!一執行nixos-rebuild switch指令,系統真的照辦,沒有亂七八糟的錯誤或版本地獄。

3. NixOS的三個神奇特性
#

最常被提及的好處:

  • Immutable
  • Atomic
  • Reproducible
  1. Immutable

系統不會被亂改。

系統是「不可變」的,每次改動都會生成一個新的版本。

我們假設,自然語言中的句法規則,一旦成立,不會忽然改變意思,讓意義能夠穩定的被預測。

你不會講一句話講到一半語法爆炸,NixOS 也不會。

語言本質是模糊的,但語意學努力「抵抗變化」!

語意學(semantics)並不保證語意固定,但它的目標之一正是——建立一個讓語意可預測、可重現的框架。這點跟 NixOS 的設計哲學「相同輸入 → 相同結果」非常像。

換句話說:

在自然語言中,我們研究怎麼讓意義在不同語境中仍然穩定;

在 NixOS 中,我們設計系統讓設定不會被時間與環境改變。

Immutable ≠ 不變的語意,而是可控制的語意。

在自然語言中,詞義會隨時間變化,例如literally現在常被用來表示比喻。

但語意學家的目標是建立一套能控制歧義、預測意義的系統。

NixOS的immutable設計——它不保證世界不變,但保證我們可以追蹤、回溯、重建意義。

換句話說,語言學與NixOS都在對抗「語意或系統的熵增」

  1. Atomic

要嘛成功,要嘛不變

在更新系統的時候,NixOS是「原子性的」,要嘛全部成功,要嘛完全不動。甚至在斷電關機後系統仍能運作。就像自然語言裡的句子要完整才有意義,不能只有主詞沒有動詞。

  1. Reproducible

可以完美重建。

因為整個系統可以視為一個函數,依照System as Code的理念,每次都有固定的輸出。

NixOS的同一份設定檔 → 不論哪台電腦、哪一天,結果都一樣。

有點像語法規則:一樣的句法,放哪裡都能生成同樣意思。

KDE Plasma桌面:語言具現化的樣子

KDE Plasma是 NixOS 上最受歡迎的桌面環境之一,設計優雅、可客製化。雖然自訂性高,不過也有點複雜。在NixOS,你不再用滑鼠一個個設定外觀,而是用語言寫出你的理想桌面。

這就像詩人用語言建構想像世界,只是我們建的是數位世界。

我不是在教大家寫程式,而是在講語言哲學在電腦世界的延伸。

4. 從混亂到秩序:Linux的「熵」與語言的「熵」
#

傳統Linux的熵增問題是什麼呢?

傳統 Linux 的軟體管理是imperative的:你手動安裝、移除套件。各種 dependency、版本、config 都可能互相污染。時間久了就變成「系統熵增」:你不知道哪些套件為何存在,也不敢輕易動它。

手動安裝軟體,依賴混亂、版本衝突、不可逆。系統狀態將不再可重現,進入「軟體熵增」。

語言中也可以用熵(Information Entropy)來解釋。

Shannon熵提到了語言的不確定性、可預測性。

自然語言透過語法對抗混亂,維持可理解性。

如果將NixOS作為對抗系統熵的語言實驗?

訊息熵(information entropy)用來衡量語言資訊的不確定性或預測難度。

語言中的「熵」越高,代表句子越難預測、越混亂。

例如:「狗叫」的語意可預測性高、熵低;而「紫色的概念在跳舞」這句則熵高,因為語意出現的機率極低。

語言學家 Zipf 和 Shannon 都發現:自然語言雖然表面看似混亂,但整體遵守某種統計秩序(如Zipf’s law)。

所以語言系統其實在「對抗熵增」:它透過規則、語法、語意限制來壓制混亂,維持可理解性(order within chaos)。

NixOS的哲學是對抗系統熵增的語言實驗。透過declarative的設定檔與不可變架構(immutable store),它讓系統狀態始終可重現(reproducible)、可回溯(atomic rollback)。

NixOS 用語言與版本控制維持秩序,每個設定宣告都是一個「語法規則」,抑制混亂。

語言學研究如何維持意義的穩定,NixOS 研究如何維持系統的穩定。

NixOS 的declarative架構就像「語法規則」,讓秩序重新回來。

根據Shannon的「資訊熵」概念,以「可預測性」來講。

即「語言壓制混亂以維持理解,NixOS壓制系統熵以維持秩序。」

5. 結論:從秩序創造語言
#

在語言中我們構築思想,在 NixOS 中我們以語言構築現實。

當其他系統被熵吞噬時,NixOS 仍以語法維持秩序。

References
#

  • Austin, J. L. (1962). How to Do Things with Words.
  • Shannon, C. E. (1948). A Mathematical Theory of Communication.
  • Zipf, G. K. (1949). Human Behavior and the Principle of Least Effort.
  • NixOS Manual Documentation

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。