In the Ubuntu repositories there are two implementations of Lisp: GCL and CLISP. Is there a fundamental difference between them? Which one is closer to the industry standard?
2 Answers
Common Lisp is actually defined in an ANSI standard. There are lots of implementations for it, both commercial and FOSS. The implementations generally comply with the standard, and provide some extensions of their own for things that are not defined in the standard (such as threads, FFI and unicode).
You should see http://www.cliki.net/Common%20Lisp%20implementation for a comparison of implementations. Which one you should use depends on your needs and preferences. For starting out you can just pick one. The language itself is going to be the same regardless, and as long as you don't use any implementation specific extensions, you can easily switch to another one if needed.
I personally prefer SBCL on Linux. It has good performance and includes extensions for threads and all. The main weakness is that programs will be very large (both disk space and memory usage). That doesn't matter much if you're building a server side app, or something so big that it outweighs the implementation anyway, but for smaller client-side tools you might want to look into CLISP. I haven't used GCL, so I can't say much about it.

- 8,206
- 2
- 28
- 44
-
Thank you! Very useful site for LISP! I chose SBCL! – Artur Olenberg Jan 06 '16 at 06:01
Just to clarify: Lisp names the family of programming languages which includes (bot not limited to):
- ANSI Common Lisp. Packages in Ubuntu:
gcl
,abcl
,clisp
,ecl
andsbcl
provide different (FOSS) implementations of the standard (with different level of completeness). - Scheme (also defined by the standard, but there exist a number of versions of the standard: R4RS, R5RS, R6RS and R7RS). Packages in Ubuntu:
chicken
(mostly R5RS and R6RS),gambit
(R4RS),racket
(dialect of Scheme and R6RS),mit-scheme
(R4RS) - Clojure is a Lisp-dialect for JVM. Ubuntu might provide the package but it is better to install it through Leiningen
- LFE, newLISP, Hy, and etc. are other (perhaps, less known) dialects of Lisp
If you would like to start with Common Lisp, probably the best choice would be to use SBCL implementation with Emacs+SLIME as an IDE.
GCL (like ECL) compiles to C. ECL is mostly used to embed Common Lisp into C-program. GCL was used (and for some project is still used) to develop algebra systems like Maxima and Axiom, but recently it seems to be get replaced by SBCL (at least in case of Maxima).
CLISP compiles into VM-code which makes it portable but slow. The project hasn't been updated for a while, and there exists a bit of a problem with CFFI in it, making it incompatible with some modern libraries.
For completeness: ABCL is Common Lisp implementation for JVM, extremely narrow niche implementation (IMHO mostly due to deficiencies of JVM).

- 2,326
- 1
- 16
- 30
-
2GCL is not *mostly used to embed Common Lisp in C programs*. GCL was/is mostly used to develop and create applications: ACL2, Axiom, Maxima and others. GCL was for many years mostly used in the Maxima project and thus is especially efficient for mathematical applications. – Rainer Joswig Jan 07 '16 at 00:24
-
@RainerJoswig fair enough. My comment referred largely to ECL and I made an assumption that was invalid. I have updated the answer, – mobiuseng Jan 07 '16 at 12:42