国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

TypeScript 之父 Anders Hejlsberg:別折騰“AI新語(yǔ)言”了,真正變天是 IDE 讓位給 Agent

0
分享至


編譯|宇琪、Tina

過(guò)去十年,TypeScript 被很多團(tuán)隊(duì)當(dāng)作“工程化 JavaScript”的答案;到了 AI 編程時(shí)代,它又意外變成了 AI 最順手的語(yǔ)言之一——原因很簡(jiǎn)單:AI 寫(xiě)代碼的能力基本取決于它見(jiàn)過(guò)多少這種語(yǔ)言的代碼,而 TypeScript/JavaScript 恰好是訓(xùn)練語(yǔ)料最豐富的那一檔;更關(guān)鍵的是,TypeScript 還把類(lèi)型與接口這些“語(yǔ)義線(xiàn)索”明明白白寫(xiě)在代碼里,正好讓 AI 更容易理解、重構(gòu)和補(bǔ)全。

也正是在這種背景下,微軟在 2025 年 12 月 16 日完成了 TypeScript 史上最激進(jìn)的一次重構(gòu):用 Go 語(yǔ)言遷移(重寫(xiě))編譯器與部分工具鏈,宣稱(chēng)帶來(lái) 10 倍性能飛躍。但消息一出,社區(qū)立刻炸鍋——明明 Rust 才是當(dāng)下重寫(xiě)系統(tǒng)級(jí)工具的“默認(rèn)答案”,為什么偏偏選 Go?

TypeScript 之父、同時(shí)也是 Turbo Pascal、Delphi、C# 等語(yǔ)言的核心設(shè)計(jì)者 Anders Hejlsberg,在與 GitHub 研究顧問(wèn) Eirini Kalliamvakou 的對(duì)談中正面回應(yīng)了這些質(zhì)疑:很多人認(rèn)為他們“應(yīng)該選另一門(mén)語(yǔ)言”,但他堅(jiān)持“我們選了最合適的工具,而且過(guò)去一年已經(jīng)證明了這一點(diǎn)”。

更有意思的是,Hejlsberg 也談到 AI 在這次遷移中的真實(shí)位置:團(tuán)隊(duì)曾嘗試讓 AI 直接把 TypeScript 代碼遷移到 Go,“結(jié)果不太理想”,因?yàn)樗麄冃枰氖俏迨f(wàn)行代碼級(jí)別、行為完全一致的確定性遷移;AI 只要偶爾“偏一點(diǎn)”,就會(huì)把成本轉(zhuǎn)移到逐行審查上,得不償失。相比之下,讓 AI 去生成遷移工具、以及在遷移之后自動(dòng)同步舊代碼庫(kù)新增的 PR 變更,反而更有效——這部分他們“已經(jīng)相當(dāng)成功”。

同時(shí),Hejlsberg 也明確指出:在“AI 無(wú)處不在”的新環(huán)境里,TypeScript 的語(yǔ)言服務(wù)(補(bǔ)全、跳轉(zhuǎn)、重構(gòu)、快速修復(fù))不會(huì)只是原樣搬家,而是在被大幅重塑——因?yàn)楹芏噙^(guò)去必須靠 IDE 才能做的事,AI 將會(huì)做得更好。未來(lái)真正不確定的也不是 TypeScript 語(yǔ)言本身(它仍沿著 JavaScript 標(biāo)準(zhǔn)化路徑演進(jìn)),而是工具形態(tài):AI 正從 IDE 的助手變成主要工作者,人類(lèi)轉(zhuǎn)向監(jiān)督與審閱;這也是為什么把語(yǔ)言服務(wù)接入 MCP 這類(lèi)機(jī)制會(huì)突然變得誘人——讓 AI 能提出語(yǔ)義級(jí)問(wèn)題、發(fā)起重構(gòu)請(qǐng)求,用“智能體方式”完成過(guò)去只能在 IDE 里完成的工作流,開(kāi)發(fā)工具將因此被徹底改寫(xiě)。

基于該播客視頻,InfoQ 進(jìn)行了部分刪改。

核心觀(guān)點(diǎn)如下:

  • 通過(guò)擴(kuò)展 JavaScript 的能力,我們并非要?jiǎng)?chuàng)造一門(mén)全新的語(yǔ)言,而只是想修復(fù)它本身存在的問(wèn)題。

  • 對(duì) AI 來(lái)說(shuō),“最好的語(yǔ)言”就是它已經(jīng)大量見(jiàn)過(guò)的語(yǔ)言,在這個(gè)新世界里,全新的編程語(yǔ)言反而處于劣勢(shì)。

  • 找到那些無(wú)聊卻昂貴的事情,把它們交給 AI。

  • 工程師的金字塔正在變窄,入門(mén)層級(jí)的人變少了,而我們需要認(rèn)真思考,如何在這樣的環(huán)境下培養(yǎng)下一代資深工程師。

  • 開(kāi)源本身是一場(chǎng)巨大的實(shí)驗(yàn),盡管至今沒(méi)人真正解決“如何為開(kāi)源持續(xù)提供資金”這個(gè)問(wèn)題,但它不僅沒(méi)有衰退,反而比以往任何時(shí)候都更龐大、更活躍。

1 不如直接修 JS:TypeScript 的頓悟時(shí)刻

Eirini:從 Turbo Pascal、Delphi、C# 到如今的 TypeScript,你的工作塑造了數(shù)以百萬(wàn)計(jì)開(kāi)發(fā)者每天寫(xiě)代碼的方式。

Anders:我第一次接觸計(jì)算機(jī)大概是在高中時(shí)期,那是 70 年代末,我很快對(duì)編程產(chǎn)生了濃厚興趣。后來(lái),隨著 8 位微型計(jì)算機(jī)開(kāi)始出現(xiàn),我決定自己動(dòng)手組裝一臺(tái)套件機(jī),并為它編寫(xiě)大量軟件。我發(fā)現(xiàn)自己在這方面做得相當(dāng)不錯(cuò),而且也真的很享受這個(gè)過(guò)程。那時(shí)無(wú)論是結(jié)構(gòu)化編程還是匯編語(yǔ)言,對(duì)我來(lái)說(shuō)都不成問(wèn)題。當(dāng)然,還要考慮一個(gè)現(xiàn)實(shí)條件:只有 64K 內(nèi)存,能塞進(jìn)去的東西非常有限,還得給用戶(hù)留出空間,所以當(dāng)時(shí)一切都還能裝在腦子里。

Eirini:Turbo Pascal 在很大程度上革新了開(kāi)發(fā)者體驗(yàn),核心在于縮短開(kāi)發(fā)者的反饋回路。這在多大程度上是你一開(kāi)始就有意識(shí)的設(shè)計(jì)理念?

Anders:首先,人們之所以喜歡早期機(jī)器上的 BASIC,很大原因正是它的短反饋周期。BASIC 是解釋型語(yǔ)言,輸入代碼就能立刻運(yùn)行,但代價(jià)是運(yùn)行速度慢,而且編輯器是基于行的,體驗(yàn)很糟。相比之下,當(dāng)時(shí)的文字處理軟件已經(jīng)是所見(jiàn)即所得的屏幕編輯器,可以自由移動(dòng)光標(biāo),這顯然更適合寫(xiě)代碼。與此同時(shí),“輸入—運(yùn)行—立刻看到結(jié)果”的模式又非常吸引人。

要在編譯型語(yǔ)言中實(shí)現(xiàn)這一點(diǎn)并獲得性能,就必須有極快的編譯器。Turbo Pascal 的做法是:你一按下運(yùn)行,它立即在內(nèi)存中完成編譯,甚至不需要訪(fǎng)問(wèn)磁盤(pán),然后直接運(yùn)行。如果出現(xiàn)錯(cuò)誤,就立刻回到編輯器。編譯器本身非常原始,你甚至需要通過(guò)出錯(cuò)地址反推源碼位置。但正因如此,突然之間就獲得了一種高度交互的體驗(yàn),在當(dāng)時(shí)堪稱(chēng)革命性。

Eirini:那種“編譯要等一個(gè)下午”的體驗(yàn),會(huì)不會(huì)讓你感到沮喪?

Anders:當(dāng)然會(huì),沒(méi)有人喜歡等待。代碼已經(jīng)寫(xiě)完了,你只想立刻運(yùn)行,而不是坐在那里干等。

Eirini:Turbo Pascal 還有一個(gè)重要影響,就是以低價(jià)讓更多人接觸到編程?;仡^看,這一點(diǎn)你有什么感受?

Anders:這里有個(gè)有意思的故事。Turbo Pascal 的前身叫 Poly Pascal,是我在丹麥一家小型軟件公司里開(kāi)發(fā)的 Pascal 編譯器。后來(lái)我們聯(lián)系上了 Borland 的創(chuàng)始團(tuán)隊(duì),他們看過(guò)之后覺(jué)得非常驚艷,提議一起把它作為產(chǎn)品推向美國(guó)市場(chǎng)。然后他們決定定價(jià) 49.95 美元。我當(dāng)時(shí)的反應(yīng)是:“你們瘋了嗎?這樣根本賺不到錢(qián)?!笔潞罂磥?lái),這個(gè)決定非常聰明。雖然價(jià)格只有原來(lái)的十分之一,但銷(xiāo)量卻高出了三到四個(gè)數(shù)量級(jí)。最終結(jié)果非常成功,這個(gè)功勞主要要?dú)w于 Borland 的創(chuàng)始人 Philippe。

Eirini:Delphi 標(biāo)志著你從獨(dú)立創(chuàng)作者向團(tuán)隊(duì)領(lǐng)導(dǎo)者的轉(zhuǎn)變。

Anders:一開(kāi)始我基本上是單打獨(dú)斗,雖然在丹麥的 Borland 辦公室也會(huì)和兩三個(gè)人合作,但隨著機(jī)器性能飛速提升、用戶(hù)期望不斷提高,這種模式顯然無(wú)法持續(xù)。我必須學(xué)會(huì)團(tuán)隊(duì)協(xié)作,這在 Turbo Pascal 期間就已經(jīng)開(kāi)始,而在 Delphi 項(xiàng)目中尤為明顯。

你必須接受事情不會(huì)完全按照你個(gè)人偏好的方式完成,代碼也不一定長(zhǎng)成你心目中的樣子。而且你往往沒(méi)有時(shí)間親自去“修正”這些細(xì)節(jié),何況那樣做也未必真的改變產(chǎn)品行為,更重要的是學(xué)會(huì)放權(quán)。只有當(dāng)團(tuán)隊(duì)成員在各自負(fù)責(zé)的功能和模塊中感到被信任、被賦權(quán),團(tuán)隊(duì)才能真正運(yùn)轉(zhuǎn)起來(lái)。

Eirini:你在 Microsoft 參與 Visual J++ 的經(jīng)歷,對(duì) C# 和 .NET 平臺(tái)的目標(biāo)產(chǎn)生了怎樣的影響?

Anders:我是在 1996 年底加入 Microsoft 的,擔(dān)任 Java 開(kāi)發(fā)工具集的首席架構(gòu)師。我們剛發(fā)布了 Visual J++ 1,本質(zhì)上只是把 C++ 的 IDE 換成 Java 編譯器,談不上真正的集成,更沒(méi)有快速的應(yīng)用開(kāi)發(fā)體驗(yàn)。于是我們著手改進(jìn),這最終成為 Visual J++ 6.0,并開(kāi)始與 Visual Basic、Visual Studio 的版本體系對(duì)齊。

如果要為 Microsoft 的 DOS 和 Windows 平臺(tái)做 Java,就必須與這些環(huán)境高度互操作。但 Java 當(dāng)時(shí)強(qiáng)調(diào)“一次編寫(xiě),到處運(yùn)行”,強(qiáng)制使用最小公分母的 UI 接口,最終只能做出體驗(yàn)很差的小程序。我們不得不引入一些擴(kuò)展,簡(jiǎn)化與原生平臺(tái)的互操作,并構(gòu)建封裝 Windows UI 的類(lèi)庫(kù)。很快就發(fā)現(xiàn),這條路走不通。

如果真正為用戶(hù)著想,就必須允許構(gòu)建針對(duì)特定環(huán)境的最佳方案。人們既想要 Visual Basic 的易用性,又想要 C++ 的表達(dá)能力。于是我們嘗試把這兩者結(jié)合起來(lái),并構(gòu)建在 .NET 這樣一個(gè)可持續(xù)演進(jìn)的平臺(tái)之上,最大限度地利用用戶(hù)所運(yùn)行的系統(tǒng)能力,這正是整個(gè)構(gòu)想的核心。

Eirini:你既在談不同類(lèi)型的用戶(hù),又在描述為整個(gè)生態(tài)系統(tǒng)服務(wù)的思路,這種整體視角是如何形成的?

Anders:用戶(hù)并不在乎這是語(yǔ)言特性、框架特性、平臺(tái)能力,還是編輯器或調(diào)試器的問(wèn)題,對(duì)他們來(lái)說(shuō),一切加在一起才是“體驗(yàn)”。因此,這些部分必須協(xié)同設(shè)計(jì)。

我們構(gòu)建了運(yùn)行時(shí)、JIT 編譯器、垃圾回收器,設(shè)計(jì)了平臺(tái)的字節(jié)碼,開(kāi)發(fā)了類(lèi)庫(kù)。我既參與語(yǔ)言設(shè)計(jì),也參與類(lèi)庫(kù)和運(yùn)行時(shí)的設(shè)計(jì),與負(fù)責(zé)這些組件的工程師密切合作,最終效果因此更好。否則,各自為政會(huì)形成孤島,最后只能靠復(fù)雜的互操作層勉強(qiáng)拼接,結(jié)果自然談不上“最佳實(shí)踐”。

此外,我們也不懼怕與底層平臺(tái)深度互操作。過(guò)于教條地堅(jiān)持最小公分母,拒絕利用具體平臺(tái)的優(yōu)勢(shì),這樣永遠(yuǎn)不可能做到真正意義上的“最佳體驗(yàn)”。

Eirini:當(dāng)時(shí)是否有某個(gè)“頓悟時(shí)刻”,讓你意識(shí)到 JavaScript 在規(guī)?;l(fā)展中的陣痛已經(jīng)成為必須解決的問(wèn)題,而且這是一個(gè)需要由你、由 Microsoft 來(lái)解決的問(wèn)題?

Anders:行業(yè)里的運(yùn)行時(shí)環(huán)境開(kāi)始變得足夠成熟,比如 Google 在 V8 上做了非常出色的工作,JavaScript 的運(yùn)行性能突然變得相當(dāng)可觀(guān)。HTML5 也正式定稿,UI 能力大幅提升。同時(shí),手機(jī)、iPad 等各種形態(tài)的設(shè)備出現(xiàn)了,而它們并不運(yùn)行 Windows。整個(gè)行業(yè)突然意識(shí)到,真正的平臺(tái)競(jìng)爭(zhēng)不在 Java,而在 JavaScript、瀏覽器和 HTML 上。

于是,人們開(kāi)始編寫(xiě)越來(lái)越龐大的應(yīng)用,因?yàn)樾碌倪\(yùn)行時(shí)和 UI 技術(shù)已經(jīng)允許這樣做。但很快大家就發(fā)現(xiàn),在一種動(dòng)態(tài)語(yǔ)言里、缺乏成熟工具支持的情況下,這件事難得令人發(fā)指,于是我們看到了各種奇怪的扭曲做法。

其中一個(gè)典型案例是 Outlook.com 團(tuán)隊(duì)找到我們,主要是 .NET 和 C# 團(tuán)隊(duì),詢(xún)問(wèn)是否可以把他們內(nèi)部的一個(gè)叫 Script# 的東西產(chǎn)品化。我當(dāng)時(shí)一頭霧水:“Script# 是什么?”他們說(shuō),這是一個(gè)允許你用 C# 編寫(xiě)代碼,然后編譯成 JavaScript 來(lái)運(yùn)行的工具。我第一反應(yīng)是:這聽(tīng)起來(lái)像是兩邊的缺點(diǎn)都占全了。

但事實(shí)是,這么做的真正原因在于可以獲得“成熟的工具鏈”:類(lèi)型檢查、團(tuán)隊(duì)協(xié)作能力、接口定義,以及對(duì)模塊之間交互方式的清晰描述。因?yàn)樗麄冇谐砂偕锨绦騿T參與開(kāi)發(fā),不可能只靠裸寫(xiě) JavaScript,在沒(méi)有檢查、沒(méi)有自動(dòng)補(bǔ)全、沒(méi)有重構(gòu)支持的情況下完成工作。

這讓我開(kāi)始反思:JavaScript 真的已經(jīng)糟糕到這種程度了嗎?而“先寫(xiě)另一門(mén)語(yǔ)言,再把 JavaScript 當(dāng)成中間表示或字節(jié)碼來(lái)編譯”,真的是解決問(wèn)題的最佳方式嗎?如果能直接修復(fù) JavaScript 本身,會(huì)發(fā)生什么?于是我們開(kāi)始探索這條路,事實(shí)證明,這個(gè)方向效果相當(dāng)不錯(cuò)。

2 JavaScript 單線(xiàn)程的天花板:我們?cè)诶速M(fèi) 90% 的算力

Eirini:TypeScript 被設(shè)計(jì)成 JavaScript 的嚴(yán)格超集,這背后顯然有深思熟慮的戰(zhàn)略考量。你是如何堅(jiān)持這一決策的?這又能給其他語(yǔ)言設(shè)計(jì)者哪些啟示?

Anders:每當(dāng)有人跑來(lái)跟我說(shuō):“我在考慮做一門(mén)全新的編程語(yǔ)言,能解決這個(gè)、解決那個(gè)”,我給出的第一條建議通常是:這個(gè)世界對(duì)新編程語(yǔ)言的需求,就像對(duì)頭上再多一個(gè)洞的需求一樣。

第二條建議是:如果你真的要做一門(mén)語(yǔ)言,要意識(shí)到其中 90% 的工作,和其他所有語(yǔ)言是完全一樣的,而且這個(gè)比例還在不斷上升。如今,程序員的期望早已不只是一個(gè)編譯器,你還需要完善的語(yǔ)言服務(wù),能夠集成到幾乎所有主流 IDE 中,需要能與 AI 交互的 MCP 服務(wù)器,需要調(diào)試器、性能分析工具……

此外,你還得有至少十年的時(shí)間,因?yàn)橐婚T(mén)語(yǔ)言真正站穩(wěn)腳跟、獲得有意義的用戶(hù)規(guī)模,往往就是這么長(zhǎng)的周期。沒(méi)有人會(huì)在一開(kāi)始就擁抱一門(mén)全新的語(yǔ)言,頭五年你很可能用戶(hù)寥寥,還得不斷回答“我們真的要繼續(xù)投入嗎?”這是一門(mén)非常艱難的生意。

通過(guò)擴(kuò)展 JavaScript 的能力,我們并非要?jiǎng)?chuàng)造一門(mén)全新的語(yǔ)言,而只是想修復(fù)它本身存在的問(wèn)題。在 Visual Studio Code 里,我們的語(yǔ)言服務(wù)對(duì) TypeScript 和 JavaScript 是同一套。對(duì)我們而言,JavaScript 只是沒(méi)有類(lèi)型注解的 TypeScript,或者使用 JSDoc 注解的另一種形式。這意味著我們不是在做兩套東西,而是在同一項(xiàng)投入之上,精確地構(gòu)建真正必要的能力,只為讓整個(gè)生態(tài)系統(tǒng)變得更好。

Eirini:2012 年在 GitHub 上啟動(dòng) TypeScript 的開(kāi)源項(xiàng)目,在當(dāng)時(shí)的 Microsoft 可以說(shuō)是一次相當(dāng)激進(jìn)的舉動(dòng)。

Anders:我們當(dāng)時(shí)對(duì) JavaScript 生態(tài)的運(yùn)作方式、價(jià)值觀(guān)以及參與社區(qū)所需的前提,其實(shí)有著非常清晰的認(rèn)識(shí)。大家都明白,如果不開(kāi)源,這個(gè)社區(qū)根本不會(huì)理你,一個(gè)封閉的商業(yè)產(chǎn)品對(duì)他們毫無(wú)吸引力。因此,從一開(kāi)始我們就主張開(kāi)源。同時(shí),Microsoft 內(nèi)部也逐漸意識(shí)到,開(kāi)源并不是“洪水猛獸”,而是如果想真正與開(kāi)發(fā)者對(duì)話(huà),就必須擁抱的現(xiàn)實(shí)。

你剛才提到 2012 年發(fā)布在 GitHub,其實(shí)并不準(zhǔn)確。2012 年我們發(fā)布在 CodePlex——Microsoft 自家的、并不太受歡迎的開(kāi)源平臺(tái)上。結(jié)果就是,反響寥寥。那時(shí)所謂的“開(kāi)源”,更多只是把代碼丟到倉(cāng)庫(kù)里,讓大家提 issue,然后我們?cè)侔堰@些 issue 抓回內(nèi)部系統(tǒng),按內(nèi)部流程處理。某種程度上,這也解釋了為什么幾乎沒(méi)人關(guān)注。

再加上當(dāng)時(shí) Microsoft 在開(kāi)源社區(qū)中的信譽(yù)并不高。真正的“主戰(zhàn)場(chǎng)”在 GitHub。于是 2014 年我們遷移到了 GitHub,全面采用開(kāi)放式開(kāi)發(fā)流程。內(nèi)部成員和外部貢獻(xiàn)者遵循完全相同的規(guī)則,所有功能都通過(guò) Pull Request 提交,所有討論都公開(kāi)進(jìn)行。直到那時(shí),項(xiàng)目才真正開(kāi)始起飛,社區(qū)的興趣也隨之而來(lái)。

Eirini:從“把代碼扔給社區(qū)”到真正的開(kāi)放式開(kāi)發(fā),你們學(xué)到了哪些經(jīng)驗(yàn)?

Anders:這是一個(gè)徹頭徹尾的雙贏。對(duì)用戶(hù)來(lái)說(shuō),他們能看到“香腸是怎么做出來(lái)的”,所有討論都在公開(kāi)的 issue 里完成,而不是私下做決定后再給出一個(gè)結(jié)果。

對(duì)項(xiàng)目開(kāi)發(fā)者而言,這種方式同樣令人滿(mǎn)足。你每天都能感受到社區(qū)的參與和認(rèn)可,看到點(diǎn)贊、看到討論,遠(yuǎn)比關(guān)起門(mén)來(lái)做六個(gè)月或一年,然后祈禱產(chǎn)品方向正確要有趣得多。在這里,用戶(hù)每天都在用投票告訴你他們最想要什么功能,我們只需按票數(shù)排序,就能清楚地知道優(yōu)先級(jí)。你解決這些問(wèn)題,社區(qū)的熱情就會(huì)進(jìn)一步增強(qiáng),形成正向循環(huán)。

Eirini:把 TypeScript 編譯器遷移到 Go 背后的動(dòng)機(jī)、權(quán)衡以及所面臨的挑戰(zhàn)是什么?

Anders:TypeScript 從一開(kāi)始就是自托管的,用它自身編寫(xiě),這意味著編譯器和整個(gè)工具鏈本質(zhì)上都是一個(gè) JavaScript 應(yīng)用。這帶來(lái)了很多好處,比如你甚至可以在瀏覽器里運(yùn)行編譯器,在瀏覽器中構(gòu)建一個(gè)完整的 IDE,一切都能正常工作。但隨著 TypeScript 的廣泛采用,以及用戶(hù)項(xiàng)目規(guī)模不斷擴(kuò)大,可擴(kuò)展性逐漸成為頭號(hào)問(wèn)題。

這里有 JavaScript 本身的一些內(nèi)在限制。它在設(shè)計(jì)上是單線(xiàn)程的,不支持共享內(nèi)存并發(fā),這意味著你實(shí)際上浪費(fèi)了 90% 的計(jì)算能力。此外,JavaScript 的執(zhí)行成本也很高,它的對(duì)象模型極為寬松,可以隨意給對(duì)象加屬性,這使得優(yōu)化非常困難,底層往往演變成復(fù)雜的哈希查找和緩存機(jī)制,遠(yuǎn)不如原生代碼高效。

所以我們當(dāng)時(shí)就清楚,自己正接二連三地白白損失收益。盡管放棄自托管讓人非常不舍,但即便用盡所有優(yōu)化技巧,性能瓶頸依然無(wú)法突破。

于是,在 2024 年夏天,我們開(kāi)始做原型驗(yàn)證,先從掃描器、解析器這些容易量化的模塊入手。很快就發(fā)現(xiàn),性能提升可以達(dá)到 10 倍:一半來(lái)自原生代碼,一半來(lái)自共享內(nèi)存并發(fā)。這樣的提升能把原本需要幾分鐘的事情縮短到十幾秒,完全改變了游戲規(guī)則。

同時(shí),我們也很清楚不想從零重寫(xiě)一個(gè)全新的編譯器。社區(qū)里有不少聲音主張“用 Rust 全部重寫(xiě)”,但我們認(rèn)為這并不可行。TypeScript 的類(lèi)型檢查器極其龐大復(fù)雜,許多行為只體現(xiàn)在現(xiàn)有代碼的精確語(yǔ)義中。如果重寫(xiě),就會(huì)陷入永無(wú)止境的差異追趕,最終無(wú)法與舊編譯器對(duì)齊。

因此我們的目標(biāo)是“遷移”,逐函數(shù)地把同樣的邏輯搬到原生語(yǔ)言中。當(dāng)然,這意味著必須重構(gòu)數(shù)據(jù)結(jié)構(gòu),因?yàn)樵Z(yǔ)言不允許像 JavaScript 那樣隨意給對(duì)象加屬性。我們嘗試過(guò)多種語(yǔ)言,很快排除了 Rust,因?yàn)槲覀兊木幾g器充滿(mǎn)了循環(huán)數(shù)據(jù)結(jié)構(gòu),并且高度依賴(lài)自動(dòng)垃圾回收,使用 Rust 等同于重寫(xiě)。

最終我們選擇了 Go。它在很多方面與 JavaScript 相似,這個(gè)選擇對(duì)我們來(lái)說(shuō)非常奏效?,F(xiàn)在我們擁有了一個(gè)原生編譯器,在功能上幾乎是舊編譯器的拷貝,連那些小怪癖都一模一樣,只是快了 10 倍,這意味著社區(qū)不需要推倒重來(lái)。當(dāng)我們正式切換時(shí),我相信大家會(huì)非常滿(mǎn)意。

3 “最適合 AI 的語(yǔ)言”

Eirini:在 AI 輔助編程的背景下,你認(rèn)為 TypeScript 為什么特別適合 AI 工作流?

Anders:很多人問(wèn)我,為什么不干脆設(shè)計(jì)一門(mén)“最適合 AI 的完美編程語(yǔ)言”。我的回答通常是:那樣的語(yǔ)言反而會(huì)成為最不適合 AI 的語(yǔ)言,因?yàn)樗粫?huì)出現(xiàn)在 AI 的訓(xùn)練數(shù)據(jù)中。

AI 在某種語(yǔ)言中寫(xiě)代碼的能力,與它見(jiàn)過(guò)這種語(yǔ)言代碼的數(shù)量幾乎成正比,它本質(zhì)上是在大量樣本的基礎(chǔ)上進(jìn)行再組合和外推。AI 已經(jīng)見(jiàn)過(guò)海量的 JavaScript、Python 和 TypeScript,因此在這些語(yǔ)言上表現(xiàn)得非常好。對(duì) AI 來(lái)說(shuō),“最好的語(yǔ)言”就是它已經(jīng)大量見(jiàn)過(guò)的語(yǔ)言,在這個(gè)新世界里,全新的編程語(yǔ)言反而處于劣勢(shì)。

AI 的確正在改變我們構(gòu)建產(chǎn)品的方式。以這次 TypeScript 遷移為例,我們也嘗試過(guò)用 AI 自動(dòng)完成代碼遷移,但效果并不好。一方面那是一年前的 AI,能力還有限;另一方面,遷移五十萬(wàn)行代碼并保證行為與原代碼完全一致,我們需要的是極其確定性的結(jié)果。AI 在翻譯過(guò)程中可能會(huì)產(chǎn)生細(xì)微的“幻覺(jué)”,而你又不得不逐行檢查,這并不劃算。在這種情況下,更好的方式或許是讓 AI 幫你生成“遷移工具”,而不是直接遷移代碼。

TypeScript 項(xiàng)目中有很大一部分是語(yǔ)言服務(wù),為 IDE 提供補(bǔ)全、跳轉(zhuǎn)、重構(gòu)和快速修復(fù)?,F(xiàn)在我們也在思考:既然 AI 已經(jīng)能在很多場(chǎng)景下做得更好,是否還有必要原樣遷移這些功能?類(lèi)型檢查器我們完整遷移了,但語(yǔ)言服務(wù)正在被大幅度重塑,以適應(yīng)一個(gè)“AI 已經(jīng)無(wú)處不在”的新環(huán)境。

Eirini:你如何看待 AI 工具正在改變編程本身,以及語(yǔ)言設(shè)計(jì)的方式?

Anders:在理想狀態(tài)下,AI 應(yīng)該幫助我們消除編程中那些繁瑣、重復(fù)的勞動(dòng)。以 TypeScript 的遷移為例,在我們開(kāi)發(fā)新代碼庫(kù)的同時(shí),舊代碼庫(kù)里仍然不斷有新的 Pull Request 出現(xiàn),我們已經(jīng)相當(dāng)成功地用 AI 把這些變更遷移過(guò)來(lái)。

再比如,項(xiàng)目里有成千上萬(wàn)條 issue,其中很多非常古老。它們是否仍然可復(fù)現(xiàn)?是否還相關(guān)?能否根據(jù)社區(qū)反饋排序?這些清理和維護(hù)工作過(guò)去總是被一拖再拖,最終卻成為拖慢項(xiàng)目前進(jìn)的“錨”?,F(xiàn)在,我們可以構(gòu)建 AI 機(jī)器人來(lái)完成這些工作。這是我認(rèn)為非常重要的一點(diǎn):找到那些無(wú)聊卻昂貴的事情,把它們交給 AI。

當(dāng)然,這也帶來(lái)新的困惑。如果 AI 取代了初級(jí)工程師,我們又該如何培養(yǎng)資深工程師?難道指望 AI 自己成長(zhǎng)為“高級(jí)程序員”,而人類(lèi)程序員逐漸消失嗎?我并不這么認(rèn)為。我們似乎正在逼近某種上限:AI 能做很多事,但仍然需要人類(lèi)以某種監(jiān)督者的角色參與其中。

可以預(yù)見(jiàn)的是,工程師的金字塔正在變窄,入門(mén)層級(jí)的人變少了,而我們需要認(rèn)真思考,如何在這樣的環(huán)境下培養(yǎng)下一代資深工程師。

Eirini:如果把時(shí)間拉長(zhǎng)到未來(lái)五到十年,在一個(gè)更加 AI 原生的世界里,你認(rèn)為 TypeScript 作為一門(mén)編程語(yǔ)言會(huì)如何演進(jìn)?

Anders:我認(rèn)為它的演進(jìn)方向其實(shí)相當(dāng)清晰。JavaScript 已經(jīng)不再是一門(mén)年輕的語(yǔ)言,它有一套成熟的標(biāo)準(zhǔn)化流程,而我們也深度參與其中。TypeScript 會(huì)沿著 JavaScript 的標(biāo)準(zhǔn)化路徑繼續(xù)發(fā)展,同時(shí)在其之上補(bǔ)充必要的類(lèi)型系統(tǒng)能力。

真正充滿(mǎn)不確定性的,是工具層面的變化。誰(shuí)能想到,隨著“對(duì)話(huà)式編程”這類(lèi)形態(tài)的出現(xiàn),命令行工具又重新變得如此重要?過(guò)去,AI 更多是作為助手存在:開(kāi)發(fā)者在 IDE 里,AI 幫你更快地輸入和補(bǔ)全代碼。但現(xiàn)在,這種關(guān)系正在反轉(zhuǎn)。AI 開(kāi)始承擔(dān)主要工作,而人類(lèi)轉(zhuǎn)向監(jiān)督和審閱。此時(shí),AI 并不一定需要我們傳統(tǒng)意義上的 IDE,盡管它仍然需要語(yǔ)言服務(wù)。

這也是為什么 MCP 這類(lèi)技術(shù)開(kāi)始變得有吸引力:通過(guò)把語(yǔ)言服務(wù)接入 MCP,讓 AI 能夠提出語(yǔ)義級(jí)的問(wèn)題、重構(gòu)請(qǐng)求等,并在一定的確定性邊界內(nèi)完成工作流。這本質(zhì)上是在用 LLM 或 Agent 的方式,完成過(guò)去只能在 IDE 中完成的事情,這將深刻改變開(kāi)發(fā)工具的形態(tài)。

Eirini:圍繞 TypeScript 或你們的工作,有沒(méi)有哪些你希望公開(kāi)澄清的誤解?或者哪些你覺(jué)得被社區(qū)忽視、但其實(shí)很重要的事情?

Anders:在開(kāi)源領(lǐng)域,我們與社區(qū)的距離非常近。如果哪里不對(duì)勁、存在摩擦,幾乎會(huì)第一時(shí)間被反饋出來(lái)。比如這次轉(zhuǎn)向原生代碼的決定,確實(shí)引發(fā)了不少爭(zhēng)議,有人認(rèn)為我們應(yīng)該選擇另一種編程語(yǔ)言。但我始終堅(jiān)信,我們?yōu)檫@個(gè)目標(biāo)選對(duì)了工具。過(guò)去一年里,這個(gè)決定的成果已經(jīng)逐步顯現(xiàn)。

不過(guò),開(kāi)源本身就是一種微妙的平衡。一方面,你在無(wú)償?shù)匕殉晒唤o世界;另一方面,這個(gè)項(xiàng)目往往由一家商業(yè)公司資助,而公司必須以某種方式生存下去。總得有人支付賬單。因此,我們團(tuán)隊(duì)始終處在一種張力之中:如何讓開(kāi)源項(xiàng)目既符合社區(qū)期待,又與公司使命保持一致。這并不是 TypeScript 獨(dú)有的問(wèn)題,而是當(dāng)今幾乎所有開(kāi)源項(xiàng)目都面臨的現(xiàn)實(shí)。至于是否存在一種更好的激勵(lì)機(jī)制來(lái)回饋長(zhǎng)期投入的人,目前還沒(méi)有答案。

Eirini:開(kāi)源的可持續(xù)性,確實(shí)是一個(gè)反復(fù)被提起的問(wèn)題。

Anders:大量企業(yè)的正常運(yùn)轉(zhuǎn),事實(shí)上依賴(lài)于那些支撐其后端的開(kāi)源項(xiàng)目得到持續(xù)維護(hù)。但現(xiàn)實(shí)中,很多人對(duì)開(kāi)源的態(tài)度仍然是“索取多于付出”。在微軟,我們至少在努力以一種更真誠(chéng)的方式參與其中。僅 TypeScript 項(xiàng)目,就已經(jīng)累計(jì)投入了數(shù)百人數(shù)年的工作量;而 Visual Studio Code,投入甚至可能達(dá)到上千人。

Eirini:如果不算你自己參與創(chuàng)造的語(yǔ)言,你最敬佩、最尊重哪一門(mén)編程語(yǔ)言?

Anders:任何一門(mén)能被程序員廣泛使用、甚至能進(jìn)入討論范圍的編程語(yǔ)言,都一定有其可取之處,因此都值得尊重,我深知一門(mén)語(yǔ)言要走到這一步有多難。

以 Rust 為例,我非常敬佩它通過(guò)借用檢查器來(lái)探索一種不同的內(nèi)存管理方式,試圖在不依賴(lài)昂貴自動(dòng)垃圾回收的情況下保證安全性。我也很尊重 Go,盡管它在設(shè)計(jì)上有些“怪”,常被認(rèn)為不太正統(tǒng),但它實(shí)際上提供了一種簡(jiǎn)單、內(nèi)存安全、類(lèi)型安全的“現(xiàn)代 C”的思路。至于 Python,它的成功不需要多說(shuō),它驅(qū)動(dòng)著 AI 和機(jī)器學(xué)習(xí)的發(fā)展,令人難以不心生敬意。

從語(yǔ)言設(shè)計(jì)者的角度看,我們都站在前人的肩膀之上。如果設(shè)計(jì)一門(mén)語(yǔ)言卻不向其他語(yǔ)言學(xué)習(xí),那是愚蠢的。經(jīng)驗(yàn)與智慧就在那里,理應(yīng)被尊重和繼承。

Eirini:當(dāng)你放眼整個(gè)以 GitHub 等協(xié)作平臺(tái)為中心的軟件開(kāi)發(fā)生態(tài)時(shí),是什么讓你對(duì)未來(lái)保持樂(lè)觀(guān)?

Anders:僅僅是它依然存在這一事實(shí),就足以讓我感到樂(lè)觀(guān)。開(kāi)源本身是一場(chǎng)巨大的實(shí)驗(yàn),盡管至今沒(méi)人真正解決“如何為開(kāi)源持續(xù)提供資金”這個(gè)問(wèn)題,但它不僅沒(méi)有衰退,反而比以往任何時(shí)候都更龐大、更活躍。

當(dāng)然,其中也有大量噪音,有不少項(xiàng)目缺乏維護(hù),但不可否認(rèn)的是,這些代碼記錄了軟件演化的全過(guò)程。以我們?yōu)槔D(zhuǎn)向這種協(xié)作工作流后,十二年的歷史都被完整地保存在那里,可搜索、可追溯。如果我記得某個(gè)問(wèn)題曾被討論過(guò),只需要去查找,而不必面對(duì)一封再也找不到的舊郵件,這種價(jià)值是巨大的。正因如此,我由衷地高興看到它仍在持續(xù)增長(zhǎng),并頑強(qiáng)地存活下來(lái)。

https://www.youtube.com/watch?v=uMqx8NNT4xY

https://devclass.com/2026/01/28/typescript-inventor-anders-hejlsberg-ai-is-a-big-regurgitator-of-stuff-someone-has-done/

聲明:本文為 InfoQ 翻譯整理,不代表平臺(tái)觀(guān)點(diǎn),未經(jīng)許可禁止轉(zhuǎn)載。

會(huì)議推薦

InfoQ 2026 全年會(huì)議規(guī)劃已上線(xiàn)!從 AI Infra 到 Agentic AI,從 AI 工程化到產(chǎn)業(yè)落地,從技術(shù)前沿到行業(yè)應(yīng)用,全面覆蓋 AI 與軟件開(kāi)發(fā)核心賽道!集結(jié)全球技術(shù)先鋒,拆解真實(shí)生產(chǎn)案例、深挖技術(shù)與產(chǎn)業(yè)落地痛點(diǎn),探索前沿領(lǐng)域、聚焦產(chǎn)業(yè)賦能,獲取實(shí)戰(zhàn)落地方案與前瞻產(chǎn)業(yè)洞察,高效實(shí)現(xiàn)技術(shù)價(jià)值轉(zhuǎn)化。把握行業(yè)變革關(guān)鍵節(jié)點(diǎn),搶占 2026 智能升級(jí)發(fā)展先機(jī)!

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
從康波周期來(lái)看,2026年處于什么階段?

從康波周期來(lái)看,2026年處于什么階段?

楓冷慕詩(shī)
2026-02-05 13:35:30
上海著名主持人直播中淚目!中東戰(zhàn)火下,有人平安返航、有人新婚分離、有人只想回家

上海著名主持人直播中淚目!中東戰(zhàn)火下,有人平安返航、有人新婚分離、有人只想回家

新民晚報(bào)
2026-03-02 14:52:26
剛剛發(fā)布的iPhone 17e,價(jià)格太良心了!

剛剛發(fā)布的iPhone 17e,價(jià)格太良心了!

機(jī)智貓
2026-03-02 23:46:07
印度公司欺騙中國(guó),轉(zhuǎn)賣(mài)稀土給美國(guó)雷神造導(dǎo)彈,阿三既蠢又邪惡

印度公司欺騙中國(guó),轉(zhuǎn)賣(mài)稀土給美國(guó)雷神造導(dǎo)彈,阿三既蠢又邪惡

我心縱橫天地間
2026-01-29 21:09:12
突發(fā)!李雨桐實(shí)名開(kāi)撕薛之謙,劇情反轉(zhuǎn)比翻書(shū)還快,結(jié)局全網(wǎng)傻眼

突發(fā)!李雨桐實(shí)名開(kāi)撕薛之謙,劇情反轉(zhuǎn)比翻書(shū)還快,結(jié)局全網(wǎng)傻眼

阿廢冷眼觀(guān)察所
2026-03-03 07:19:00
誰(shuí)能想到她已經(jīng)62了,說(shuō)18都有人信,怎么做到這么好的狀態(tài)的

誰(shuí)能想到她已經(jīng)62了,說(shuō)18都有人信,怎么做到這么好的狀態(tài)的

白宸侃片
2026-02-11 11:56:19
汪小菲沒(méi)想到,小兒子才生7天,S家汪家“兩重天”,王思聰沒(méi)說(shuō)錯(cuò)

汪小菲沒(méi)想到,小兒子才生7天,S家汪家“兩重天”,王思聰沒(méi)說(shuō)錯(cuò)

千言?shī)蕵?lè)記
2026-03-02 21:47:06
鴻蒙智行處罰違規(guī)營(yíng)銷(xiāo)門(mén)店

鴻蒙智行處罰違規(guī)營(yíng)銷(xiāo)門(mén)店

每日經(jīng)濟(jì)新聞
2026-03-02 17:08:50
27天入賬330萬(wàn),趙心童和女友林薇的“頂配愛(ài)情”沖上熱搜

27天入賬330萬(wàn),趙心童和女友林薇的“頂配愛(ài)情”沖上熱搜

科學(xué)發(fā)掘
2026-03-02 16:46:08
13勝2平!亞足聯(lián)確認(rèn) 中國(guó)女足創(chuàng)36年神跡 今日亞洲杯首秀保底5-0

13勝2平!亞足聯(lián)確認(rèn) 中國(guó)女足創(chuàng)36年神跡 今日亞洲杯首秀保底5-0

侃球熊弟
2026-03-03 00:10:03
2歲的兒媳婦自己找上門(mén)!驚呆了!生活里那些驚人的巧合

2歲的兒媳婦自己找上門(mén)!驚呆了!生活里那些驚人的巧合

另子維愛(ài)讀史
2026-02-05 23:23:06
不拼GDP、不炫富,浙江第二有錢(qián)的城市,吊打眾多省會(huì)

不拼GDP、不炫富,浙江第二有錢(qián)的城市,吊打眾多省會(huì)

毒sir財(cái)經(jīng)
2026-03-02 21:00:47
1991 年,鄧小平特派代表赴美團(tuán)聚張學(xué)良,邀他重返故土,張學(xué)良回應(yīng):“回大陸可以,但我有三個(gè)要求”

1991 年,鄧小平特派代表赴美團(tuán)聚張學(xué)良,邀他重返故土,張學(xué)良回應(yīng):“回大陸可以,但我有三個(gè)要求”

文史明鑒
2025-12-21 17:07:19
凌晨!河北突發(fā)地震!

凌晨!河北突發(fā)地震!

新牛城
2026-03-03 09:29:46
三十年后小孩終于認(rèn)慫:行行行,《拳皇97》我打不過(guò)你們

三十年后小孩終于認(rèn)慫:行行行,《拳皇97》我打不過(guò)你們

街機(jī)時(shí)代
2026-03-02 18:00:03
離譜!一男子存500萬(wàn)一年定期,利息151000。到期取錢(qián),工作人員卻說(shuō),存單是假的!男子怒了直接告上法院!

離譜!一男子存500萬(wàn)一年定期,利息151000。到期取錢(qián),工作人員卻說(shuō),存單是假的!男子怒了直接告上法院!

上海約飯局
2025-12-02 18:47:01
伊朗吃肉的時(shí)候,對(duì)中國(guó)防得嚴(yán)嚴(yán)實(shí)實(shí),生怕中國(guó)占一點(diǎn)便宜

伊朗吃肉的時(shí)候,對(duì)中國(guó)防得嚴(yán)嚴(yán)實(shí)實(shí),生怕中國(guó)占一點(diǎn)便宜

百態(tài)人間
2026-02-24 15:37:37
鄒市明一家國(guó)外度假!冉瑩穎膘肥體壯不好惹,軒軒一頭白毛好土氣

鄒市明一家國(guó)外度假!冉瑩穎膘肥體壯不好惹,軒軒一頭白毛好土氣

小徐講八卦
2026-03-01 05:51:11
特朗普列四大目標(biāo):戰(zhàn)爭(zhēng)恐拖更久,不排除派地面部隊(duì)

特朗普列四大目標(biāo):戰(zhàn)爭(zhēng)恐拖更久,不排除派地面部隊(duì)

觀(guān)察者網(wǎng)
2026-03-03 08:22:01
香港中聯(lián)辦原副主任祁斌,新職明確

香港中聯(lián)辦原副主任祁斌,新職明確

觀(guān)察者網(wǎng)
2026-03-02 21:29:04
2026-03-03 10:24:49
InfoQ incentive-icons
InfoQ
有內(nèi)容的技術(shù)社區(qū)媒體
12096文章數(shù) 51783關(guān)注度
往期回顧 全部

科技要聞

蘋(píng)果iPhone17e發(fā)布:4499元起 升級(jí)A19芯片

頭條要聞

牛彈琴:多國(guó)對(duì)轟炸保持沉默 西班牙首相確實(shí)是條漢子

頭條要聞

牛彈琴:多國(guó)對(duì)轟炸保持沉默 西班牙首相確實(shí)是條漢子

體育要聞

伯納烏8萬(wàn)人暴怒!高呼78歲老佛爺下課

娛樂(lè)要聞

李亞鵬與哥哥和解 只有一條真心話(huà)短信

財(cái)經(jīng)要聞

霍爾木茲海峽近乎停擺 布油直逼80美元

汽車(chē)要聞

國(guó)民SUV再添一員 瑞虎7L靜態(tài)體驗(yàn)

態(tài)度原創(chuàng)

旅游
本地
親子
游戲
房產(chǎn)

旅游要聞

打造沉浸式元宵體驗(yàn) 萬(wàn)寧推出六大特色活動(dòng)

本地新聞

津南好·四時(shí)總相宜

親子要聞

孕吐是胎兒的自我保護(hù)?孕吐越嚴(yán)重,孩子越聰明?聽(tīng)專(zhuān)家怎么說(shuō)

Xbox發(fā)彩蛋暗示《賽博朋克2077》將加入XGP!?

房產(chǎn)要聞

方案突然曝光!??诒睅煷蟾叫?,又有書(shū)包大盤(pán)殺出!

無(wú)障礙瀏覽 進(jìn)入關(guān)懷版