![]()
600次重復(fù)實(shí)驗(yàn),13種編程語(yǔ)言,同一個(gè)AI模型。Ruby提交者Yusuke Endoh(遠(yuǎn)藤侑介)把Claude Code(Opus 4.6)當(dāng)成流水線上的質(zhì)檢員,讓它用每種語(yǔ)言寫一遍簡(jiǎn)化版Git。結(jié)果出爐后,一群信奉"靜態(tài)類型更安全高效"的開(kāi)發(fā)者集體破防——?jiǎng)討B(tài)語(yǔ)言不僅沒(méi)輸,反而在速度和成本上把靜態(tài)類型語(yǔ)言按在地上摩擦。
實(shí)驗(yàn)設(shè)計(jì):讓AI寫Git,然后計(jì)時(shí)收費(fèi)
遠(yuǎn)藤的測(cè)試任務(wù)相當(dāng)具體:實(shí)現(xiàn)一個(gè)迷你Git,支持init、add、commit、log四個(gè)基礎(chǔ)命令(v1階段),再擴(kuò)展status、diff、checkout、reset(v2階段)。每種語(yǔ)言跑20遍,總共600多次運(yùn)行。他用自定義哈希算法替代SHA-256,抹平了不同語(yǔ)言加密庫(kù)的差異。
這個(gè)設(shè)計(jì)聰明之處在于:它測(cè)的不是語(yǔ)言本身的運(yùn)行速度,而是AI用這門語(yǔ)言"干活"的效率。 換句話說(shuō),當(dāng)Claude Code面對(duì)不同語(yǔ)言時(shí),哪種讓它寫代碼更順手、調(diào)試更少、token消耗更低——這才是開(kāi)發(fā)者真正關(guān)心的成本結(jié)構(gòu)。
實(shí)驗(yàn)數(shù)據(jù)赤裸裸地偏向動(dòng)態(tài)語(yǔ)言。Ruby平均每次運(yùn)行73.1秒,花費(fèi)0.36美元;Python 74.6秒/0.38美元;JavaScript 81.1秒/0.39美元。三者穩(wěn)居前四,且成本差距極小。反觀靜態(tài)類型陣營(yíng),最慢的C#耗時(shí)189.3秒,成本1.04美元,是Ruby的2.9倍;Java 156.2秒/0.84美元,Rust 141.5秒/0.79美元,Go 124.8秒/0.68美元,全部落后。
為什么AI寫動(dòng)態(tài)語(yǔ)言更"順手"
遠(yuǎn)藤在DEV Community的復(fù)盤文章里點(diǎn)破了一層窗戶紙:Claude Code的訓(xùn)練數(shù)據(jù)分布極不均勻。Python、JavaScript、TypeScript(JavaScript的超集)在公開(kāi)代碼庫(kù)中占據(jù)絕對(duì)主導(dǎo)地位,Ruby雖然小眾,但其簡(jiǎn)潔的語(yǔ)法和"約定優(yōu)于配置"的設(shè)計(jì)哲學(xué),恰好契合AI生成代碼的偏好——代碼行數(shù)少,意味著模型需要生成的token少,推理鏈條短,出錯(cuò)概率低。
靜態(tài)語(yǔ)言的"類型體操"在此成了負(fù)擔(dān)。Rust的所有權(quán)系統(tǒng)、Java的泛型約束、C#的LINQ鏈?zhǔn)秸{(diào)用,人類寫起來(lái)或許能享受編譯期的安全感,但AI需要額外生成大量類型聲明和邊界處理代碼。一個(gè)Rust函數(shù)簽名可能占掉半屏,而Ruby同等功能只需三行。token計(jì)費(fèi)模式下, verbosity(冗長(zhǎng))直接轉(zhuǎn)化為美元。
穩(wěn)定性數(shù)據(jù)更扎心。動(dòng)態(tài)語(yǔ)言的成功率和完成時(shí)間波動(dòng)都更小,Ruby和Python的標(biāo)準(zhǔn)差控制在15%以內(nèi)。靜態(tài)語(yǔ)言里,Rust和C++的方差顯著偏高——遠(yuǎn)藤觀察到,Claude有時(shí)會(huì)陷入"編譯錯(cuò)誤→修復(fù)→引入新錯(cuò)誤"的循環(huán),尤其在處理借用檢查器(borrow checker)或模板推導(dǎo)時(shí)。
TypeScript的微妙位置
TypeScript(JavaScript的超集)在這次測(cè)試中表現(xiàn)尷尬:94.5秒/0.52美元,排名第五,剛好卡在動(dòng)態(tài)與靜態(tài)的分界線上。它比純JavaScript慢了16%,貴了33%,卻又比Go快了24%。
這個(gè)中間態(tài)揭示了更深層的問(wèn)題。TypeScript的類型系統(tǒng)給人類開(kāi)發(fā)者帶來(lái)了工程化紅利,但對(duì)AI而言,它繼承了JavaScript的靈活,卻沒(méi)甩掉類型注解的額外開(kāi)銷。遠(yuǎn)藤的GitHub倉(cāng)庫(kù)顯示,TypeScript版本的代碼行數(shù)比JavaScript多出約40%,主要來(lái)自接口定義和類型守衛(wèi)。AI生成這些"為編譯器服務(wù)"的代碼時(shí),既消耗token,又增加了出錯(cuò)節(jié)點(diǎn)。
一位參與討論的Hacker News用戶評(píng)論:「我用Claude寫TypeScript時(shí),它經(jīng)常生成完美通過(guò)類型檢查但邏輯錯(cuò)誤的代碼。類型安全成了幻覺(jué)。」這條留言獲得超過(guò)200個(gè)贊同。
成本結(jié)構(gòu)正在重塑技術(shù)選型
遠(yuǎn)藤的實(shí)驗(yàn)發(fā)布于2026年4月6日,恰逢AI輔助編程工具滲透率突破臨界點(diǎn)。GitHub Copilot、Cursor、Claude Code這類工具不再是嘗鮮玩具,而是實(shí)打?qū)嵉纳a(chǎn)要素。此時(shí)再看"動(dòng)態(tài)vs靜態(tài)"的宗教戰(zhàn)爭(zhēng),評(píng)判標(biāo)準(zhǔn)已經(jīng)偏移——人類可讀性讓位于AI可生成性,編譯期安全讓位于迭代速度。
數(shù)據(jù)背后的經(jīng)濟(jì)賬很直白。假設(shè)一個(gè)10人團(tuán)隊(duì)每天觸發(fā)100次AI代碼生成,選用Ruby而非Java,單日成本差距是48美元,年化節(jié)省超過(guò)1.2萬(wàn)美元。這對(duì)初創(chuàng)公司是真金白銀,對(duì)大廠是預(yù)算審批時(shí)的籌碼。更隱蔽的收益是時(shí)間:Ruby平均每次節(jié)省83秒,100次就是2.3小時(shí),這些時(shí)間流向調(diào)試、評(píng)審或摸魚,都是組織效率。
靜態(tài)語(yǔ)言的擁躉并非沒(méi)有反擊論據(jù)。有人在實(shí)驗(yàn)評(píng)論區(qū)指出,遠(yuǎn)藤的測(cè)試場(chǎng)景過(guò)于"腳本化"——Git的簡(jiǎn)化實(shí)現(xiàn)不涉及復(fù)雜架構(gòu),靜態(tài)類型的優(yōu)勢(shì)在大型系統(tǒng)、長(zhǎng)期維護(hù)、團(tuán)隊(duì)協(xié)作中才會(huì)顯現(xiàn)。這個(gè)觀點(diǎn)本身沒(méi)錯(cuò),但它回避了一個(gè)趨勢(shì)性問(wèn)題:當(dāng)AI能承擔(dān)80%的腳手架代碼和單元測(cè)試生成時(shí),"大型系統(tǒng)"的定義本身在被改寫。
Ruby的意外復(fù)興與Python的統(tǒng)治
Ruby奪得榜首是個(gè)有趣的腳注。這門語(yǔ)言在2010年代后期被Python擠壓得喘不過(guò)氣,Rails框架的神話褪色后,Ruby社區(qū)一度陷入存在焦慮。但遠(yuǎn)藤的測(cè)試暗示了一個(gè)被忽視的變量:Ruby的語(yǔ)法密度和表達(dá)力,在AI時(shí)代成了稀缺資產(chǎn)。
Python的勝利則毫無(wú)懸念。它本就是AI生態(tài)的母語(yǔ),訓(xùn)練數(shù)據(jù)占比碾壓其他語(yǔ)言。遠(yuǎn)藤作為Ruby核心提交者,在實(shí)驗(yàn)設(shè)計(jì)中對(duì)Python的"主場(chǎng)優(yōu)勢(shì)"有清醒認(rèn)知——他甚至專門對(duì)比了Python 3.11和3.12的性能差異,確認(rèn)版本升級(jí)帶來(lái)的邊際提升遠(yuǎn)小于語(yǔ)言選型本身的結(jié)構(gòu)性差距。
JavaScript的第三名同樣值得玩味。Node.js的異步模型曾讓AI生成代碼時(shí)頻繁踩坑回調(diào)地獄,但現(xiàn)代async/await語(yǔ)法和豐富的npm生態(tài),讓Claude Code能快速組裝解決方案。遠(yuǎn)藤的GitHub記錄顯示,JavaScript版本的依賴引入次數(shù)是Rust的3倍,但平均調(diào)試輪次反而更少——生態(tài)成熟度抵消了部分類型缺失的風(fēng)險(xiǎn)。
靜態(tài)語(yǔ)言的反擊空間
實(shí)驗(yàn)并非宣判靜態(tài)語(yǔ)言的死刑。遠(yuǎn)藤在結(jié)論部分留有余地:測(cè)試僅限于"AI從零生成新項(xiàng)目"的場(chǎng)景,而非"維護(hù)遺留代碼"或"重構(gòu)復(fù)雜模塊"。靜態(tài)類型在后者中的價(jià)值未被測(cè)量。
更有建設(shè)性的觀察來(lái)自Rust社區(qū)。幾位貢獻(xiàn)者在實(shí)驗(yàn)倉(cāng)庫(kù)提交issue,建議增加"AI輔助重構(gòu)"子測(cè)試——給定一段混亂的代碼,讓Claude分別用動(dòng)態(tài)和靜態(tài)語(yǔ)言進(jìn)行模塊化改造。這個(gè)提案獲得遠(yuǎn)藤的積極回應(yīng),暗示第二輪benchmark已在醞釀。
語(yǔ)言設(shè)計(jì)層面也有動(dòng)態(tài)調(diào)整的跡象。Go團(tuán)隊(duì)近期討論的"泛型簡(jiǎn)化提案"、Rust正在實(shí)驗(yàn)的"AI友好型錯(cuò)誤信息"改進(jìn),都指向同一個(gè)認(rèn)知:工具鏈和編譯器反饋的優(yōu)化,可能比語(yǔ)法本身更能影響AI的生成效率。
開(kāi)發(fā)者該換語(yǔ)言嗎
遠(yuǎn)藤的實(shí)驗(yàn)數(shù)據(jù)在Hacker News和Lobste.rs上引發(fā)了兩極反應(yīng)。一部分人將其視為技術(shù)選型的決策依據(jù),開(kāi)始重新評(píng)估技術(shù)棧的AI兼容性;另一部分人警惕"用benchmark代替思考",指出600次運(yùn)行的樣本量雖大,但單一任務(wù)(Git簡(jiǎn)化版)的代表性有限。
更務(wù)實(shí)的聲音來(lái)自一線工程師。一位在Stripe工作的Ruby開(kāi)發(fā)者留言:「我們?cè)缇筒患m結(jié)動(dòng)態(tài)還是靜態(tài)了。問(wèn)題是,當(dāng)AI能5分鐘生成一個(gè)能跑的Ruby腳本,我為什么還要寫Java的POJO和DTO?」這條評(píng)論的潛臺(tái)詞是,語(yǔ)言爭(zhēng)論的底層邏輯已經(jīng)被抽換——評(píng)判標(biāo)準(zhǔn)從"這門語(yǔ)言能讓我寫出更好的代碼"變成了"這門語(yǔ)言能讓AI更快幫我完成任務(wù)"。
遠(yuǎn)藤本人在實(shí)驗(yàn)總結(jié)中保持了技術(shù)人員的克制。他沒(méi)有呼吁遷移技術(shù)棧,只是平淡地陳述:「如果你主要使用AI輔助編程工具,且任務(wù)類型與本次測(cè)試相似,數(shù)據(jù)建議優(yōu)先考慮動(dòng)態(tài)語(yǔ)言。」這個(gè)表述留足了安全邊際,也暗示了后續(xù)研究的方向——不同任務(wù)類型、不同AI模型、不同團(tuán)隊(duì)規(guī)模,結(jié)論可能迥異。
實(shí)驗(yàn)倉(cāng)庫(kù)的最后一個(gè)commit是4月5日的README更新,遠(yuǎn)藤添加了一行備注:「歡迎提交其他語(yǔ)言的實(shí)現(xiàn)或測(cè)試場(chǎng)景建議。」截至發(fā)稿,該倉(cāng)庫(kù)已收到47個(gè)pull request,涵蓋從Zig到COBOL的奇想。下一個(gè)顛覆性數(shù)據(jù),或許就藏在某個(gè)邊緣語(yǔ)言的20次運(yùn)行里。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(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.