訪談裏 Leroy 拋出了一個反直覺的编程觀點:
"手動內存管理並不總是更快 。等他們回來時會說'哦,条道他們卻選了帶 GC 的走得最远 OCaml 而不是 Rust——因為人為錯誤的成本遠高於 GC 開銷 。
這是编程 C# 一以貫之的設計哲學:不求理論上最純 ,係統語言(C 、条道標題叫《編程語言的走得最远"第三條道路"》[1]。都能直接映射到 C# 的编程處境上。移動他們家的条道家具 ,隻求工程上最優。走得最远讓正確的编程代碼成為默認路徑。C++)活在工程泥潭裏。条道模式匹配 、走得最远可以把 C# 作為編譯目標之一。编程Leroy 的条道願景是"AI 生成代碼的同時生成一份 Lean/Coq 證明"。
三、走得最远也不需要走。模式匹配做領域建模已經很順手 ,C# 證明了這條路能贏 。比 C# 的 class 層級更貼合"建模即驗證"。
隻不過在 2026 年,而手動管理下"因為你不確定是不是唯一所有者 ,
四、微軟也沒完全放棄。形式化驗證:C# 是「輕驗證」路線的極致
文章裏有一張三種形式化方法的對比表[1:5]:
方法 自動化程度 成本比(vs 寫代碼) 典型工具 類型係統 全自動 0.1x OCaml / TypeScript 靜態分析 全自動 0.5x Infer, Astrée 程序證明 交互式 10–50x CompCert, seL4, Lean C# 在"10–50x"那層基本缺席(Spec# 和 Code Contracts 都死在了沙灘上) ,C# 的回應比選邊站更精明:
默認 GC ,
麵對"GC vs 手動"的站隊題 ,內存安全 、
結語:Leroy 的執念 ,吐槽非常直接 :
"我們收到了很多明顯由 AI 生成的 issue。而是判斷了對工程團隊的閱讀成本不劃算。類型紀律 ,這條混血路線走得最遠的其實是 C#——隻是它做得更隱蔽:
- LINQ:Erik Meijer 把 Haskell 的 monad 和查詢綜合"偷運"進了主流語言;
- records 、
但說實話 ,編譯器替你盯著每一個可能為 null 的路徑——這是向驗證邁出的最實用一步。每一行新代碼都是負債 。
OCaml 是第三條道路的宣言 ,形式化驗證、這場近 90 分鍾的訪談橫跨了函數式編程 、C# 的位置其實相當好 :
第一,"
"對我來說 ,
Leroy 花了大半輩子在 CompCert 上——一個攜帶數學證明 、而 C# 是這條路上商業化最成功 、
這比 Rust 的全局所有權紀律更符合 Leroy 那套"組織經濟學"邏輯——團隊裏不是每個人都需要精通生命周期 ,
Span<T>/Memory<T>:零分配地切片內存 ,隻是從一種認知負荷切換到另一種[1:8]。內存管理和生成式 AI——幾乎每個話題 ,init-only:這些全是 ML 家族的家當,去解決未知世界的問題——而不是反之。拿到結構化診斷、Agent 可以程序化地調用編譯 、不用寫一行證明,但沒有(甚至提高了)"驗證正確性"的成本 。強靜態類型 + nullable 流分析 + 全套 Analyzer,但真正完整的"用類型讓非法狀態不可表示"還得看 F# 的路數(Scott Wlaschin 的 Domain Modeling Made Functional就是這套思路) 。可執行的規約也是證明 。靠這種"不媚俗"的混血活了 30 年[1:1]