Rui wrote:Hello all.
Being a begginer in Lisp, I still have some questions related to this language in general. For example:
Common Lisp has several implementations, but what is in fact an implementation of Common Lisp?
What are the major differences between them?
Is there any implementation that is considered to be better than the rest? Why?
When I learn Common Lisp, do I learn implementation-specific code?
Thanks.
Marco answered many of your questions. I'd just follow up by saying that while today it seems like many languages are defined by a single implementation (e.g. Perl, Python, Ruby, Java, C#, etc.), this was not the way languages used to be.
In the "old days," we had a crop of languages such as C, C++, Common Lisp, Scheme, Fortran, Cobol, etc. All of these have many different implementations. They are all (Cobol, too?) defined by international standards which helps with interoperability between the various implementations. Most implementations also have other specific extensions in addition to the features defined by the standard (e.g. GNU C has a lot of convenient extensions). There are also typically platform-specific differences in the environments (e.g. the libc API for Unix/Linux or Win32 API) that fall outside the realm of the standards but which are important in real-world programming.
In any case, Common Lisp is an example from that older crop of languages. There are many good implementations. Which one you choose will depend on your specific requirements (perhaps operating system--Linux vs. OS X vs. Windows) or the specific libraries that you would like to use, or even if you want to run CL in a JVM (ABCL, for instance).
Personally, I use SBCL on Linux and CLISP on Windows. I also like ECL for embedding. I don't do any work on OS X, so I can't advise you there, and others will probably chime in with their favorites. There are also commercial versions available for all these platforms (LispWorks, Allegro, Corman, etc.).
Dan Weinreb created this nice resource which surveys all the various implementations available:
http://common-lisp.net/~dlw/LispSurvey.html