Rainer Joswig
Hamburg, Germany
Email: joswig@lisp.de
| Common Lisp in Ten Documents |
| Common Lisp grew out of many years (1958-1982) of experience developing and
using Lisp dialects (Lisp 1.5, MacLisp. Lisp Machine Lisp, Scheme,
...) and it was designed from 1982 on, until the ANSI Common Lisp
standard got published in 1994. It is a very stable language which
has some extensibility built in. At least ten implementations are
actively maintained and these implementations have extended the
standard Common Lisp with a lot of features and development
tools. Common Lisp is based on a standard document and does not have a
single leading implementation. Instead there are many competing
implementations with widely different goals and capabilities.
At the core Common Lisp is a programming language for complex software that is best developed in an incremental and interactive development style. Understanding this will save the user from making a lot of wrong assumptions. Common Lisp has not been designed for the development of static software in a batch process (like C, C++, Java, Fortran, and many others). Thus both the language looks different and it has to be used differently. Long edit/compile/test/debug cycles are replaced with interactive software development (with its own set of advantages and problems). Other than that Common Lisp can be used for software development in many application domains and not just artificial intelligence software. Common Lisp is a tool for more advanced developers who need a flexible, extensible and interactive programming language. So what is Common Lisp and how can you use it? I have tried to answer this question by selecting ten documents that cover the language, its usage and its tools. To understand Common Lisp it is not enough to read the reference document for the language. It is also necessary to understand the usage of the programming language and the reason for its features. Peter Seibel motivates in his book Practical Common Lisp many of those features in terms that are understandable by readers new to advanced Lisp systems. Paul Graham explains in detail what Common Lisp has to offer with its code as data philosophy and its programmable macro system. Most Common Lisp implementations have gained many facilities over the years. The commercial implementation LispWorks is now based on more of twenty years of development and maintenance. It is available on several platforms, provides support for threads, database access, application delivery, portable graphical user interfaces, networking and a portable graphical development environment - to mention a few features. Similar capabilities are also provided by Allegro CL from Franz, Inc. The non-commercial implementations are not far behind. I have referenced the CMU Common Lisp core documentation. It describes the advanced compiler of CMU Common Lisp, which supports type inferencing and which makes heavy use of type declarations to generate fast code. There is a lot of material about Common Lisp. Here I have selected ten works that are available as PDF and/or HTML versions. The areas covered are language descriptions, language introductions, introductions to programming in Lisp and advanced programming concepts, descriptions of real implementations, their extensions and tools. Beginners should start with the introductory texts and look from time to time into the reference documents. If you want to dig deeper, then read the more advanced texts, read the reference from start to end and read the manuals and user guides. These ten documents should give you a broad knowledge about Common Lisp technology. Writing them took a long time. You may also need time to read, understand and apply it. Don't hurry.
1: ANSI Common Lisp Standard, X3J13, 1994 (PDF, Web)
2: Common Lisp the Language, Second Edition, Guy L. Steele, 1990 (PDF, Web)
3: Common Lisp: A Gentle Introduction to Symbolic Computation, David S. Touretzky, 1990 (PDF)
4: Common Lisp, An Interactive Approach, Stuart C. Shapiro, 1992 (PDF)
5: Practical Common Lisp, Peter Seibel, 2005 (Web)
6: On Lisp, Paul Graham, 1993 (PDF)
7: Common LispWorks User Guide, 2008 (PDF, Web)
8: LispWorks User Guide, 2008 (PDF, Web)
9: CMU Common Lisp User's Manual, Robert A. MacLachlan, (PDF, Web)
10: Performance and Evaluation of Lisp Systems, Richard P. Gabriel, 1985 (PDF) Let me know if you would prefer another Common Lisp document that is available online. |
Keywords:
| BOOK COMMON-LISP LEARNING-LISP |