Vera:專為機器編寫而設計的程式語言
Vera 是一款專為大型語言模型設計的新型程式語言,其特點是不使用變數名稱並強制執行形式化驗證,以確保程式碼的連貫性與正確性。它能編譯為 WebAssembly,並提供結構化的 JSON 錯誤診斷,協助 AI 代理在開發過程中進行自我修正。
背景
Vera 是一款專為大型語言模型(LLM)設計的新型程式語言,其核心理念在於將程式語言的演進與 AI 寫作的需求掛鉤。該語言取消了傳統的變數命名,改用結構化的引用方式,並強制要求合約驗證與純函數設計,旨在解決模型在處理大規模程式碼時容易產生的連貫性與命名混淆問題。
社群觀點
Hacker News 社群對 Vera 的設計哲學展現出兩極化的反應,其中最具爭議的焦點在於「取消變數名稱」這一決策。支持者認為,變數名稱確實常導致模型產生幻覺或誤用,透過結構化引用能讓程式碼更具可驗證性。然而,多數評論者對此持懷疑態度,認為語義化的命名對人類與 AI 而言都是理解邏輯的關鍵。有人指出,缺乏名稱會讓程式碼變得難以搜尋與維護,且一旦在函數頂部插入新變數,後續所有的索引引用都必須更動,這反而增加了模型維護狀態的負擔。
在技術實現上,社群深入討論了 Vera 如何處理除以零等編譯時錯誤。部分開發者推測這類靜態分析類似於 C# 的可空類型檢查,透過 Z3 等求解器在編譯階段強制要求邏輯完備。儘管這種嚴謹性受到肯定,但也有評論者批評這種設計過於理想化,甚至帶有一種「氛圍驅動開發」的色彩,質疑其在現實複雜場景下的可行性。特別是針對 LLM 的優化,有觀點認為與其發明新語言,不如使用 Go 或 Java 等在訓練數據中佔比極高、且語法相對直觀的語言,因為模型在處理未見過的語法時表現通常較差。
此外,關於「局部性」與「密度」的討論也十分熱烈。一些開發者認為,適合 AI 的語言應該具備極高的局部性,讓功能邏輯集中在單一檔案中以適應上下文窗口限制。但也有人反駁,過度密集的語言(如 Haskell)反而讓模型難以推理,適度的冗餘與清晰的類型系統(如 Scala 或 Gleam)或許才是 AI 輔助開發的最佳平衡點。社群普遍達成的一項共識是,雖然 Vera 試圖解決模型在命名上的弱點,但卻忽略了「可讀性」對於人類審核 AI 產出程式碼的重要性,若人類無法理解 AI 寫了什麼,這種語言的實用價值將大打折扣。
延伸閱讀
在討論過程中,社群成員提到了幾個值得關注的相關資源。針對 AI 與程式語言關係的研究,有人推薦閱讀關於 Scala 在 LLM 時代優勢的論文《Scala is Great for LLMs》。在工具層面,則提到了 Ataraxy-Labs 開發的 weave,這是一個具備抽象語法樹(AST)感知能力的 Git 合併工具。此外,討論中也提及了 Unison 語言的內容定址特性,以及 Scala 的 Capybara 專案,這些都被視為在類型系統與資源管理上對 AI 友好的設計範例。
相關文章