Rating:  Summary: Buy used only if the price is right Review: Since extraordinary errors plague appalling, ugly languages Graham realizes and has a more direct onslaught to commonly occurring mistakes. This should be read carefully, because it will teach the reader much. If one is interested in having this book, then it is a great investment.
Rating:  Summary: Be a better programmer, not just a better Lisp programmer Review: There are dozens of programming texts that I recommend to people who want to understand various topics. There are only a small handful that I recommend to programmers who aren't using the tool or language that the book covers. This is one of those books. It requires a prior knowledge of Lisp, but not expert knowledge. Paul Graham rewards his readers with a much deeper understanding of the merits of Lisp and how to take advantage of the power it provides.Paul Graham has commented on his web site ..., "It seems to me that there have been two really clean, consistent models of programming so far: the C model and the Lisp model. These two seem points of high ground, with swampy lowlands between them. As computers have grown more powerful, the new languages being developed have been moving steadily toward the Lisp model." I read that comment before I read On Lisp. It was fresh in my mind at the time, and I saw some of the features of Lisp in C++ and Java. Graham cites runtime type checking and garbage collection, but there are subtler features that appear in the C++ STL. When he described using macros to create functions as needed, his examples immediately brought to mind some of the templates for various "helper" classes; pair, for example. But he could equally well be talking about some of the classes in the Java runtime that are designed to be derived from. The bottom line is that this book is an excellent tutorial on good library design. It teaches by example the philosophy behind creating libraries that extend your language, either in general ways or specifically for the problem domain. Paul Graham handles Lisp lovingly as an expert craftsman. An observant reader can learn a great deal about craftsmanship from his book. Eric Raymond stated in his essay How To Become A Hacker, "LISP is worth learning for a different reason - the profound enlightenment experience you will have when you finally get it. That experience will make you a better programmer for the rest of your days, even if you never actually use LISP itself a lot." Mr. Graham has commented about this specific quote wondering why anyone would learn about a great tool and then not use it. Lisp in general and this book specifically are an answer to that question. Lisp is not a single language. It is a family of languages that share a common philosophy and a core. Once you learn what gives Lisp its power, you can choose to enhance any tools you use with some measure of that power.
Rating:  Summary: A strong treatment of Lisp idioms, especially Lisp Macros Review: This book treats advanced Lisp techniques. Its strongest feature is the treatment of writing Lisp macros. I've been working with Lisp for thirty years now and this is the best treatment I've seen on writing Lisp macros. This book should be considered a MUST for any serious Lisp programmer.
Rating:  Summary: Excellent, but hard to find Review: This is an excellent book, and if you understand it it will make you a better lisp programmer. See the other reviews here or search through the comp.lang.lisp archives for testemonials. Yes, it's _that_ awesome...but unfortunately On Lisp is out of print, and is really hard to find used copies of--probably because nobody wants to part with it. Furthermore, it doesn't look like Prentice Hall, or anyone else will be publishing it any more. Fortunately, Paul Graham has made this available in postscript and pdf forms on his website. It's missing a few figures, but will definitely be helpful for everyone who has been patiently waiting months for a copy. Thanks, Paul!
Rating:  Summary: I read it twice Review: This is the only technical book I've read cover-to-cover *twice*. As others have noted, the author treats macros in *far* greater detail than any other books on Lisp. Furthermore, I thought his example code was more easily understood than most programming books. The only caveat: this book *is not* for people beginning lisp. Given it's title, this obviously doesn't reflect poorly on the book.
Rating:  Summary: Be a better programmer, not just a better Lisp programmer Review: When I find something really interesting in a book that I want to remember later, I write the page number on the end page. A good book might get 5 to 10 page numbers so noted. My copy of On Lisp has 25. Now, not every one of the 25 contains something I agree completely with, but they all made me think. If you're experienced at Lisp, you'll find a similar number of thought-provoking ideas, and if you're new to Lisp, you'll find a whole new way of looking at programming (and you'll find that you can apply the new ideas to other languages as well). Looking at Graham's code felt like reading my own code masterfully translated, say, from Danish to Swedish. A lot of the ideas are the same, some of the old friends had new names, and there were some new friends that I had never bothered to abstract and name, but recognized instantly once Graham did so (e.g. mapcars, fn). Along with the ideas, I admire the many handy turns of phrase that make the book a real page-turner: "It used to be thought that you could judge someone's character by looking at the shape of his head. Whether or not this is true for people, it is generally true of Lisp programs." "The classic Common Lisp defmacro is like a cook's knife: an elegant idea which seems dangerous, but which experts use with confidence." "Lisp is not inherently about processing lists any more than Polo shirts are for Polo" (Note that the sentence would have been a little confusing if Graham had written "list processing" rather than "processing lists". In Graham's prose, like his code, every word counts. Time and again I can only say "I wish I had thought of that.")
Rating:  Summary: Read this book Review: When I find something really interesting in a book that I want to remember later, I write the page number on the end page. A good book might get 5 to 10 page numbers so noted. My copy of On Lisp has 25. Now, not every one of the 25 contains something I agree completely with, but they all made me think. If you're experienced at Lisp, you'll find a similar number of thought-provoking ideas, and if you're new to Lisp, you'll find a whole new way of looking at programming (and you'll find that you can apply the new ideas to other languages as well). Looking at Graham's code felt like reading my own code masterfully translated, say, from Danish to Swedish. A lot of the ideas are the same, some of the old friends had new names, and there were some new friends that I had never bothered to abstract and name, but recognized instantly once Graham did so (e.g. mapcars, fn). Along with the ideas, I admire the many handy turns of phrase that make the book a real page-turner: "It used to be thought that you could judge someone's character by looking at the shape of his head. Whether or not this is true for people, it is generally true of Lisp programs." "The classic Common Lisp defmacro is like a cook's knife: an elegant idea which seems dangerous, but which experts use with confidence." "Lisp is not inherently about processing lists any more than Polo shirts are for Polo" (Note that the sentence would have been a little confusing if Graham had written "list processing" rather than "processing lists". In Graham's prose, like his code, every word counts. Time and again I can only say "I wish I had thought of that.")
|