Home - Game Programming
Land of Lisp: Learn to Program in Lisp, One Game at a Time!
Price:
$27.95
$49.95
& 2-Day * Free Nationwide Shipping! (* details)
Availability: Usually ship in 24 hours if sold by Amazon.com
Product Details
| Binding: | Paperback |
|---|---|
| EAN: | 9781593272814 |
| Label: | No Starch Press |
| Feature: | ISBN13: 9781593272814 Condition: New Notes: BRAND NEW FROM PUBLISHER! 100% Satisfaction Guarantee. Tracking provided on most orders. Buy with Confidence! Millions of books sold! |
| Publisher: | No Starch Press |
| Studio: | No Starch Press |
Editorial Reviews
Lisp has been hailed as the world's most powerful programming language, but its cryptic syntax and academic reputation can be enough to scare off even experienced programmers. Those dark days are finally over—Land of Lisp brings the power of functional programming to the people!
With his brilliantly quirky comics and out-of-this-world games, longtime Lisper Conrad Barski teaches you the mysteries of Common Lisp. You'll start with the basics, like list manipulation, I/O, and recursion, then move on to more complex topics like macros, higher order programming, and domain-specific languages. Then, when your brain overheats, you can kick back with an action-packed comic book interlude!
Along the way you'll create (and play) games like Wizard Adventure, a text adventure with a whiskey-soaked twist, and Grand Theft Wumpus, the most violent version of Hunt the Wumpus the world has ever seen.
You'll learn to:
- Master the quirks of Lisp's syntax and semantics
- Write concise and elegant functional programs
- Use macros, create domain-specific languages, and learn other advanced Lisp techniques
- Create your own web server, and use it to play browser-based games
- Put your Lisp skills to the test by writing brain-melting games like Dice of Doom and Orc Battle
With Land of Lisp, the power of functional programming is yours to wield.
Customer Reviews
If for no other reason, you should buy Land of Lisp because of the extreme levels of unadulterated nerdery filling its pages. The price of the book is almost worth that very spectacle alone. However, as an added bonus the content of the book is top drawer. The first incarnation of Lisp was discovered by John McCarthy over 50 years ago, so it's difficult to imagine that a book on the subject bringing a fresh perspective, but Land of Lisp pulls it off in spades. The book manages to carve its own unique niche in the Lisp book landscape through a masterful blend of cartoons, game development examples, interesting prose, and a highly sharpened whit.
The author, Conrad Barski M.D., takes the reader through a whirlwind tour of Common Lisp and some of the fundamental principles of game development, but interestingly enough it never feels rushed. He accomplishes this feat by sticking to a very important strategy summarized as, "providing something useful at every stage". That is, every example in the book is meant to fit into the context of the larger game examples (e.g. a text adventure, Dice of Doom, etc.) while simultaneously teaching a lesson about Common Lisp *and* provide utility in isolation. It's really a thing of beauty the way that Mr. Barski manages to build useable games piecemeal while teaching important concepts along the way. To illustrate what I mean, let me give an example. The Dice of Doom game example starts with a very small 2x2 board and the program parts needed to represent it. Mr. Barski then builds pieces on top of this substrate to generate positions, while extolling the virtues of decoupling the logic of the game from its representation. It's at this point that the game is playable against a human opponent, but at no previous stage was the code left in a state of flux -- each one was fully amenable to tinkering, tweaking, and experimentation. As an added bonus, the whole implementation by this stage was an incredible 13 lines! (that is actually not true, it's more than that, but by using Common Lisp the implementation was incredibly concise) As if this feat was not impressive enough, Mr. Barski then adds game AI into the mix while explaining the famous minimax search algorithm. He then makes the game more efficient using some techniques common in functional programming, including: closures, memoization, tail-calls (with caveats), and lazy programming. As expected the game itself becomes more feature rich as these lessons progress as stronger AI (i.e. better evaluation) is added, more efficient search techniques are introduced (i.e. alpha-beta pruning), and heuristics are used.
All in all, I am very impressed with the quality of Land of Lisp. As a co-author of a Lisp programming book I appreciate the amount of effort required to pull off a genuinely unique book -- I would be happy to achieve a fraction of the quality of Land of Lisp. This book will appeal to the long-time Lisper and the neophyte and I highly recommend buying it today.
While this book would be worth purchasing for the Nerdly Jokes and Comics by themselves, it is a full but easily paced treatment of a language that allowed the implementation of most Artificial Intelligence research. The easy, carefully designed pedagogy (teaching) follows the development of several entertaining and challenging games including 1980's style text adventures (like Zork and Adventure). But advanced topics are covered in some level of depth with examples including development of a HTTP server, a full chapter on Functional Programming, and another on LISP Macro's and the development of Domain-Specific Languages (DSL's). Some Artificial Intelligence methods such as MINIMAX are briefly covered in the game examples developed in this book. Reader's seeking some understanding of Functional Programing will achieve this understanding in a widely used and classic programming language rather than the more recent and arcane Haskell.
This is a fun and relatively easy ride through one of the oldest higher-level programming languages and one with considerable life still in it. It could form the basis of a child's early programming background or a comprehensive adult's introduction to a powerful Computer Science tool. It is the interesting project of an MD's interestingly twisted obsession and valuable to anyone interested in techniques of programming. A great read...
--Ira Laefsky, MSE/MBA
IT & HCI Researcher and Consultant formerly on the Senior Consulting Staff of Arthur D. Little, Inc. and Digital Equipment Corporation
Although there are many wonderful books about common lisp, Land of Lisp stands above others for beginners because its explanations are clear and its fun to read. And, if you need a break from reading, perhaps you can play a game - one you just wrote.
Anyway, this has to be the coolest programming book I have ever read. I very highly recommend it.
As a teacher of computer science, I tend to prefer teaching out of books with a coherent pedagogy. How to Design Programs is my favorite textbook. Simply Scheme is another good one.
Land of Lisp doesn't seem to be grounded in any kind of modern pedagogical philosophy. Instead, it has a kind of retro feel that is appealing in its own way. This book takes me back to the 80s, learning how to program by typing in complex BASIC programs out of magazines and books. Many of the programs I typed in, I didn't understand 100%. But each time I entered a program, I learned something, and then by tweaking the programs and seeing what it would do, I learned a little more. One of my favorite middle school memories is the time I managed to understand a text adventure BASIC program well enough to write my own. Land of Lisp, in fact, has code for a rudimentary text adventure engine, as well as a blatant "Retro type-in game" of Robots that fits compactly in less than a page of code. So it's easy to see why this book evokes in me a sense of nostalgia.
I think Scheme is a better language for learning programming than Common Lisp. Common Lisp lacks a bit of Scheme's elegance, and it's just harder to get a Lisp environment up and running. But Land of Lisp doesn't make any apologies for Common Lisp's quirks. On the contrary, it revels in the cars and the cdrs, and the convoluted loop macro and format strings which allow you to write some ridiculously concise code (like the retro type-in robot game). The book repeatedly brags about how amazing Lisp is, sometimes to the point of overstating the case for dynamic, functional languages. This is not a book that will attract non-programmers to programming, but for that rare breed of person who was "born to program", the book has an infectious enthusiasm for programming in general, and Lisp specifically.
In my mind, the truly special thing about Land of Lisp is its inspired collection of engaging and well-chosen projects, which are quite a bit different from the run-of-the-mill exercises in a typical textbook. As a teacher, I am glad to own this book because I'm always on the lookout for great project ideas for my students. A book with one great project is usually worth the price -- this book has several! I intend to use these project ideas with my Scheme students. Obviously, the programs translate the easiest to other Lisp dialects, but even if you don't teach Lisp, I'd recommend purchasing this book and trying to port these projects to your favorite language. Orc Battle, for example, should be doable in any object-oriented language. A number of the projects would probably work well in Python. I would advise against trying to tackle these projects in Java (the resulting programs would be too verbose), but a modern multi-paradigm variant of Java, (e.g., Scala), should work just fine.
Because the author assumes the reader has a basic grasp of his operating environment, setting up a Common Lisp implementation (editor/compiler) is not covered in detail. If that idea is too daunting for you, then you may wish to refer to the beginning chapters of Peter Seibel's Practical Common Lisp or David Lamkin's Successful Lisp as a starting point and come back to LoL when you're more comfortable with how things work.
All in all, I would say, "buy this book!". Highly recommended.
Since I have experience with Lisp I was a little disappointed towards that end when I wanted more, more, more, but for someone who has no to little experience of Lisp or functional programming this book is wonderful. It's rare that reading a technical book makes you happy, but the author's writing style and cartoons keep you smiling along as he explains what to many people is an esoteric language.
I'd recommend this book strongly as the first book to read on Lisp. After that migrate to Paul Graham's On Lisp.
Lisp is hard, no doubt about it. I've read about ten Lisp books so far, and have written a fair amount of Lisp code, and I can't say that I have a grasp on it. Part of the problem is that Lisp doesn't have an authoritative implementation or development environment. Barski does a fair job of getting a novice up and running, not as good a job as Peter Seibel in 'Practical Common Lisp', but a much better job than Norvig, or Graham, or most of the others.
Barski also hasn't written a textbook or reference, which is both good and bad. I would strongly recommend the reader supplement his reading with both a text (Touretsky has one available online at no charge) and a reference (the Lisp Hyperspec, for example). Some might feel that this lack diminishes the book, but I see it as a judgment call based on the fact that one book can't contain everything.
The strongest part of LoL, in my opinion, is that Barski presents an attractive learning environment with intelligent projects.
The weakest part of the book is that it doesn't cover Lisp in any systemic way, but this is only a fairly minor defect, given that more systemic treatments are readily available.
I don't know whether I would recommend LoL for a complete beginner who wants to self-learn Common Lisp -- I think a traditional text (like Winston & Horn, Lisp 2nd) might be more appropriate for a complete novice. However, I certainly think that LoL would be a great second book for a self-learner.
And finally, I would like to thank Conrad Barski for giving us such an engaging treatment of Common Lisp. LoL is really a first class book.
[...].
Your reaction to this video is actually a pretty good indicator on wether or not you are likely to enjoy this book. If you can't take the cartoons and strange humor, "Land of Lisp" will probably not be for you. If you do however, you'll be relieved that the book is at least as awesome as the video and probably even more.
People believing that Lisp has been dead since the AI winter may be surprised by the release of new book on the language in 2010. They may however have missed the release of Peter Seibel's Practical Common Lisp in 2005, which managed to expose the language to a wider audience again, a feat I think "LoL" might achieve too.
For me the best part about Conrad Barski`s book is its very readable and entertaining style, combined with cartoons and the use of small games as demonstrations of the techniques introduced in the book. I think this is what makes "LoL" really stand out from the other Lisp books: it's neither as academic as most of the texts focussed on Scheme (with The Little Schemer being an obvious exception), nor is it as dry as Seibel's book (which otherwise is a pretty good read) or as dated as Paul Graham's On Lisp which was written while Common Lisp was still in the process of being standardized. For many people "Land of Lisp" may very well be there first contact with the language, and I think with its funny and easy to follow style it may get quite a few people hooked.
The book is structured in 4 main parts, the first of which - called "Lisp Is Power" - serves as a general introduction to the language, explaing the basic syntax and so on. The second part ("Lisp Is Symmetry") introduces the reader to flow control, data structures, input and output, lambda expressions and more. In the process you'll write the first part of a game engine for text based games, a great little version of Hunt the Wumpus called "Grand Theft Wumpus" and "Orc Battle", a small strategy game played in the REPL. The third part ("Lisp Is Hacking") introduces us to the powerful and sometimes disputed "format" and "loop" commands, as well as streams. Game-wise you'll encounter a little simulation of an evolving world as well as "Attack of the Robots", a retro game where your aim is to get rid of some robots by making them collide with each other. The last part ("Lisp Is Science") introduces functional programming techniques, macros, DSLs and laziness. Besides finishing the text adventure started in an earlier chapter, you'll also write "Dice Of Doom", a Dice Wars clone that's the most complex program of the whole book. Last but not least there's an epilogue, where the author gives a brief overview of several important topics that got little or no exposure up to that point, like CLOS or the condition system.
As a final summary I'd say that "Land of Lisp" is a truly great achievement. It's fun to read and does a good job of introducing the reader to the most important concepts of Lisp, by giving a taste of the language's power, without being overwhelming. For more experienced Lispers this might make the book significantly less interesting, since some really nifty things only get mentioned in the epilogue. If you are among them, Seibel's book is probably what you want to read (if you haven't already, which would be surprising). I'd also advise you to not get too excited about the "game development" part of the book, except for the last one all the games are rather minimal and simple, so don't expect writing 3d shooters or anything like that. They are however awesome examples of the concepts introduced in the individual chapters and way more fun than the contrived examples one finds in way too many programming books. For new Lispers or people who need to brush up on their Common Lisp skills (e.g. when migrating from some other Lisp) this comes highly recommend, but even more senior Lispers might want to get a copy, even if it's only for the odd cartoons.
The introduction is one of the funniest pieces of half-technical writing I ever read. In the rest of the book the humor is present and that is great value. I don't consider myself a Lisp expert; however, it's about a decade since my first exposure to Lisp, I have recently dig into scheme and used quite an amount of functional, logic, dynamic, high-level and whatever languages. That means that I was afraid the first chapters of the book would just be very boring to read (because I already know the contents), but perhaps a necessary evil to familiarize with the concepts and the philosophy of the book, which could prove useful when reading more advanced stuff.
Well, I was right and I was wrong. I was right since it's pretty hard resisting to read the book, even though I have some compelling things to do (or maybe more so). O was wrong because the first chapters are a pleasant reading /even if you know/ the concepts presented. Perhaps it is even more interesting as my brain is not involved into understanding difficult new concepts but can just enjoy the beautiful presentation of familiar stuff.
Besides, the book is a wonderful introduction to the functional way of thinking and covers relatively advanced topics. You can really learn Lisp from the book, even if you don't know a thing about Lisp and functional programming. However, it is nice to read for someone familiar with FP and not with Lisp. I believe that it is funny even for experienced Lisp hackers, as the comics and jokes inside the book are really funny.
Highly recommended!
I looked around for any sort of contemporary reading material on Lisp, as much of what exists is dated and terse, so I was therefore very excited to see this book with a gigantic green alien on the cover, and whose pages are littered with comics. I had high hopes that it would be an interesting venture, and I was not disappointed: Land of Lisp is an incredibly clever, intelligently presented textbook on the Lisp language, its history, and importance in the realm of functional programming. I got a real sense of passion from Barski in his delivery of the material; he clearly loves the language himself. More importantly, he demonstrates a finely tuned understanding of not only its syntax and use, but also its value and place in programming. This is evidenced by the fact that Barski spends an equal amount of time introducing you to core fundamentals of Lisp, as well as covering the history of why these parts of the language exist--a part of programming textbooks that is often left out. This is important for old and new programmers alike, because it paints a complete picture of the language--not only what it does--but why, and the 'why' is often necessary to take a programmer out of the hobbyist mentality and into the realm of becoming a true professional.
Barski even goes so far as to cover the myriad of dialects that Lisp has spawned (including Clojure), and spends some time exposing the reader to the bias that the various Lisp communities have with each other, which I found fascinating. Having been in software development for nearly two decades, I can empathize with the author on language communities having their religious convictions for a particular dialect, and I was surprised (and impressed) that Barski took the time to cover this darker side of programming in Land of Lisp.
All of this is just icing on the cake, however, as the core material delivers exactly what it promises: a unique and fun look into the Lisp language, by way of many small, digestible programming examples in the form of games. The first half of the book has the reader working on stand-alone games, each taking advantage of a new part (read: benefit) of Lisp, slowly introducing the reader to the realm of functional programming. The second half of the book is a series of smaller programming tasks that all build towards a final web-based game. This, coupled with the author's clever wit and humorous artwork has lead me to be thoroughly satisfied with this textbook. If you have any interest at all in any of the dialects which are based upon Lisp, I strongly urge you to start at the core language to caused them all to be, and do so via Land of Lisp. I have a feeling you'll come away with a new found respect for functional programming, and may even become a "Lisper" yourself.
This book is a lot of fun. You write games, and there are occasional comics, some of which are brilliant. (I would happily pay for a T-shirt of with the slogan "SIDE EFFECTS SHALL RECEIVE NO MERCY!") And you really get a taste of the succinctness and power of Lisp when you build a web server in just a few lines.
The one question I kept asking as I read this book was: Why Common Lisp? Clojure--a Lisp dialect that runs on the JVM, giving it great performance and access to the rich Java ecosystem--is starting to take over the world. I think it's safe to say that far more "real" code is being written in Clojure right now than in Common Lisp or Scheme. And then there's JavaScript (inspired by Scheme, and arguably "an acceptable Lisp" in its own right, despite the shortage of parentheses). It's in the unique position of running in all major browsers, and Node.js has made it a first-class server language as well. Of course, JS suffers from its C-like syntax... but that's why there's CoffeeScript.
In short, Land of Lisp didn't convince me that I should become a Lisper (despite the promise of an ample beard), but then, it's not really trying to. The marketing for this book just says, "It'll make you a better programmer!" And that's true. While most of the capabilities of Lisp have found their way into modern languages like Ruby, Python, and JavaScript, it's hard to appreciate how natural and elegant those features are without knowing Lisp. This is a great read for programmers of all stripes.
all the examples.
What a great book! It reminds me of when programming was fun and done
by amateurs in the Eighties on things like Amiga 500s. Now we're all
'professionals' (including me) and I miss the fun when hobbyists were
writing cool math, graphics, and game hacks. This book brought me
back to those days.
The book is easy to read and very comprehensive. Going from one chapter to another you will start falling in love with this weird and charming programming language.
But there is a caveat: it's better to find on the internet a basic tutorial, read it through, and only then read this book. The experience will be better, and even better if you already know some programming language. To the utter beginner, the everytime classic Common Lisp: A Gentle Introduction to Symbolic Computation is a way better choice.
To the point now. I may not have any other experience with Lisp books, but I do with books about other programming languages and this book is by far the one I like most. It's laid back but manages to offer something new on practical every page. I don't enjoy re-reading books much so I make a list of stuff like "What is quasiquoting? How does it work? Write a simple function using quasiquoting" and then noting the page, in this case, 73. That way I make a list of the stuff the book teaches and I just have to go through the list later on. I seem to be taking "notes" or whatever you want to call them for almost every page of the book.
btw I haven't finished the book so I guess it might get worse later on but I really do doubt it. I was so pleased with this book that I had to make a comment (I also don't comment much on books, good or bad... only about the ones I like it seems).
As a little nitpicking I must point that author have a habit of writing very long functions which sometimes span 30 lines and those hurt my eyes.
This book manages to set a good pace of new ideas interspersed with game-based code examples, punctuated by the odd cartoons. When you are done, you'll have enough depth to be able to express many ideas in Lisp, and enough breadth to be able to explore other parts of Lisp in depth on your own.
It is a good start to learning Common Lisp, warts and all.
I purchased mine from No Starch directly. I did so to get early access to the eBook, which came free with paper book purchase. No Starch is still offering the ebook free with paper deal; however, I would not suggest purchasing from them. I had no problems. They were actually great. That said they aren't as good as buying paper from Amazon and the ebook from O'Reilly. The paper is the same, but O'Reilly's ebook management system is superior and more wildly supported (ex Stanza integration).
I've found that the price of splitting the purchase is within the margin of price fluctuation.
Unfortunately, having spent an afternoon and a half with it I have to say that I am thoroughly unimpressed. My initial, though it now appears unfounded impression was that this book is targeted at people with a desire to learn how to program. Just reading the first three chapters was enough to completely dispel this illusion.
That in itself would represent no problem at all if the book lived up to its promise of teaching the reader how to program in LISP. Having read SICP I can quite confidently state that this book stumbles on what should have been a rather easy task. While the problems that SICP would throw at you were sometimes hard, the solutions it offered were regularly simple and elegant. On the other hand, the initial problems in this book are relatively simple, but the solutions feel totally ad hoc and oftentimes convoluted as well. There is a serious lack of didactycism here.
The thing that really sank this book for me was the perpetual and monomaniacal praise to LISP. It seems like every fifth paragraph is a dithyramb to a particular feature of LISP not to be found in most other contemporary programming languages. Sorry, but I don't think that any language, even LISP is that good.
Finally, the comics: they're quite a bit funny, but to fully appreciate them one should already know a thing or two about programming and functional programming in particular. The bad side to them is that their value is mostly confined to entertainment: on very few occasions do they actually usefully illustrate the currently discussed ideas.
As a comic book I could perhaps rate this with 5 stars (I'm still to read them all), but as a textbook on programming I can't in all honesty bring myself to rate it with more than 2 stars.
The good side of the book is that the author chooses an accumlative project. Each mini-project (chapter) feeds into the larger project. The culmination: a game of some sort. The fun is seeing how the game is implemented, with mathematical structures behind it. The author in the process shows the reader the basics of lisp.
All in all, because the text is drably written and because there is no extensive use of cartoons as part of the learning process as insinuated by the Land of Lisp website (landoflisp.com) I would give this book 3 stars.
Create your own review




