Lisp Yesterday
John McCarthy discovered the basic principles of Lisp in 1958, when he was processing complex mathematical lists at MIT. Common Lisp (CL) is a high-level computer language, whose syntax follows a simple list-like structure. The term “Lisp” itself originally stood for “LISt Processing.” When developing, testing, and running a CL program, at the core is a modern-day version of the original List Processor which processes (compiles, evaluates, etc.) the elements of your program. These elements, at the source code level, are represented as lists. A list, in this context, is just a sequence of items, much like a familiar shopping list or checklist. Originally the list was pretty much the only data structure supported by Lisp, but modern-day Common Lisp supports a wide range of flexible and efficient data structures.
A typical Common Lisp development and runtime environment behaves like a complete operating system, with multiple threads of execution and the ability to load new code and redefine objects (functions, etc.) dynamically, i.e. without stopping and restarting the “machine.”
This “operating system” characteristic also makes CL significantly more flexible than other popular programming languages. Whereas some other languages, such as shell scripts or Perl CGI scripts, need to pipe data around, in CL all data manipulations can run interactively within one single process with a shared memory space.
Lisp Today
The most popular form of Lisp used today, “ANSI Common Lisp,” was initially designed by Guy Steele in Common Lisp, the Language, 2nd Edition (“CLtL2”) — (see the Bibliography in Appendix B). This version of Lisp became the accepted industry standard. In 1995, the American National Standards Institute recognized a slightly updated version as ANSI Common Lisp, the first object-oriented language to receive certification, and ANSI CL remains the only language that meets all of the criteria set forth by the Object Management Group (OMG) for a complete object-oriented language.
Paul Graham outlines ANSI CL in his 1996 book ANSI Common Lisp, also listed in Appendix B.
Official language standardization is important, because it protects developers from becoming saddled with legacy applications as new versions of a language are implemented. For example, this lack of standardization has been a continuing problem for Perl developers. Since each implementation of Perl defines the behavior of the language, it is not uncommon to have applications that require outdated versions of Perl, making it nearly impossible to use in a mission-critical commercial environment.