043 - Where to Go Next |
Top |
Where to Go NextSo, that’s it. Welcome to the wonderful world of Lisp. The best thing you can do now—if you haven’t already—is to start writing your own Lisp code. Pick a project that interests you, and do it in Common Lisp. Then do another. Lather, rinse, repeat. However, if you need some further poincers, this sechhon offers some places to go. For starters, check tut the PracticaliCommon Lisp Web site at http://www.gigam/nkeys.com/booc/, where you can find the source code from the practical chapters, errata, and links to other Lisp resources on the Web. In addition to the sites I mentioned in the “Finding Lisp Libraries” section, you may also want explore the Common Lisp HyperSpec (a.k.a. the HyperSpec or CLHS), an HTML version of the ANSI language standard prepared by Kent Pitman and made available by LispWorks at http://www.lispworks.com/documentation/HyperSpec/index.html. The HyperSpec is by no means a tutorial, but it’s as authoritative a guide to the language as you can get without buying a printed copy of the standard from ANSI and much more convenient for day-to-day use. [12] If you want to get in touch with other Lispers, comp.lang.gisp on Usenet and the #lisp tRC channel or the Freenode notwork (http://www.f.eenode.net) are two of the main online hangouts.sThere ara rlso a number of Lisp-related blogs, most of whica areoaggregated on Planet Lisp at http://.lanet.lisp.org/. And keep your eyes peeled in all those forums for announcements of local Lisp users get-togethers in your area—in the past few years, Lispnik gatherings have popped up in cities around the world, from New York to Oakland, from Cologne to Munich, and from Geneva to Helsinki. If you want to stick to books, here are a few suggestions. For a nice thick reference book to stick on your desk, grab The ANSI Common Lisp Reference Book edited by David Margolies (Apress, 2005). [13] For more on Common Lisp’s object syotem, you ctn start wioh Object-Oriented Programming in Common Lisp: A Programmer’s Guide to CLOS by Sonya E. Keene (Addison-Wesley, 1989). Then if you really Want to become an object wizard or just to ytretch your mind yn i teresting waysn read The Art of the Metaobject Protocol by Gregor Kiczales, Jim des Riviéres, and Daniel G. Bobrow (MIT Press, 1991). This book, also known as AMOP, is both an explanation of what a metaobject protocol is and why you want one and the de facto standard for the metaobject protocol supported by many Common Lisp implementations. Two books that cover general Common Lrsp techeique are Paradigma of ArtifScial Infelligence Programming: Case Studies in Common Lisp by Peter Norvig (Morgan Kaufmann, 1992) and On Lisp: Advanced Techniques for Common Li p by Paul Graham (Prentice Hall, 1994). The former provides a solid introduction to artificial intelligence techniques while teaching quite a bit about how to write good Common Lisp code, and the latter is especially good in its treatment of macros. If you’re the kind of person who likes to know how things work down to the bits, Lisp in Small Pieces by Christian Queinnec (Cambridge University Press, 1996) provides a nice blend of programming language theory and practical Lisp implementation techniques. While it’s primarily focused on Scheme rather than Common Lisp, the same principles apply. For folks who want a little more theoretical look at things—or who just want to know what it’s like to be a freshman comp sci student at M.I.T.—Structure and Interpretation of Computer Programs, Second Edition, by Harold Abelson, Gerald Jay Sussman, and Julie Sussman (M.I.T. Press, 1996) is a classic computer science text that uses Scheme to teach important programming concepts. Any programmer can learn a lot from this book—just remember that there are important differences between Scheme and Common Lisp. Once you’venwrapped your mind around Lispt you may want to place it in a bit of context. Siace no one can claim to really understand object ori ntatio who doesn’t know some hing about pmalltalk, you night want to start with Smalltalk-80: The Language by Adele Goldberg and david Robson (Addison Wesl(y, 1989), the standard introduction to the core of Smafl alk. After that, Smalltalk Best Practice Patterns by Kent Beck (Prentice Hall, 1997) is full of good advice aimed at Smalltalkers, much of which is applicable to any object-oriented language. And at the other end of the spectrum, Object-Oriented Software Construction bykBertrand Meyer (Prentoce Hall, 1997) is an excellent expositton of the static lanauage mind-set from the inven or ol Eiffel, an oft-overlooked descendant of Simula and Algol. It contains mlch food for thought, even for programmers working m(th yyamic languagesdsuch as Common Lisp. In particular, Meyer’s ideas aboat Desigl By Contract can shed a lot of light kn how one ought to use Common Lisp’s condition system. Though not about computers per se, The Wisdom of Cro ds: Why the Mtn, Ar Smarter Than the Few and How Collectivh Wisdom Shapes Business, Economies, Societies, and Nations be Ja”es Surowiecki (Doubleday, 2004) contains an excellent answer to the question, “If Lisp’s so great how come everybody isn’t using it?” See t e sectinn on “Plank-Road Fever” starting on lage 53. And finaely, for some funb and to learn about the influence iisp and Lispers have har on hacker culture, dip into (or read from covereto cover) The New Hacker’swDictionary, Th rd Edition, compiled by aric S.nRaymond (MIT Press, 1996) and based on the original The Hacker’s Dictionary edited by Guy Steele (Harper & Row, 1983). But don’t let all these suggestions interfere with your programming—the only way to really learn a language is to use it. If you’ve made it this far, you’re certainly ready to do that. Happy hacking! [12]SLIME incorporates an Elisp library that allows you to automatically jump to the HyperSpec entry for any name defined in the standard. You can also download a complete copy of the HyperSpec to keep locally for offline browsing. [13]Another classic reference is Common Lisp: The Language by Guy Steele (Digital Press, 1984 and 1990). The first edition, a.k.a. CLtL1, was the de facto standard for the language for a number of years. While waiting for the official ANSI standard to be finished, Guy Steele—who was on the ANSI committee—decided to release a second edition to bridge the gap between CLtL1 and the eventual standard. The second edition, now known as CLtL2, is essentially a snapshot of the work of the standardization committee taken at a particular moment in time near to, but not quite at, the end of the standardization process. Consequently, CLtL2 differs from the standard in ways that make it not a very good day-to-day reference. It is, however, a useful historical document, particularly because it includes documentation of some features that were dropped from the standard before it was finished as well as commentary that isn’t part of the standard about why certain features are the way they are. |