三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

为何选 Common Lisp 进行代码生成?这 8 大优势给出答案!

为何选 Common Lisp 进行代码生成?这 8 大优势给出答案!

抽象异端:计算机科学与编程的非正统观点

这里是关于计算机科学和编程的非正统观点分享。

2026 年 8 月 6 日相关探讨

有人两次询问:若生成的代码无关紧要,且由 AI 负责编写语法这种繁重工作,为何还要用 Common Lisp 进行氛围编程,而不选择 Python、TypeScript 或 Java 这些主流语言呢?毕竟这些主流语言有大量训练集,模型能以很高统计准确率生成其代码。

原因众多,归根结底指向那个古老问题:既然有更流行的语言,为何还要用 Lisp ?答案是语言的流行程度并不能很好代表其实用性和表达能力。Lisp 社区早就明白这一点,这也是最初选择 Lisp 的原因。选择流行语言是中层管理人员为确保总能找到人维护代码的做法,而非顶尖黑客的选择。

选择 Common Lisp 进行代码生成的 8 大原因

  1. 专业知识基础:使用者使用 Common Lisp 编程已有几十年,对其了如指掌。氛围编程需要人类架构师监督机器,使用者查看模型生成的代码时,能瞬间判断代码是否可行或模型是否陷入死胡同。因为不深入理解一门语言,就无法成功指挥 AI。
  2. 重抽象轻实现:大多数现代语言要求精确描述机器处理数据的方式,而 Lisp 旨在表达高级抽象,而非繁琐的实现细节。使用者向 AI 提出需求时,希望它生成架构逻辑,而非与样板代码斗争来处理基本状态。
  3. 为精英设计:Lisp 是由顶尖黑客为顶尖黑客设计的语言,并非面向大众。它不会手把手教学,也不迎合编程培训班里最基础的模式。将其作为目标语言时,是在追求最大表达能力的环境中操作。
  4. 同像性与抽象语法树:这可能是最大的技术优势。Lisp 具有同像性,代码的结构与它所操作的数据相同。大语言模型(LLM)生成 Python 或 Java 代码时,必须预测表面语法,如空格、括号、分号和严格的类结构;而生成 Lisp 代码时,它直接在抽象语法树(AST)层面操作,预测的是纯粹的结构。消除语法障碍对 AI 代码生成是巨大优势。
  5. 宏作为上下文压缩工具:在氛围编程中,LLM 的上下文窗口是最宝贵的资源。Lisp 的宏系统提供了高效的上下文压缩方式。可以将冗长的样板代码隐藏在宏后面,让 AI 学习并使用宏,节省数千个令牌,从而在模型的内存限制内维护大型架构。
  6. 在 REPL 中进行内省:使用者不是在普通文本编辑器中使用 LLM,而是在 Lisp 的交互式开发环境(REPL)中操作。这使 LLM 可以在程序开发过程中进行内省,若需要了解特定对象或函数的状态,模型可以查询实时环境。这不是在编写静态文本,而是在与动态系统交互。
  7. 卓越的错误处理:当 AI 写出错误代码时,Lisp 的条件系统提供卓越的错误处理和调试功能。不会像其他语言那样硬崩溃而需完全重启,而是会捕获错误,LLM 可以分析堆栈跟踪,并在出错点交互式地调试生成的代码。
  8. 无需从头重启:使用 REPL 意味着每次测试更改时,不必从头启动程序。在编译型的主流语言中,AI 对代码进行一行修改都需完全重新构建和重置状态;而在 Lisp 中,只需重新定义特定的函数,然后立即在 REPL 中测试,应用程序的其他状态可保持不变,这种迭代速度是其他语言无法比拟的。

使用者认为不会给顶尖黑客使用普通的代码编写工具,希望自己的 AI 成为顶尖黑客,而不仅仅是代码编写员。如果期望 AI 达到顶尖水平,就应给它提供顶尖的工具,而非普通的代码编写工具。

评论与博客存档

有匿名用户评论,建议查看 github.com/gornskew/skewed - emacs,了解如何使用 LLM 代理生成 Common Lisp 代码。

博客存档展示了从 2006 年到 2026 年各月的文章情况,如 2026 年 8 月包含“llambda.lisp 在 Linux 上的应用”“为什么要用 Lisp 进行氛围编程?”等文章。

← 返回列表