Next: , Up: Introduction   [Contents][Index]


15.1.1 Purpose

Common Lisp is intended to meet these goals:

Commonality

Common Lisp originated in an attempt to focus the work of several implementation groups, each of which was constructing successor implementations of MacLisp for different computers. Common Lisp serves as a common dialect to which each implementation makes any necessary extensions.

Portability

Common Lisp intentionally excludes features that cannot be implemented easily on a broad class of machines. Common Lisp is designed to make it easy to write programs that depend as little as possible on machine-specific characteristics, such as word length, while allowing some variety of implementation techniques.

Consistency

The definition of Common Lisp avoids such anomalies by explicitly requiring the interpreter and compiler to impose identical semantics on correct programs so far as possible.

Expressiveness

Common Lisp culls what experience has shown to be the most useful and understandable constructs from not only MacLisp but also Interlisp, other Lisp dialects, and other programming languages.

Compatibility

Common Lisp strives to be compatible with Lisp Machine Lisp, MacLisp, and Interlisp, roughly in that order.

Efficiency

Common Lisp has a number of features designed to facilitate the production of high-quality compiled code in those implementations whose developers care to invest effort in an optimizing compiler.

Power

Common Lisp is a descendant of MacLisp, which has traditionally placed emphasis on providing system-building tools. It is expected such packages will be built on top of the Common Lisp core.

Stability

It is intended that Common Lisp will change only slowly and with due deliberation.

Common Lisp differs from Standard Lisp primarily in incorporating more features, including a richer and more complicated set of data types and more complex control structures.

The goals of Common Lisp are thus very close to those of

Common Lisp differs from Standard Lisp primarily in incorporating more features, including a richer and more complicated set of data types and more complex control structures.

This book is intended to be a language specification rather than an implementation specification. … It defines a set of standard language concepts and constructs that may be used for communication of data structures and algorithms in the Common Lisp dialect. This set of concepts and constructs is sometimes referred to as the “*core Common Lisp language*” because it contains conceptually necessary or important features. … While many features could be defined in terms of others by writing Lisp code, and indeed may be implemented that way, it was felt that these features should be conceptually primitive so that there might be agreement among all users as to their usage.

For the most part, this book defines a programming language, not a programming environment. A few interfaces are defined for invoking such standard programming tools as

but very little is said about their nature or operation. It is expected that one or more extensive programming environments will be built using Common Lisp as a foundation, and will be documented separately.

…all the goals stated above have been achieved, most notably that of portability. Moving large bodies of Lisp code from one computer to another is now routine.


Footnotes

(14)

Marti, J., Hearn, A. C., Griss, M. L., and Griss, C. Standard Lisp report. ACM SIGPLAN Notices 14, 10 (October 1979), 48-68., https://dl.acm.org/doi/10.1145/953997.953999

(15)

The Utah Symbolic Computation Group. The Portable Standard LISP Users Manual. Technical Report TR-10. Department of Computer Science, University of Utah (Salt Lake City, Utah, January 1982).


Next: Notational Conventions, Up: Introduction   [Contents][Index]