導讀:為什麼程式人需要哲學?
系列:程式人的哲學思辨 #00/11 | 閱讀時間:25-30分鐘 | 概念:哲學導論 — 程式思維與哲學思維的交匯
作者:Wina @ Code & Cogito
凌晨三點的頓悟
那是一個趕版本的深夜。
螢幕上的測試報告一片綠色——全部通過。我鬆了口氣,按下部署。十五分鐘後,監控系統開始尖叫。生產環境炸了。
我盯著 error log,逐行排查。測試全過、日誌正常、邏輯沒錯。問題不在程式碼本身,而在一個更隱蔽的地方:我對使用者行為的假設是錯的。
我假設使用者會按順序操作。但真實世界裡,有人會同時開兩個分頁、有人會在載入完成前瘋狂點擊、有人會把瀏覽器放在背景三天後才回來。
我的程式碼邏輯完美。但我的世界模型有裂縫。
那一刻我突然意識到——我花了三個小時 debug 的,不是一個技術問題,而是一個認知問題。我以為世界是這樣運作的,但它不是。我需要校準的不是程式碼,而是我對現實的理解。
後來我才知道,這件事有個名字。它叫哲學。
而且,程式人其實每天都在做這件事——只是從來沒有人告訴我們。
背景:你一直在做哲學,只是沒意識到
程式設計的四個隱藏哲學問題
打開你的 IDE,隨便找一段程式碼。你會發現,寫程式的日常工作裡藏著四個人類思考了兩千五百年的根本問題。
第一個:什麼是真的?
每次你寫下 if condition == True,你就在做一次真假判定。但你的判定標準從哪裡來?測試通過就是「正確」嗎?需求文件說的就是「真正的需求」嗎?AI 生成的答案「看起來對」就是「真的對」嗎?這是知識論(Epistemology)的核心問題——真理的本質與判定。
第二個:我怎麼知道我知道的?
你從 Stack Overflow 複製了一段程式碼,它能跑。但你「知道」它為什麼能跑嗎?你讀了文件,理解了 API,但你怎麼確定你的理解是正確的?你的「知道」和資料庫裡的資料有什麼不同?這是認識論的第二層——知識的來源與證成。
第三個:我是否真的在做選擇?
你選了 React 而不是 Vue,選了微服務而不是單體架構。這些是你的「自由選擇」嗎?還是你的教育背景、團隊慣性、技術生態早就決定了你的選項?當你寫的推薦演算法影響了百萬使用者的行為,他們的選擇還是「自由」的嗎?這是自由意志與決定論的千年之爭。
第四個:我該怎麼做?
你發現公司的資料收集超出了使用者同意的範圍。你發現演算法對某些群體有偏見。你知道一個快速但不安全的捷徑可以趕上截止日期。你該怎麼做?這是倫理學——關於對錯、責任與後果的思考。
差別只在於:哲學家用概念語言討論這些問題,而你用 if、else、try、catch 在程式碼裡實踐它們。
為什麼「現在」特別需要
你可能會問:程式人做了幾十年的工程都好好的,為什麼突然需要哲學?
因為三件事同時發生了。
第一,AI 讓「看起來合理」的成本趨近於零。 當一段文字、一張圖片、一段程式碼都能被生成,真假的界線變得前所未有地模糊。你不能再用「能不能做出來」來判斷真假,你需要更根本的判定框架。
第二,系統複雜度超越了單一人類的理解極限。 微服務、雲原生、非同步事件流、跨服務的供應鏈依賴——當一個 bug 可能牽涉十個團隊、三個時區、五層抽象,「誰造成了問題」本身就變成一個哲學問題:因果鏈怎麼追?責任怎麼分?可歸責性怎麼定義?
第三,技術不再只是工具,它成了制度的一部分。 推薦系統在塑造人的偏好,風控模型在決定誰能貸款,審核演算法在界定什麼能說什麼不能說。你寫的不只是功能——你寫的是規範與邊界。如果你不理解這些邊界的哲學含義,你就是在盲目地制定規則。
程式人的四個哲學超能力
一、精確性:你習慣把模糊變成規格
哲學最容易被誤解成「想很多但沒結論」。但成熟的哲學恰恰相反——它是把問題裡最模糊的地方拆開來,變成可以逐一檢查的定義與前提。
這和你每天做的事一模一樣。需求是模糊的,你把它變成 spec;spec 是抽象的,你把它變成測試案例;測試案例是條列的,你把它變成可執行的 assert。
哲學家把「正義」拆成「分配正義」、「矯正正義」、「程序正義」,就像你把一個巨大的 function 拆成職責清楚的小模組。
二、可測試性:你不信感覺,你信可重現
你會問:「證據在哪?」你會問:「能不能重跑一次?」你不會因為某個技術大神說了一句話就全盤接受——你會去跑 benchmark、看 PR、查 issue。
這是哲學的核心美德之一:可否證性。一個好的哲學論點不是不能被反駁,而是它把自己擺在可以被反駁的位置上,然後在反駁中存活下來。波普說科學的標誌不是「可以被證明」,而是「可以被推翻」。這和你寫測試的邏輯完全一樣——你寫測試不是為了證明程式正確,而是為了找出它在哪裡會壞。
三、抽象能力:你會為複雜系統做降維
你知道 interface 是什麼——它不是實作,它是一份契約,描述「這個東西對外界來說長什麼樣」。你知道 schema 是什麼——它不是資料本身,它是資料的結構宣言。你每天都在做一件事:從混亂中提取結構。
哲學做的是同一件事,只是對象不同。哲學家從人類經驗的混亂中提取核心概念——「因果」、「自由」、「正義」、「意識」——然後用這些概念去解釋世界。就像你用 class、interface、type 去組織程式碼一樣,它們是思考的腳手架,讓你能處理超出直覺範圍的複雜問題。
四、重構心態:你知道世界觀也需要 refactor
人很難承認自己錯了。但工程師每天都在做這件事——重構、回滾、修補、重寫。你不會覺得「重構」是一件丟臉的事,你知道那是程式碼演化的自然過程。
哲學需要同樣的心態。你的世界觀——你對什麼是對的、什麼是真的、什麼是重要的那套信念系統——它也需要定期重構。不是因為原來的「錯了」,而是因為世界變了,你的經驗增加了,原來的架構已經承載不了新的複雜度。
# 世界觀也是一種系統——它需要維護
def refactor_worldview(current_beliefs, new_evidence):
conflicts = find_contradictions(current_beliefs, new_evidence)
if conflicts:
return update_beliefs(current_beliefs, resolve(conflicts))
return current_beliefs # 沒有衝突,保持不變
這種「允許錯誤、以迭代逼近」的心態,是哲學思辨的最佳基礎。
現代連結:從技術債到世界觀債
隱藏的認知負債
每個工程師都懂技術債——你今天走的捷徑,明天會用更高的成本來還。但有一種更隱蔽的債務,你可能從來沒注意過。
我把它叫做世界觀債。
系統長期失控的原因,很少是某一行程式碼出了問題。更多時候,是早期做的某個假設——「使用者不會這樣用」、「這個量級夠了」、「這兩個系統不會同時改」——在新的環境下悄悄失效。然後連鎖反應開始了。
人生也常常是這樣。你在二十多歲建立的一套世界觀——關於成功的定義、關於努力和回報的關係、關於什麼值得追求——在三十多歲遇到新的複雜度時,開始出現裂縫。你不舒服、你焦慮、你覺得哪裡不對,但你說不清楚問題在哪。
問題不是事件本身。是你背後那套沒有更新的世界觀模型,在現實面前報錯了。
AI 時代的哲學急迫性
當 ChatGPT 可以寫出一段看起來完全正確但事實上錯誤的解釋,當 AI 生成的程式碼通過了所有測試卻藏著微妙的安全漏洞,當深偽技術可以讓任何人說出他從沒說過的話——你用什麼標準來判定真假?
「看起來對」已經不夠了。你需要一套更底層的判定框架。
這就是哲學能給你的。不是現成的答案,而是一套提問的方法——讓你能穿透表面的合理性,去追問更深處的假設。
反思與啟示:這個系列想帶給你什麼
不是要你變成哲學家
讓我先說清楚這個系列「不是」什麼。
它不是哲學入門教科書——不會給你一堆-ism 要你背誦。它不是要你放下鍵盤去沉思——恰恰相反,它要把哲學拉到你的鍵盤前面。它不是學術論文——不會有冗長的文獻回顧和腳註迷宮。
它是一個嘗試:用你已經會的程式思維,去理解你一直在做但沒意識到的哲學思考。
每篇文章都會遵循一個固定結構:
- 開場場景:把哲學問題還原成你熟悉的工程情境
- 背景分析:給你一張概念地圖,讓你知道哲學家們怎麼想這個問題
- 核心對照:程式概念 × 哲學概念的深度比較
- 現代連結:把古老問題放回 AI 與平台時代
- 帶走的東西:可以實際操作的思維模型
你會得到什麼
短期來看——更清晰的思考模式、更好的架構直覺、更精準的技術溝通、更敏銳的假設偵測能力。
長期來看——一種面對不確定性時的沉著。不是因為你知道答案,而是因為你知道怎麼在沒有答案的時候繼續前進。
你不需要哲學背景。你只需要你已經有的東西:寫程式的能力、解決問題的習慣、對世界運作方式的好奇心。
結語
回到那個凌晨三點的深夜。
我最終找到了 bug——一個 race condition。但我帶走的不只是一個修復後的 commit,而是一個更深的領悟:我寫的每一行程式碼,都隱含了一個對世界的假設。而那些假設,值得被檢視。
你的思考,應該像你的系統一樣:可理解、可維護、可演化。
哲學不會讓你的程式碼跑得更快。但它會讓你看得更清楚——看清你在做什麼、為什麼做、以及那些你沒注意到的隱含前提。
這是「程式人的哲學思辨」系列的起點。從下一篇開始,我們會一個問題一個問題地拆解。
Let’s debug our thinking.
下一篇預告
真理是一個函數嗎?
你每天寫下 if something == True,但那個 True 到底意味著什麼?
- 數學的
True和商業邏輯的True是同一種「真」嗎? - 測試全綠就代表程式「正確」嗎?波普的否證論怎麼看?
- AI 生成的答案「看起來對」但「事實上錯」——你怎麼分辨?
- 如果真理不是一個回傳值,它更像什麼?
下一篇,我們用符應論、融貫論、實用論三把尺,丈量程式世界裡的每一個 True。
參考資料
- Plato. Republic. (洞穴寓言與抽象思維的起源)
- Aristotle. Organon. (形式邏輯的奠基)
- Descartes, Rene. Discourse on the Method. 1637. (方法論懷疑)
- Popper, Karl. The Logic of Scientific Discovery. Routledge, 1959. (否證論與可測試性)
- Kuhn, Thomas. The Structure of Scientific Revolutions. University of Chicago Press, 1962. (典範轉移)
- Floridi, Luciano. The Philosophy of Information. Oxford University Press, 2011. (資訊哲學)
