包GCL和CLISP有什么区别?

Art*_*erg 4 ubuntu clisp common-lisp gnu-common-lisp

在Ubuntu存储库中有两个Lisp实现:GCL和CLISP.它们之间有根本区别吗?哪一个更接近行业标准?

jki*_*ski 5

Common Lisp实际上是在ANSI标准中定义的.它有很多实现,包括商业和FOSS.这些实现通常符合标准,并为标准中未定义的内容(如线程,FFI和unicode)提供了一些自己的扩展.

您应该看到http://www.cliki.net/Common%20Lisp%20implementation以进行实现比较.您应该使用哪一个取决于您的需求和偏好.首先,您可以选择一个.语言本身无论如何都是一样的,只要您不使用任何特定于实现的扩展,您可以根据需要轻松切换到另一个.

我个人更喜欢Linux上的SBCL.它具有良好的性能,包括线程和所有的扩展.主要的缺点是程序将非常大(磁盘空间和内存使用).如果您正在构建服务器端应用程序,或者无论如何都要大于实现,那么这并不重要,但对于较小的客户端工具,您可能需要查看CLISP.我没有使用GCL,所以我不能说太多.


mob*_*eng 5

只是为了澄清:Lisp命名了编程语言家族,其中包括(机器人不限于):

  • ANSI 通用 Lisp。Ubuntu 中的软件包:gclabcl、和提供标准clisp的不同(FOSS)实现(具有不同的完整性级别)。eclsbcl
  • 方案(也由标准定义,但标准存在多个版本:R4RS、R5RS、R6RS 和 R7RS)。Ubuntu 中的软件包:(chicken主要是 R5RS 和 R6RS)、gambit(R4RS)、racket(Scheme 和 R6RS 的方言)、mit-scheme(R4RS)
  • Clojure是 JVM 的 Lisp 方言。Ubuntu 可能会提供该软件包,但最好通过Leiningen安装它
  • LFEnewLISPHy等是 Lisp 的其他(可能不太为人所知)方言

如果您想开始使用 Common Lisp,可能最好的选择是使用SBCL实现和Emacs+SLIME作为 IDE。

GCL(如 ECL)编译为 C。ECL 主要用于将 Common Lisp 嵌入到 C 程序中。GCL 曾被用来(有些项目仍在使用)来开发像 Maxima 和 Axiom 这样的代数系统,但最近它似乎被 SBCL 取代了(至少在 Maxima 的情况下)。

CLISP 编译成 VM 代码,使其可移植,但速度较慢。该项目已经有一段时间没有更新了,并且其中的 CFFI 存在一些问题,使其与一些现代库不兼容。

为了完整起见:ABCL 是 JVM 的 Common Lisp 实现,是极其狭窄的利基实现(恕我直言,主要是由于 JVM 的缺陷)。

  • GCL 并不*主要用于在 C 程序中嵌入 Common Lisp*。GCL 过去/现在主要用于开发和创建应用程序:ACL2、Axiom、Maxima 等。多年来,GCL 主要用于 Maxima 项目,因此对于数学应用特别有效。 (2认同)