用語言創造桌面世界——從語言學角度看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
- Immutable
系統不會被亂改。
系統是「不可變」的,每次改動都會生成一個新的版本。
我們假設,自然語言中的句法規則,一旦成立,不會忽然改變意思,讓意義能夠穩定的被預測。
你不會講一句話講到一半語法爆炸,NixOS 也不會。
語言本質是模糊的,但語意學努力「抵抗變化」!
語意學(semantics)並不保證語意固定,但它的目標之一正是——建立一個讓語意可預測、可重現的框架。這點跟 NixOS 的設計哲學「相同輸入 → 相同結果」非常像。
換句話說:
在自然語言中,我們研究怎麼讓意義在不同語境中仍然穩定;
在 NixOS 中,我們設計系統讓設定不會被時間與環境改變。
Immutable ≠ 不變的語意,而是可控制的語意。
在自然語言中,詞義會隨時間變化,例如literally現在常被用來表示比喻。
但語意學家的目標是建立一套能控制歧義、預測意義的系統。
NixOS的immutable設計——它不保證世界不變,但保證我們可以追蹤、回溯、重建意義。
換句話說,語言學與NixOS都在對抗「語意或系統的熵增」
- Atomic
要嘛成功,要嘛不變
在更新系統的時候,NixOS是「原子性的」,要嘛全部成功,要嘛完全不動。甚至在斷電關機後系統仍能運作。就像自然語言裡的句子要完整才有意義,不能只有主詞沒有動詞。
- 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