|
|
"You come in with a mind full of mush, and you leave thinking like a
computer scientist."
Books are listed in the following categories:
Introductions to Lisp
Advanced Texts
Object Oriented Programming
Books on Artificial Intelligence and Mathemetics, with a Lisp language emphasis
Books on Lisp Style
Books on Implementing Lisp
This page does not list standard references,
periodicals, or electronic resources such as newsgroups.
Each book title, below, is a link to a bibliography
arranged by author, which gives publishing information, and may
also provide links to web sites associated with the book, links to
ftp sites where source code from the book is available, or links to
contact the author.
The authors of the comments which follow some of the book listings are
identified by initials following the comment. These correspond to:
You can mail to these people by clicking on their initials. These comments
are, of course, personal opinions and do not carry the blessing of the
ALU.
The ordering of books within categories mostly follows the
organization within the Lisp FAQ.
See also
recent MIT Press books on Computer Science & Artificial
Intelligence, Quantum Books, and
Powell's Books, which
has a usefull search form.
- Common LISP: A Gentle Introduction to Symbolic Computation.
- David S. Touretzky.
- Perhaps the best tutorial introduction to the language. It has
clear and correct explanations, and covers some fairly advanced
topics. The book is an updated Common Lisp version of the 1984
edition published by Harper and Row Publishers.
Three free Lisp educational tools which were used in the book:
Evaltrace is a graphical notation for explaining how evaluation
works and is described in "Visualizing Evaluation in
Applicative Languages" by David S. Touretzky and Peter Lee,
CACM 45-59, October 1992. DTRACE is a "detailed trace" which
provides more information than the tracing tools provided with
most Common Lisp implementations. SDRAW is a read-eval-draw
loop that evaluates Lisp expressions and draws the result as a
cons cell diagram (for both X11 and ascii terminals). Also
available is PPMX, a tool for pretty printing macro expansions.
[MK&BM]
- ANSI Common Lisp.
- Paul Graham.
- Combines an introduction to Lisp programming, and a convenient, up-to-date reference
manual for ANSI Common Lisp. Beginners will find that its careful
explanations and interesting examples make Lisp programming easy to
learn. Professional programmers will appreciate its thorough,
practical approach. [publisher's abstract] A German translation is reportedly in the works.
- See also [DLAMKINS].
- Common LISPcraft.
- Robert Wilensky.
- See also [DLAMKINS].
- Common Lisp.
- Wade L. Hennessey.
- Fairly good, but jumps back and forth from the simple to the
complex rather quickly, with no clear progression in difficulty.[MK&BM]
- Let's Talk LISP
- Laurent Siklossy.
- Good introduction, but quite out of date.[MK&BM]
- Common Lisp: An Interactive Approach.
- Stuart C. Shapiro.
- LISP, The Language of Artificial Intelligence.
- A. A. Berk.
- An Alfred handy guide to Understanding LISP,
- Paul Y. Gloess.
- The Programmer's Introduction to LISP.
- Ward D. Maurer
- LISP Lore: A Guide to Programming the LISP Machine, 2nd edition.
- Hank Bromley, and Richard Lamson.
- Introduction to LISP and Symbol Manipulation.
- Sharam Hekmatpour.
- A programmer's guide to Common Lisp.
- Deborah G. Tatar.
- Good introduction on Common Lisp for programmers familiar
with other programming languages, such as FORTRAN, PASCAL, or C.
[MK&BM]
- See also [DLAMKINS].
- The Common Lisp Companion.
- Timothy Koschmann.
- Targeted for those with some programming experience who wish to
learn draft-ANSI Common Lisp, including CLOS and the CL condition
system. Examples progress incrementally from simple numerical
calculation all the way to a logic-programming extension to CL.
[MK&BM]
- Structure
and Interpretation of Computer Programs.
- Harold Abelson,
Gerald Jay Sussman and Julie Sussman.
- Required reading for a
degree in either CS or EE at M.I.T. It deals with Scheme rather than Common Lisp, and the
first edition sometimes uses its own terminology for concepts which go
by other names elsewhere in the industry. Nonetheless, the quote above is possibly more true of this book than
any other. A new printing corresponding to IEEE Scheme has just been
released.[HRS]
- See below.
- Essential LISP.
- John R. Anderson, Albert T. Corbett, and Brian J. Reiser.
- Concentrates on how to use Lisp with iteration and recursion.
[MK&BM]
- Symbolic Computing with Lisp.
- Robert D. Cameron and Anthony H. Dixon.
- The book is intended primarily as a third-year computer science
text. In terms of programming techniques, it emphasizes recursion
and induction, data abstraction, grammar-based definition of Lisp
data structures and functional programming style. It uses
two Lisp languages:
- a purely functional subset of Lisp called Small Lisp and
- Common Lisp.
An MS-DOS interpreter for Small Lisp (including source) is
provided with the book. It considers applications of Lisp
to formal symbolic data domains: algebraic expressions,
logical formulas, grammars and programming languages.
[MK&BM]
- On LISP
- Paul Graham.
- A comprehensive study of advanced Lisp techniques, with bottom-up
programming as the unifying theme. It gives the first complete
description of macros and macro applications. The book also covers
important subjects related to bottom-up programming, including
functional programming, rapid prototyping, interactive development,
and embedded languages. The final chapter takes a deeper look at
object-oriented programming than previous Lisp books, showing the
step-by-step construction of a working model of the Common Lisp Object
System (CLOS).
As well as an indispensable reference, On Lisp is a source of
software. Its examples form a library of functions and macros that
readers will be able to use in their own Lisp programs. [publisher's abstract]
Emphasizes a bottom-up style of writing programs, which he
claims is natural in Lisp and has advantages over the
traditional way of writing programs in C and Pascal.
Also has in-depth sections on writing macros with several
nice examples.
[MK&BM] See below.
- See also [DLAMKINS].
- ANSI Common Lisp.
- See above.
- Lisp: A first language for computing
- John A. Moyne
- Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS.
- Sonya E. Keene.
- Tutorial introduction to CLOS with many examples and
a lot of good advice for designing large programs using CLOS.
[MK&BM]
- See also [DLAMKINS].
-
Object-Oriented Programming: A Unified Foundation.
- Giuseppe Castagna.
- The language Simula is the precursor of all object-oriented
languages. This language imposed a certain style of programming that
was followed by all class-based object-oriented languages until the
appearance of the so-called multiple-dispatching languages, like CLOS,
in which a different style of object-oriented programming arose.
Although much work has been done to define a theory of
object-oriented languages, efforts have concentrated mostly on
languages that follow Simula's style, ignoring multiple-dispatching
languages. This book fills the gap. It elucidates object-oriented
concepts, facilitate comparisons of these two different styles of
programming and sheds new light on some long-standing problems
concerning, for example, the use of covariance and contravariance, or
the typing of binary methods.
This book also shows that it is possible to smoothly integrate
both Simula's and CLOS's styles of programming into a single
language. The book is self-contained and does not assume any expertise
in object-oriented programming or type theory. It will be consulted
by professional computer scientists interested in the theory of
programming and can serve as the text for a variety of advanced
courses in type theory of object-oriented programming. [Publisher's Abstract]
- Understanding CLOS: The Common LISP Object System.
- Jo A. Lawless and Molly M. Miller.
- See also [DLAMKINS].
- The Art of the Metaobject Protocol
- See references and below.
- LISP, Objects, and Symbolic Programming
- Robert R. Kessler and Amy R. Petajan.
- Includes a small Lisp compiler.
[MK&BM]
- Object-Oriented Programming: The CLOS Perspective
- Andreas Paepcke, editor.
- This book is a collection of essays on the following topics:
- Description of CLOS and its design philosophy.
- The Metaobject Protocol and its use.
- Comparison of CLOS with Smalltalk, Eiffel, Sather, and C++.
- CLOS Uses and Methodology. Descriptions of two large CLOS
applications (Sun's LispView and a hybrid knowledge
representation tool) and an approach to documenting
object-oriented protocols (similar to that of AMOP).
- Implementation details. Descriptions of TI CLOS for the
Explorer and PCL's method dispatch mechanism.
[MK&BM]
- The collection has excellent coverage of
MOPs and "Open
Implementation" (although the book predates the term),
giving the reader a good understanding of what they are and why they
are a good thing.
- See below.
[HRS]
Object-Oriented Common Lisp
Slade.
See also [DLAMKINS].
For general books on Artificial Intelligence consult the AI FAQ.
See also, the book
list of the UGAI Workshop.
- Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp
- Peter Norvig.
- Provides an in-depth exposition of advanced AI programming techniques
and includes large-scale detailed examples. The book is the most
advanced AI/Common-Lisp programming text and reference currently
available, and hence is not for the complete novice. It focuses on the
programming techniques necessary for building large AI systems,
including object-oriented programming, and has a strong performance
orientation.
The text is marked by its use of "non-toy" examples to illustrate the
techniques. All of the examples are written in Common Lisp, and copies
of the source code are available on disk in Macintosh or DOS format from
the publisher. Some of the techniques described include rule-based
pattern matching (GPS, Eliza, a subset of Macsyma, the Emycin expert
system shell), constraint propagation and backtracking (Waltz
line-labelling), alpha-beta search (Othello), natural language
processing (top-down, bottom-up and chart parsing), logic-programming
(unification and Prolog), interpreters and compilers for Scheme, and
object-oriented programming (CLOS).
The examples are also used to illustrate good programming style and
efficiency. There is a guide to trouble-shooting and debugging Lisp
programs, a style guide, and a discussion of portability problems.
Some of the efficiency techniques described include memoization,
data indexing, compilation, delaying computation, proper use of
declarations, avoiding garbage collection, and choosing and using the
correct data structure.
The book also serves as an advanced introduction to Common Lisp, with
sections on the Loop macro, CLOS and sequences, and some coverage of
error handling, series, and the package facility.
[MK&BM]
- See below.
- See also [DLAMKINS].
- Emperical Methods for Artificial Intelligence.
- Paul R. Cohen.
- Computer science and artificial intelligence in particular have no curriculum
in research methods, as other sciences do. This book presents empirical methods
for studying complex computer programs: exploratory tools to help find patterns
in data, experiment designs and hypothesis-testing tools to help data speak
convincingly, and modeling tools to help explain data. Although many of these
techniques are statistical, the book discusses statistics in the context of the
broader empirical enterprise. The first three chapters introduce empirical
questions, exploratory data analysis, and experiment design. The blunt
interrogation of statistical hypothesis testing is postponed until chapters 4
and 5, which present classical parametric methods and computer-intensive (Monte
Carlo) resampling methods, respectively. This is one of few books to present
these new, flexible resampling techniques in an accurate, accessible manner.
Much of the book is devoted to research strategies and tactics, introducing
new methods in the context of case studies. Chapter 6 covers performance
assessment, chapter 7 shows how to identify interactions and dependencies among
several factors that explain performance, and chapter 8 discusses predictive
models of programs, including causal models. The final chapter asks what
counts as a theory in AI, and how empirical methods -- whiping cch deal with
specific
systems -- can foster general theories.
Mathematical details are confined to appendixes and no prior knowledge of
statistics or probability theory is assumed. All of the examples can be
analyzed by hand or with commercially available statistics packages.
The Common Lisp Analytical
Statistics Package (CLASP), developed in the author's
laboratory for Unix and Macintosh computers, available from The MIT Press.
[Publisher's Abstract]
-
The Limits of Mathematics, The Unknowable
- G. J. Chaitin
- The Limits of Mathematics presents the final version of Chaitin's course on the limits
of mathematical reasoning. This course uses algorithmic information
theory to show that mathematics has serious limitations, and features
a new more didactic approach to algorithmic information theory using
LISP and Mathematica software. The thesis of the book is that the
incompleteness phenomenon discovered by Goedel is much more widespread
and serious than hitherto suspected. Also Goedel and Einstein's views
on the foundations of mathematics are discussed, and it is suggested
that mathematics is quasi-empirical and that experimental mathematics
should be used more freely.
[Publisher's Abstract]
The companion "prequel" volume, The
Unknowable, presents an accessible historical survey contrasting Chaitin's
ideas on the limits and structure of mathematical understanding with
Goedel's concept of incompleteness and Turing's concept of
uncomputability.
- Artificial Intelligence Programming, 2nd edition.
- Eugene Charniak, Christopher K. Riesbeck, Drew V. McDermott and James R. Meehan.
- Provides many nice code fragments, all of which are written
in Common Lisp. The first half of the book covers topics
like macros, the reader, data structures, control structures,
and defstructs. The second half of the book describes
programming techniques specific to AI, such as
discrimination nets, production systems, deductive database
retrieval, logic programming, and truth maintenance.
[MK&BM]
- See also [DLAMKINS].
- LISP, 3rd edition.
- Patrick H. Winston and Berthold K. P. Horn.
- Covers the basic concepts of the language, but also gives a lot
of detail about programming AI topics such as rule-based expert
systems, forward chaining, interpreting transition trees,
compiling transition trees, object oriented programming,
and finding patterns in images. Not a tutorial. Has many
good examples.
[MK&BM]
- See also [DLAMKINS].
- Common LISP Programming for Artificial Intelligence.
- Tony Hasemer and John Domingue.
- This book presents an introduction to Artificial Intelligence
with an emphasis on the role of knowledge representation. Three
chapters focus on object-oriented programming, including the
construction and use of a subset of CLOS.
The authors' research into the problems faced by novice Lisp
users influenced the content and style of the book. (The authors
are members of the Human Cognition Research Laboratory at the
Open University in the United Kingdom.) The book employs a
tutorial approach, especially in areas that students often find
difficult, such as recursion. Early and progressive treatment of
the evaluator promotes understanding of program execution.
Hands-on exercises are used to reinforce basic concepts.
The book assumes no prior knowledge of Lisp or AI and is a
suitable textbook for students in Cognitive Science, Computer
Science and other disciplines taking courses in Lisp or AI
programming as well as being invaluable for professional
programmers who are learning Lisp for developing AI applications.
[MK&BM]
- The Elements of Artificial Intelligence Using Common Lisp, 2nd edition.
- Steven Tanimoto.
- Common Lisp and Artificial Intelligence.
- Patrick R. Harrison.
-
Common LISP Modules: Artificial Intelligence in the Era of Neural Networks and Chaos Theory.
- Mark Watson.
-
Natural language understanding.
- James Allen.
- Natural
Language Processing in Lisp: An Introduction to Computational
Linguistics.
- G. Gazdar and C. Mellish.
-
Genetic Programming: On the Programming of
Computers by Means of Natural Selection.
-
Genetic Programming II: Automatic Discovery of
Reusable Programs
.
- John Koza.
Also see the notes on improving your Lisp style,
derived from the Lisp FAQ.
- On LISP
- See above.
- LISP Style and Design
- Molly M. Miller and Eric Benson.
- How to write large Lisp programs and improve Lisp programming
style. Uses the development of Lucid CL as an example.
[MK&BM]
- The Art of Lisp Programming
- Robin Jones, Clive Maynard, and Ian Stewart.
- LISP, Lore, and Logic: An Algebraic View of LISP
- W. Richard Stark.
- Self-modifying code, self-reproducing programs, etc.
[MK&BM]
- CMU CL User's Manual
- Chapter 7 talks about writing efficient code.
[MK&BM]
- Paradigms of
Artificial Intelligence Programming: Case Studies in Common Lisp
- See above.
- Structure and Interpretation of Computer Programs.
- See above and below.
- Scheme and the Art of Programming
- George Springer and Daniel P. Friedman.
- Programming Paradigms in LISP.
- Rajeev Sangal
- Programming in Common Lisp.
- Rodney A. Brooks.
- Chapter 5 discusses Lisp programming style.
[MK&BM]
Also see the Lisp Memory Management section
of this web-site.
- Structure and Interpretation of Computer Programs.
- See above.
- The Art of the Metaobject Protocol
- See above.
- Object-Oriented Programming: The CLOS Perspective
- Discusses some CLOS implementation techniques. See above.
- Anatomy of Lisp
- John Allen.
- Discusses some of the fundamental issues involved in
the implemention of Lisp.
[MK&BM]
- See also [DLAMKINS].
- Programming Languages, An Interpreter-Based Approach
- Samuel Kamin
- Includes sources to several interpreters for Lisp-like languages.
- Tim Budd has reimplemented the interpreters in C++.
[MK&BM]
- Lisp: A Portable Implementation
- Sharam Hekmatpour
- Describes a portable implementation of a small dynamic
Lisp interpreter (including C source code).
[MK&BM]
- Functional Programming: Application and Implementation
- Peter Henderson
- The Architecture of Symbolic Computers
- Peter M. Kogge.
- Includes sections on memory management, the SECD and
Warren Abstract Machines, and overviews of the various
Lisp Machine architectures.
[MK&BM]
- Essentials of Programming Languages
- Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes.
- Teaches fundamental concepts of programming language
design by using small interpreters as examples. Covers
most of the features of Scheme. Includes a discussion
of parameter passing techniques, object oriented languages,
and techniques for transforming interpreters to allow
their implementation in terms of any low-level language.
Also discusses scanners, parsers, and the derivation of
a compiler and virtual machine from an interpreter.
Includes a few chapters on converting code into a
continuation passing style.
[MK&BM]
- Topics in Advanced Language Implementation
- Peter Lee, editor.
- Articles relevant to the implementation of functional programming languages.
[MK&BM]
- Les Langages Lisp
- LiSP in Small Pieces
- Christian Queinnec
- The book covers Lisp, Scheme and other related dialects,
their interpretation, semantics and compilation. [MK&BM] Les Languages
Lisp is the French version, LiSP in Small Pieces is the
English version.
- See also [DLAMKINS].
- Performance and Evalution of Lisp Systems
- Richard P. Gabriel.
- Defines and comments on the "Gabriel Benchmarks", and
gives performance figures and implementation details for early 1980's
implementations.
[HRS]
- Interpreting Lisp
- Civilized Software.
- A downloadable postscript book on how Lisp works and how to build a Lisp interpreter.
|