和 LLM 搭档,请用「无聊」的语言

查看原文 HN 讨论

文章摘要

Jacob Young 提出一个有意思的论点:大语言模型在一致、同质的代码库上训练后,能生成更高质量的代码。换句话说,「LLM 会放大不一致的技术栈,又悄悄强化一致的技术栈」——碎片化的生态会让智能体产出更差,而标准化的生态则产出更好。他的核心原则是:训练语料里方差越低的语言和生态,越能被编程智能体可靠地表达和执行。用向量空间的话说,一致的训练数据带来一致的推理结果。

据此他把语言分成两类。「无聊」(适合 LLM)的:Go、Ruby on Rails、以及用法统一的 Python。「碎片化」(麻烦)的:JavaScript/Node 生态、以及包管理器多到打架的 Python。他指出 JavaScript「至少有十几个生产级框架」功能彼此重叠地竞争,而「Rails 基本上只有一个」;Go 则因为「抗拒便利特性」反而意外地成了理想选择。

文章重点夸了 Go:(1) goroutine 比 async/await 或回调更简单,没有「函数染色(colored function)」问题;(2) net/http 和加密标准库世界级且使用广泛;(3) gofmtgo vetgolangci-lint 自动强制单一规范风格;(4) 垃圾回收避免了智能体犯内存错误(不像 Rust 的借用检查那么复杂);(5) 失败模式有界、「坑(footgun)」比 Python 这类动态语言少。作者并未宣称 Go「客观最好」,而是给出务实结论:「这门语言和工具链足以写出一个工作工程师想要的大多数非可视化软件。」

HN 评论精华