偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

ChatGPT | AI自制編程語(yǔ)言-實(shí)現(xiàn)JavaScript編譯器

發(fā)布于 2025-6-9 00:42
瀏覽
0收藏

隨著當(dāng)前各種編程 ??Agent???,??MCP??? 的層出不窮,大模型的正在加速進(jìn)化,于是又開(kāi)始探索,不過(guò)這次的目標(biāo)是用 ??golang??? 實(shí)現(xiàn) ??JavaScript?? 引擎(目標(biāo)是完成 ES5.1 的全部功能)。

1. 回顧 JS 編譯器的實(shí)現(xiàn)過(guò)程


ChatGPT | AI自制編程語(yǔ)言-實(shí)現(xiàn)JavaScript編譯器-AI.x社區(qū)

如上是總結(jié)的 ??V8?? 大體的實(shí)現(xiàn)方式,編程語(yǔ)言的實(shí)現(xiàn)已經(jīng)經(jīng)歷了幾十年的發(fā)展,包括 V8,Lua等語(yǔ)言基本都采用類(lèi)似實(shí)現(xiàn)步驟:

  • 詞法分析
  • 語(yǔ)法分析
  • 語(yǔ)義解析和優(yōu)化
  • 虛擬機(jī)
  • 通過(guò) JIT 實(shí)現(xiàn)性能優(yōu)化
  • ...

2. 如何選擇工具鏈和知識(shí)庫(kù)


ChatGPT | AI自制編程語(yǔ)言-實(shí)現(xiàn)JavaScript編譯器-AI.x社區(qū)

2.1 AI 編碼助手

AI 編碼助手有很多,但是用的順手的卻不多,我個(gè)人經(jīng)常使用如下:

  • Trae 海外版本,使用 Builer 模式

優(yōu)點(diǎn):各種模型免費(fèi)(不過(guò)有時(shí)候需要排隊(duì)),對(duì)于 web 開(kāi)發(fā)友好,調(diào)試器比較方便

缺點(diǎn):界面與 VSCode 差異大,代碼提示不太友好,合并代碼經(jīng)常會(huì)出現(xiàn) bug,工具鏈不齊全

  • Windsurf,使用 Cascade:

優(yōu)點(diǎn):有些模型會(huì)現(xiàn)實(shí)免費(fèi),基于 VSCode 實(shí)現(xiàn),使用習(xí)慣差異不大,界面清晰,代碼提示和 bugfix 可以讓 AI 自動(dòng)執(zhí)行

缺點(diǎn):提示有時(shí)候有點(diǎn)亂,如果思考時(shí)間過(guò)長(zhǎng),會(huì)經(jīng)常超時(shí),不能添加自定義模型

  • Cursor:

優(yōu)點(diǎn):社區(qū)完善,自由選擇模型,支持 MCP 市場(chǎng),方便添加各種 rules

缺點(diǎn):太貴,功能太多導(dǎo)致新手了解有一定的門(mén)檻,多文件之前上下文切換不太流暢

2.2 知識(shí)庫(kù)

要實(shí)現(xiàn) JavaScript 編譯器,首先開(kāi)發(fā)者要了解編譯器實(shí)現(xiàn)方案(參考上圖),然后讓 AI 了解實(shí)現(xiàn)方案(雖然 AI 本身已經(jīng)有編譯器的實(shí)現(xiàn)原理,但是開(kāi)發(fā)者需要按照?qǐng)鼍疤崾?AI 按照哪種方案實(shí)現(xiàn)),最好要有簡(jiǎn)單的樣例給到 AI 編碼助手,這里提供一些知識(shí)庫(kù)的資料:

  • https://github.com/linkxzhou/mylib/tree/master/c%2B%2B/simplejs 非常簡(jiǎn)單的 JS 編譯器實(shí)現(xiàn)
  • https://github.com/wren-lang/wren wren 腳本語(yǔ)言源碼,大約 4000 行代碼
  • 書(shū)籍:《用 Go 語(yǔ)言自制解釋器》和《用 Go 語(yǔ)言自制編譯器》
  • 書(shū)籍:《編譯器設(shè)計(jì)(第二版)》和《自己動(dòng)手構(gòu)建編程語(yǔ)言》
  • JS 測(cè)試用例集合:https://github.com/tc39/test262

如果您實(shí)現(xiàn)的不是 JS 編譯器,也可以作為知識(shí)庫(kù),讓 AI 參考源碼按照你想要的方式實(shí)現(xiàn)(比如:用 Rust 實(shí)現(xiàn) JS ...)。

3. 解決思路

針對(duì) ??simplejs?? 實(shí)現(xiàn)的項(xiàng)目總結(jié)如下:

  • 制定明確的項(xiàng)目規(guī)則,我們要實(shí)現(xiàn)??Javascript?? 引擎,從以往的經(jīng)驗(yàn)上看,項(xiàng)目至少超過(guò) 3000 行,所以先要將功能拆解為規(guī)則(各種 Prompt),而不是直接輸入[實(shí)現(xiàn)Javascript引擎]
  • 在提示詞中明確指出技術(shù)棧、期望行為和約束條件,就像提供規(guī)范說(shuō)明書(shū),約束模型的邊界
  • 讓 AI 拆解功能,以小型、功能為單位劃分文件來(lái)生產(chǎn),測(cè)試和功能驗(yàn)證
  • 測(cè)試驅(qū)動(dòng)開(kāi)發(fā):先可以根據(jù)你描述的功能,生成測(cè)試用例,驗(yàn)證 AI 是否遵循了你的功能要求,然后生產(chǎn)功能邏輯后,盡可能多的再生產(chǎn)測(cè)試用例,最后保證測(cè)試用例100% 通過(guò)
  • 控制質(zhì)量:AI 輸出的任何功能,要了解邊界條件,并且提示 AI,輸出的代碼需要保持可讀性,甚至可以讓 AI 不斷重構(gòu)當(dāng)前的功能,以保證按照最少代碼實(shí)現(xiàn)
  • 控制上下文:如果上下文很多,我們不需要按照整個(gè)工程提問(wèn),而是按照某個(gè)文件,或者某個(gè)文件的某些行擴(kuò)展
  • 有時(shí)候需要人工:報(bào)錯(cuò)比較明確,或者歧義的代碼,建議開(kāi)發(fā)者直接上手改代碼修復(fù)
  • 必要時(shí)候切換模型:有些問(wèn)題用 DeepSeek 可以快速回答,就不需要用 Claude-3.7,當(dāng)某些模型不能解決當(dāng)前問(wèn)題時(shí),建議手動(dòng)切換不同模型嘗試(模型的邊界比較模糊,有些時(shí)候 Claude-3.7 不能解決,GPT-4o 卻可以解決)
  • 如果有文檔,可以單獨(dú)建立 docs 目錄,記錄你想要的功能或者 API,甚至需要鏈接的知識(shí)庫(kù)等
  • 調(diào)試代碼多加日志:打印比較多的日志,基于日志的上下文讓 AI 修復(fù) bug,能更快的分析問(wèn)題并解決問(wèn)題,而不是依賴(lài) AI 對(duì)整個(gè)功能分析

4. 總結(jié)(完成第一個(gè)版本)

代碼已經(jīng)開(kāi)源(simplejs): https://github.com/linkxzhou/mylib/tree/master/go/simplejs

通過(guò) AI 實(shí)現(xiàn)代碼詳細(xì)如下:

  • 測(cè)試用例:??2316?? 行
  • 功能代碼:??3556?? 行
  • 代碼覆蓋率:??coverage: 74.9% of statements??

ChatGPT | AI自制編程語(yǔ)言-實(shí)現(xiàn)JavaScript編譯器-AI.x社區(qū)

后續(xù)需要完成的工作:

  • 測(cè)試完整的 JS 測(cè)試集:tc39https://github.com/tc39/test262。
  • 增加性能優(yōu)化:

解決尾遞歸問(wèn)題

編譯預(yù)計(jì)算

嘗試通過(guò) AI 實(shí)現(xiàn)少量的 `JIT` 功能

...

  • 執(zhí)行??Benchmark???,運(yùn)行壓測(cè),讓??AI 分析 ??profile,找到性能優(yōu)化點(diǎn)。

本文轉(zhuǎn)載自??周末程序猿??,作者:周末程序猿

已于2025-6-9 10:53:32修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦