四十年寫四個程式語言,Anders Hejlsberg 在 The Pragmatic Engineer 上講的設計筆記

四十年寫四個程式語言,Anders Hejlsberg 在 The Pragmatic Engineer 上講的設計筆記

發布於
·13 分鐘閱讀
AIAI AgentSaaSPodcast創業產業觀察商業投資開源軟體工程

TL;DR

  • 設計一個程式語言是十年起跳的長賽局,版本一有問題、版本二修掉、版本三才算真的好,然後還得花十年說服人用
  • C# 的核心設計團隊只有六七個人,每週開三次會、每次兩小時,新點子的工作就是被全部人狙擊看撐不撐得住
  • TypeScript 當年要 open source 是 Microsoft 內部硬幹下來的,前兩年躲在 CodePlex 沒人看,搬到 GitHub 才真的起飛
  • Anders 從 Turbo Pascal 時代就堅持一件事:程式語言不是只有 compiler,是 edit / compile / run / debug 整個循環的體驗
  • AI 時代的語言不需要重新設計,重點是 locality(區域性),讓 AI 不必把整個 codebase 塞進 context window 才能理解一行 code

這集 The Pragmatic Engineer 在 2026 年 5 月 13 日上線。The Pragmatic Engineer 是前 Uber 工程經理 Gergely Orosz 主持的軟體工程深度訪談節目,從他的 Substack 電子報延伸出來,那份電子報是 Technology 類目排名前四的訂閱媒體,有一百一十萬以上的訂閱者。基本上是工程師圈裡最會挖故事的人。

來賓 Anders Hejlsberg 是 Microsoft 的 Technical Fellow(技術院士,是 Microsoft 工程體系裡最高的技術職等),現任 C# 首席架構師和 TypeScript 的核心開發者。他這輩子的代表作有四個:Turbo Pascal(80 年代讓很多人第一次寫程式的編譯器)、Delphi(90 年代 Windows 桌面開發的神器)、C#(2000 年 Microsoft .NET 平台的旗艦語言)、TypeScript(2025 年 GitHub Octoverse 報告中正式成為 GitHub 上最熱門的語言)。一個人寫了四個影響整個產業的語言,這種履歷在現代軟體史上找不到第二個。

程式語言是十年起跳的長賽局

整集訪談我最有感的一段,是 Anders 在尾段隨口講的這句:「程式語言這種事情,最少要十年才能看出來。版本一很棒,但會有一堆問題;版本二修一修;要到版本三才算真的好。然後你還得開始說服大家來用。」

放在台灣這幾年的科技圈氛圍裡,這句話簡直是反向操作教材。我們現在習慣的單位是 quarter、是 OKR 週期、是季度 demo day,三個月看不到 traction 就要 pivot。但 Anders 把這套思考方式整個推翻:他在 Microsoft 一待就是三十年,幾乎都在做同一件事。

更狠的是後面那句:「Microsoft 願意把整間公司的力量壓在你做語言的努力上,這種機會不是隨便哪家公司都會給你。」這話聽起來像是在感謝公司,但翻譯成創投語言就是:有些事情就是需要二十年的耐性資金,季度回報的世界根本做不出 TypeScript 這種東西。我覺得這對所有在 AI 工具迭代速度下焦慮的工程師都是個提醒,最值錢的東西通常是慢慢長出來的。

六七個人的會議室,比兩百人的委員會強

C# 設計團隊有多少人?Anders 講的數字是六到七人。

每週開三次會,每次兩小時。所有人都是寫過或設計過語言的老手。新點子拿出來,全場的工作就是試圖把它打掉,看它能不能扛得住。撐住的就是好點子,撐不住的就丟掉。

這段我看完直接想到 Roblox 創辦人 David Baszucki 那套「九家內部公司」的組織設計,還有 AppLovin 那種一個員工年產一千萬美元 EBITDA 的反直覺打法。共通點都是:偉大的技術產出幾乎不來自大委員會,反而是來自小而精的核心。Anders 自己也說:「大家走進會議室就能直接討論技術細節,不用先花一小時讓大家對齊上下文。」這種 context 共享密度,就是小團隊的根本優勢。

老實說,這對 AI 時代特別有啟發。當每個工程師都配備一隊 Coding Agent 時,那個會議室裡其實只需要六七個還在「真的懂為什麼」的人,剩下的執行可以丟給 agent。

C# 是被 Sun 告出來的

很多人不知道,C# 的誕生其實有個沒那麼漂亮的起因。

九零年代後期 Java 紅成那樣,Microsoft 一開始的策略是做 Visual J++(買 Sun 的 Java 來改),Anders 當時就是被找去當 J++ 的首席架構師。結果 Sun 跟 Microsoft 為了 Java 的合約細節打官司,這官司一打下去,Visual J++ 等於被法官判死刑。沒有企業會敢押注一個被法院命令限制的語言。

Anders 講得很直白:「那時候我們才意識到,把你整個開發平台的賭注押在競爭對手授權的技術上,可能不是個聰明策略。」

所以 C# 是被法律訴訟逼出來的。從這個角度看,C# 不只是技術產品,它是 Microsoft 拿回語言主導權的政治產物。而二十多年後 TypeScript 走的是另一條完全相反的路線:刻意 open source,刻意把控制權交出去。Anders 跟另一位共同發明人 Steve Lucco 兩個 Technical Fellow 在 Microsoft 內部硬扛下來這個決定,前兩年放在 Microsoft 自己的 CodePlex 上沒人理,2014 年搬到 GitHub 才真的開始長。

這個轉折滿值得玩味的。同一家公司、同一個人,在 C# 上是「我們必須拿回控制權」,在 TypeScript 上是「我們必須把控制權交出去」。差別是時代變了,開發者用腳投票的方向變了。

IDE 和語言是一體的:Turbo Pascal 留下的執念

Anders 講了一段我覺得每個做產品的人都該聽的話。他從 Turbo Pascal 時代就堅持一件事:你做的是整段 edit / compile / run / debug 體驗,compiler 只是其中一塊,邊緣再強都沒用,整體流暢度才是工程師會留下來的原因。

Turbo Pascal 為什麼 1983 年炸開?因為當時的對手 compiler 賣五百美金而且只有 compiler,你還要自己買 editor、自己處理流程,五百美金的東西被 Anders 砍到四十九塊九毛五還附完整工具鏈。「貴十倍、爛十倍」是當時對手的處境。這個價格加體驗的雙重打擊,跟我們現在看 Cursor 六百億被收購、Claude Code 突襲 IDE 市場 的劇本根本是同一套:誰能把整段體驗縫合得最順,誰就贏。

TypeScript 也是這套思維的延伸。Anders 說當年 Microsoft 內部有個團隊跑來問他能不能把「ScriptSharp」(一個把 C# 編譯成 JavaScript 的工具)產品化,他第一反應是:「你們會這樣搞,是因為 JavaScript 的 tooling 太爛。那不如直接修 JavaScript 啊。」TypeScript 就是這樣冒出來的:一個 erasable type system(可擦除的型別系統),加完型別之後在執行時消失,留下的是給 IDE 用的 tooling 基礎。寫過 TypeScript 的人都知道,IntelliSense 跑得順那種感覺,根本就是設計者偷偷在背後鋪了滿地的紅毯。

AI 時代的語言:Locality 才是新護城河

訪談最後一段聊 AI 對程式語言的衝擊,Anders 給的答案沒有去談「重新設計一個 AI 專用語言」,而是兩個比較冷靜的觀察。

第一,AI 在 JavaScript 和 TypeScript 上表現得好,純粹是因為訓練資料量大。「適合 AI 的語言,就是 AI 看過最多的語言。」這話直接戳破很多 AI 時代新語言的想像。

第二,他也指出 TypeScript 比 JavaScript 對 AI 更友善的真實理由:型別推論加上區域性(locality)。如果語言強迫你每個地方都標型別,AI 反而會出錯更多次,因為它要記住一堆冗餘資訊。但如果只標關鍵的入口、其他讓編譯器推論,token 用量少、出錯機會也少。

至於 locality,Anders 講得很實在:「不要有一堆 global 的東西讓 AI 必須理解整個專案。」這指向一個很大的設計原則:未來語言的價值會越來越來自於「能不能讓 AI 在一個檔案的視野內做完正確的判斷」。這也是為什麼 OpenAI 工程師 Ryan Lopopolo 在 Latent Space 上分享的 Harness Engineering 會強調 context 管理是 agent 寫程式碼的命門。

Anders 講到工程師這個職業會怎麼變的時候,倒是滿淡定的:「我們都在變成專案經理。底下有一群 junior programmer 叫 agent,但有人得看大局、有人得 review、有人得負責。AI 不會替你扛責任。」

結語

四十年寫四個語言,Anders 留下的最大資產可能不是任何單一語言,而是一種長期主義的證明:技術產業真正改變世界的東西,不是季度衝刺出來的,是有人願意花十年把它磨成版本三。

這集還有滿多技術細節我沒展開,像是 async / await 的 function coloring 問題、Roslyn 自舉編譯器的歷程、為什麼 LSP(Language Server Protocol)會變成業界標準。這類產業老兵的訪談我之後會繼續寫,想第一時間收到的話,可以訂閱我的部落格 wilsonhuang.xyz,這類深度內容不會漏掉。

Sources:

推薦閱讀

喜歡這篇文章嗎?

訂閱電子報,每週收到精選技術文章與產業洞察,直送你的信箱。

💌 隨時可以取消訂閱,不會收到垃圾郵件