To date, books on object-oriented programming have focused either on the methodology of the object-oriented paradigm or on teaching the details of a particular programming language. This collection takes a different approach, examining one object-oriented programming language - the Common-Lisp Object System (CLOS) - as a modern programming tool. The fourteen contributions examine CLOS from a variety of angles, revealing the thoughts behind the design of the language, its intended use, its impact on object-oriented design and programming, and its place in the context of other object-oriented programming languages. Chapter 1 provides enough detail about the language for the remaining material to be understood by readers unfamiliar with CLOS, and it concentrates on the unusual aspects of the language. CLOS is placed into historical perspective in Chapter 2, which describes the sources and evolution of ideas embodied in the language. Further chapters discuss the metaobject protocol, compare CLOS with other object-oriented languages, and discuss applications of the language and aspects of its implementation.