 |
Peter Norvig
Publisher: Morgan Kaufmann, 01 October, 1991
Paperback
Availability: Usually ships in 24 hours
Listed in: Lisp programming
|
This is an overview of classical artificial intelligence (AI) programming via actual implementation of landmark systems (case studies). For the student interested in AI, Paradigms of Artificial Intelligence Programming is an invaluable history lesson. Even the programmer who is relatively uninterested in AI will find value in the book's basic introduction to Lisp and case studies written in Lisp. But perhaps the book's best feature is its information on efficiency considerations in Lisp. Paradigms of Artificial Intelligence Programming is worth purchasing for these discussions alone, which provide a wealth of useful guidelines for optimizing your code.
What readers think:
An Excellent Reference on WHY to write good Lisp  This book is equally excellent regardless of whether you wish to regard it as:a) A historical study of Artificial Intelligence, with USABLE examples of code, or b) A book presenting techniques for programming in Common Lisp. As a reference about Common Lisp, it is certainly lacking, but this is no great problem when both the Common Lisp HyperSpec and Steele's book are readily available in electronic form. It provides something more important: SIGNIFICANT examples, and significant discussions on WHY you would use various Lisp idioms, and, fairly often, discussions on HOW pieces of Common Lisp are likely to be implemented. Its discussion of an implementation of the LOOP macro, for instance, provides a very different point of view than the "references" to LOOP. (Contrast too with Graham's books, which largely deprecate the use of LOOP.) From an AI perspective, it is also very good, providing WORKING SAMPLES for a whole lot of the historically significant AI problems, including Search, PLANNER, symbolic computation, and the likes. It would be interesting to see parallel works from the following sorts of perspectives: - The same sorts of AI problems solved using functional languages (e.g. - ML, Haskell), to allow contrasting the use of those more modern languages. Being more "purely functional" has merits; such languages commonly lack macros, which is something of a disadvantage. - The use of CL to grapple with some other sorts of applications, notably random access to data [e.g. - databases] and rendition of output in HTML/SGML/XML [e.g. - web server].
One of the Best  "Paradigms of Artificial Intelligence Programming" is one of the best books of computer science that I have ever read. I put it up there in the pantheon with "Structure and Interpretation of Computer Programs". I have found more useful and mind expanding material in these case studies than I have in many other books on computer science. I highly recommend this book to anyone, even if they have never used Lisp.
Norvig's Corollary to Greenspun's Tenth Law of Programming  This book has been called "The best book on programming ever written". I'd have to agree--it is certainly the best that I've ever read.
William Zinsser said, "The essence of writing is rewriting" and the same can be said for writing computer programs. Norvig's book presents this process--how the limitations of a program are overcome by revision and rewriting. What sets Norvig apart as a writer is that, amazingly enough, he can write about debugging (the most dreaded part of computer programming) and make it a fascinating read!
Lisp has been getting a higher profile lately because of essayists like Paul Graham and Philip Greenspun; in particular, Greenspun's Tenth Rule of Programming which states: "Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp." So, should this book be read as an exhortation to return to Lisp as the preferred programming language?
Paradoxically, I think not. One third of the way through the book, Norvig shows us how to implement Prolog in Lisp. From then on out, most of the AI techniques he presents either directly use Prolog instead of Lisp (such as his excellent discussion of natural language processing using Prolog) or use Prolog as a base to build on (such as his discussions on knowledge representation).
From this we can abstract what I'd like to call Norvig's Corollary to Greenspun's Tenth Law of Programming: "Any sufficiently complicated LISP program is going to contain a slow implementation of half of Prolog". I'm leaving out the "ad hoc", "bug-ridden" part of Greenspuns's law, because Norvig's programs are neither. But it is quite remarkable the degree to which, once having absorbed Prolog, Norvig uses Prolog as the basis for further development, rather than Lisp.
Is this a book about Prolog then? Again, no. What is the take-away message? It is this: as our world becomes more and more complex, and as the problems which programmers are facing become more and more complex, we have to program at a higher and higher level.
Norvig does not stop at just embedding Prolog in Lisp. He also shows us how to embed scheme as well. Excellent discussion on the mysterious call/cc function and on continuations.
In a capsule review, it is impossible to really give an overview of a 1,000 page book like this one. But the scope and heft of the volume really needs to be commented on: the programs presented in this book are like basis vectors, the totality of which nearly span the space of programming itself. In no way should this be considered "just an AI book" or "just a LISP book". This book transcends language, time, and subject matter. It is a programmer's book for the ages.
Read more about this book at Amazon.com >>
Related books:
What reader think about other books by Peter Norvig:
A reader told us about "Artificial Intelligence: A Modern Approach (2nd Edition)": This book is excellent for a novice in AI. Chapter by chapter - though chapters vary in thoroughness and detail - the book illustrates AI techniques by family by accessibly presenting the problems that motivate the techniques, and the logic applied to implement them (pseudo-code).
Arguably the book is written from the easier towards the harder methods. It's a good treatment on search strategy and basic logic, but notably somewhat lacking in pattern recognition, unbound optimization, and some machine learning topics, which is understandable considering how extensive the subjects are.
As a starting point towards learning about AI techniques, or as a course text-book the Russel and Norvig (this) book is an excellent resource. The book will set up a student with a mindset towards identifying search, optimization and reasoning problems that lend themselves towards AI solutions, and how to pick the appropriate technique to solve them.
Note that the book presents all of these techniques through a framework of thought around intelligent agents (which can be somewhat confusing considering you will later mostly hear the keyword 'agent' in AI techniques that apply social intelligence, or solve problems via interactions between somewhat independent intelligent constructs).
Follow up with Duda's "Pattern Classification", and Mitchell's "An Introduction to Genetic Algorithms (Complex Adaptive Systems)" for a more in depth treatment on Machine Learning problems and solutions and Genetic Algorithms. Maybe also some reading on swarm intelligence, and you'll have good referential knowledge and a decent tool-set of AI reasoning and problem solving skills.
Recent referers from other websites: |
|