:santagrin: This book is suggested by Mike Goins
Terms and Conditions:
Stuart C. Shapiro wrote:This book is out of print. The publisher has returned the copyright and rights to me, the author. I am making it available here in pdf, and dvi formats, and in two versions of ps format, a heavier font and a finer font, under the following conditions: hardcopies must retain the title and copyright pages; web links must point to this page rather than to a separate copy of the dvi, ps, or pdf file; ...
The purpose of this book is to teach the Common Lisp programming language. The book is intended to be a self-paced study guide, requiring additional information from an instructor, manual, consultant, or friend only to fill in the details of the local operating system and a few implementation-dependent features.
The Lisp version of this book has been used as the text of the Lisp portion of data structures, programming languages, and artificial intelligence courses and as a self-study guide for students, faculty members, and others learning Lisp independently. Draft versions of this book have also been used in Common Lisp courses, artificial intelligence courses, and for self-study.
Lisp is the language of choice for work in artificial intelligence and in symbolic algebra. It is also important in the study of programming languages, because, since its inception over thirty years ago, it has had full recursion, the conditional expression, the equivalence of program and data structure, its own evaluator available to the programmer, and extensibility ?- the syntactic indistinguishability
of programmer-defined functions and 'built-in' operators. It is also the paradigm of 'functional
,' or 'applicative
,' programming. Because of the varied interests in Lisp, this book has tried to present it in a general and neutral setting, rather than specifically in the context of any of the special fields in which it is used.
Above all, Lisp is an interactive language. A Lisp program is not built up from imperative statements, but from forms, each of which has a value. The Lisp programmer sits in front of a terminal, interacting with the Lisp listener. During such a session, a program gets written, read, tested, modified, and saved for future use. Most Lisp implementations provide more than just a programming language, they provide an entire environment including tracing, inspectors, debuggers, and other programmer aids, almost all written in Lisp itself.
Since this book assumes that students will have had experience with some imperative programming language, this book teach pure Lisp before the imperative constructs. By the time this book introduces imperative Lisp in Part III, the student should be used to the functional style of pure Lisp and should be able to develop a good, balanced programming style.
:) "The author's treatment of packages, always a tricky concept for LISPers, is superior. Shapiro introduces them early, and applies them consistently throughout the rest of the book. Another plus is his conversational tone that makes the book easy to follow. Most of his explanations seem accurate."
:( "... there are many details introduced early while basic concepts are pushed way far back in the book. While the author is entitled to his own opinion about what's important, there are a couple of issues that are particularly bothersome."