软件包 GCL 和 CLISP 之间有什么区别?
What is the difference between packages GCL and CLISP?
在 Ubuntu 存储库中有两种 Lisp 实现:GCL 和 CLISP。它们之间有根本的区别吗?哪个更接近行业标准?
Common Lisp 实际上是在 ANSI 标准中定义的。它有很多实现,包括商业和 FOSS。实现一般都符合标准,对于标准中没有定义的东西(比如threads、FFI、unicode),提供了自己的一些扩展。
您应该查看 http://www.cliki.net/Common%20Lisp%20implementation 以了解实施比较。您应该使用哪一个取决于您的需要和偏好。一开始你可以只选择一个。不管怎样,语言本身都是一样的,只要您不使用任何特定于实现的扩展,您就可以根据需要轻松切换到另一种语言。
我个人更喜欢 Linux 上的 SBCL。它具有良好的性能并包括线程和所有扩展。主要缺点是程序会非常大(磁盘 space 和内存使用)。如果您要构建服务器端应用程序或大到超过实现的东西,这并不重要,但对于较小的 client-side 工具,您可能需要研究 CLISP。没用过GCL,所以不好多说
澄清一下:Lisp 命名了编程语言家族,其中包括(机器人不限于):
- ANSI Common Lisp。 Ubuntu 中的包:
gcl
、abcl
、clisp
、ecl
和 sbcl
提供标准的不同(FOSS)实现(具有不同的级别完整性)。
- Scheme(也由标准定义,但存在多个标准版本:R4RS、R5RS、R6RS 和 R7RS)。 Ubuntu 中的包:
chicken
(主要是 R5RS 和 R6RS),gambit
(R4RS),racket
(Scheme 和 R6RS 的方言),mit-scheme
(R4RS)
- Clojure 是 JVM 的 Lisp-dialect。 Ubuntu 可能会提供软件包,但最好通过 Leiningen
安装
- LFE、newLISP、Hy等都是其他的(或许,少已知)Lisp 的方言
如果您想从 Common Lisp 开始,最好的选择可能是使用 SBCL implementation with Emacs+SLIME 作为 IDE。
GCL(如 ECL)编译为 C。ECL 主要用于将 Common Lisp 嵌入 C-program。 GCL 曾用于(某些项目仍在使用)开发代数系统,如 Maxima 和 Axiom,但最近它似乎被 SBCL 取代(至少在 Maxima 的情况下)。
CLISP 编译成 VM-code 这使得它可移植但速度慢。项目好久没更新了,里面的CFFI有点问题,和一些现代库不兼容
为了完整性:ABCL 是 JVM 的 Common Lisp 实现,非常狭窄的利基实现(恕我直言,主要是由于 JVM 的缺陷)。
在 Ubuntu 存储库中有两种 Lisp 实现:GCL 和 CLISP。它们之间有根本的区别吗?哪个更接近行业标准?
Common Lisp 实际上是在 ANSI 标准中定义的。它有很多实现,包括商业和 FOSS。实现一般都符合标准,对于标准中没有定义的东西(比如threads、FFI、unicode),提供了自己的一些扩展。
您应该查看 http://www.cliki.net/Common%20Lisp%20implementation 以了解实施比较。您应该使用哪一个取决于您的需要和偏好。一开始你可以只选择一个。不管怎样,语言本身都是一样的,只要您不使用任何特定于实现的扩展,您就可以根据需要轻松切换到另一种语言。
我个人更喜欢 Linux 上的 SBCL。它具有良好的性能并包括线程和所有扩展。主要缺点是程序会非常大(磁盘 space 和内存使用)。如果您要构建服务器端应用程序或大到超过实现的东西,这并不重要,但对于较小的 client-side 工具,您可能需要研究 CLISP。没用过GCL,所以不好多说
澄清一下:Lisp 命名了编程语言家族,其中包括(机器人不限于):
- ANSI Common Lisp。 Ubuntu 中的包:
gcl
、abcl
、clisp
、ecl
和sbcl
提供标准的不同(FOSS)实现(具有不同的级别完整性)。 - Scheme(也由标准定义,但存在多个标准版本:R4RS、R5RS、R6RS 和 R7RS)。 Ubuntu 中的包:
chicken
(主要是 R5RS 和 R6RS),gambit
(R4RS),racket
(Scheme 和 R6RS 的方言),mit-scheme
(R4RS) - Clojure 是 JVM 的 Lisp-dialect。 Ubuntu 可能会提供软件包,但最好通过 Leiningen 安装
- LFE、newLISP、Hy等都是其他的(或许,少已知)Lisp 的方言
如果您想从 Common Lisp 开始,最好的选择可能是使用 SBCL implementation with Emacs+SLIME 作为 IDE。
GCL(如 ECL)编译为 C。ECL 主要用于将 Common Lisp 嵌入 C-program。 GCL 曾用于(某些项目仍在使用)开发代数系统,如 Maxima 和 Axiom,但最近它似乎被 SBCL 取代(至少在 Maxima 的情况下)。
CLISP 编译成 VM-code 这使得它可移植但速度慢。项目好久没更新了,里面的CFFI有点问题,和一些现代库不兼容
为了完整性:ABCL 是 JVM 的 Common Lisp 实现,非常狭窄的利基实现(恕我直言,主要是由于 JVM 的缺陷)。