【问题标题】:Is Lisp a virtual machine like JVM?Lisp 是像 JVM 一样的虚拟机吗?
【发布时间】:2025-12-18 00:50:02
【问题描述】:

为什么有人将 Lisp 称为 JVM 之类的虚拟机?

【问题讨论】:

  • 您有该参考资料的来源吗?该人可能指的是 Clojure,一种 for JVM 的 LISP 方言。
  • 因为他们想强调 Common Lisp 的 RTS(运行时系统)方面而不是“Common Lisp 语言”方面。

标签: lisp common-lisp


【解决方案1】:

可能是因为那个人指的是在虚拟机上运行的 Lisp 的特定实现?至少自 70 年代以来,各种 Lisp 系统一直在专用虚拟机之上运行。一些当前的实现,如 CLISP 和 CMUCL 仍然有自己的虚拟机。

Lisp 的虚拟机通常是专门为 Lisp 的需求量身定制的。它们提供必要的原始数据类型(如 cons 单元、符号和大整数)、指令集(通用函数调用、运行时数据类型检查……)、内存管理(垃圾收集)和其他服务(动态加载代码)。他们经常提供某种扩展堆栈机器。

【讨论】:

  • 我不知道我会将 CMU CL 称为“在 VM 上运行”。但我已经很久没有看到引擎盖了。
  • @Vatine:CMUCL 有一个“字节码”编译器和一个执行引擎:common-lisp.net/project/cmucl/doc/cmu-user/…
  • 呵呵,每天都学点新东西。我一直坚定地将 CMU CL(和 SBCL)放在“编译为本机”阵营中。很高兴看到它也有这个选项。