Forgot your password?
typodupeerror
Books Book Reviews

Land of Lisp 330

Posted by samzenpus
from the read-all-about-it dept.
vsedach writes "Remember the 1980s and BASIC, when programming was simple, brains flew through space, and everyone ate lasers? Computer magazines came with code listings, and classics like David Ahl's BASIC Computer Games offered a fun and easy way to get started in computer programming. Conrad Barski remembers, and with Land of Lisp, he's set out to demystify programming in the 21st century." Keep reading for the rest of Vladimir's review.
Land of Lisp: Learn to Program in Lisp, One Game at a Time!
author Conrad Barski, M.D.
pages 504
publisher No Starch Press
rating 10
reviewer Vladimir Sedach
ISBN 978-1-59327-281-4
summary Learn to Program in Lisp, One Game at a Time!
This is no small feat. Modern computers don't come with anything that looks like BASIC. Getting started with a "real" programming language like Java requires installing and learning hundreds of megabytes worth of compiler and integrated development environment. Barski's thesis is that Lisp is a refreshing alternative - it offers BASIC's ease of getting started (get a prompt, type in code, and it works), while providing a combination of modern features unmatched in other programming languages.

The first thing that immediately jumps out about Land of Lisp is that it has a lot of comics. The book is an outgrowth of Conrad's Casting SPELs in Lisp illustrated online tutorial, which originally appeared in 2004 (incidentally, around the same time as why's (poignant) guide to ruby, probably the most famous and epic programming language comic book). The comics are humorous and irreverent - if you're a C programmer, you might be surprised to know that you're a Cro-Magnon fighting the COBOL dinosaur.

Despite the silly humor and Barski's approach of introducing programming completely from scratch, Land of Lisp builds up to cover topics like graph theory, search algorithms, functional and network programming, and domain-specific languages. All throughout, the book emphasizes various techniques for doing I/O. The topics covered will leave the reader with a solid understanding of what modern programming entails and a good basis from which to explore either application or lower-level systems programming.

The most unintentionally impressive aspect of Land of Lisp is that it manages to completely explain web programming. No more hiding behind complicated software stacks and impenetrable web server packages - chapter 13, titled "Let's Create a Web Server!," does exactly what it promises, in only 15 pages. Later chapters introduce HTML and SVG to build a graphical game as a web application. If nothing else, this book will leave the reader with all the necessary basic skills and total confidence in their understanding to build real-world web applications.

Other introductory programming books use Lisp, but none fall into the same category as Land of Lisp. Abelson, Sussman and Sussman's Structure and Interpretation of Computer Programs, arguably the greatest introductory programming book ever written, requires a solid math background to understand the examples. Felleisen et alia's How to Design Programs offers a much deeper introduction to programming than Land of Lisp, but is an academic textbook, and hence lacks funny cartoons and may be boring. Friedman et alia's The Little Schemer is a favorite of many, but doesn't have LoL's real-world applications.

Land of Lisp is an excellent book for someone who wants to learn how to program, for web programmers who want to move up out of their niche and start learning about CS theory and systems programming, and for anyone who is puzzled about what really goes on behind the web and wants to learn what web programming is really about. Experienced programmers who want to jump into using Lisp are probably better off with Peter Seibel's Practical Common Lisp, though.

Watch Conrad's hilarious promotional music video for the book.

You can purchase Land of Lisp: Learn to Program in Lisp, One Game at a Time! from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

*

This discussion has been archived. No new comments can be posted.

Land of Lisp

Comments Filter:
  • by cybrpnk2 (579066) on Wednesday November 03, 2010 @03:12PM (#34115596) Homepage
    LOL, I see that Basic Computer Games was printed in 1978. In 1974, I was typing it in directly from an issue of David Ahl's groundbreaking mid-1970s magazine Creative Computing [wikipedia.org], which he compiled into the book several years later. David Ahl [wikipedia.org] is the reason I became a geek, long before there was even a TRS-80 to play with and I had to IMAGINE what the CC program listings would do becasue I didn't have a computer to run them on. Thanks, Dave!!!
  • by Anonymous Coward on Wednesday November 03, 2010 @03:15PM (#34115624)

    Every Windows PC comes with VBscript - open a *.vbs file, and just start typing away Visual Basic.

    Every PC comes with multiple javascript runtimes - just open a *.html file and start scripting away.

  • by elrous0 (869638) * on Wednesday November 03, 2010 @03:19PM (#34115662)

    I wouldn't recommend BASIC or LISP for someone wanting to learn modern object-oriented programming today. A lot of us started out with a structured languages like this, but you wouldn't want to start out that way if you were doing it for the first time now. My university uses Alice [alice.org] and it works pretty well. Alice teaches much more modern object-oriented principles that would be much more useful than BASIC or LISP to a modern programming student.

  • by Anonymous Coward on Wednesday November 03, 2010 @03:28PM (#34115800)

    I wouldn't recommend BASIC or LISP for someone wanting to learn modern object-oriented programming today. A lot of us started out with a structured languages like this, but you wouldn't want to start out that way if you were doing it for the first time now. My university uses Alice [alice.org] and it works pretty well. Alice teaches much more modern object-oriented principles that would be much more useful than BASIC or LISP to a modern programming student.

    Common Lisp has object oriented techniques that Java-like languages still fail to have, like multiple-dispatch and metaclasses. Read your manuals before speaking lies, Common Lisp has the most advanced OO system among modern programming languages.

  • Hi- I'm the Author (Score:5, Informative)

    by smug_lisp_weenie (824771) <cbarski.4503440@bloglines.com> on Wednesday November 03, 2010 @03:29PM (#34115822) Homepage

    Pay no attention to my user name- I promise to respectfully answer any questions you may have, about Lisp or the book!

  • by Raffaello (230287) on Wednesday November 03, 2010 @03:47PM (#34116084)

    Common Lisp, which is what the book uses, has the first ANSI standard OO programming system, CLOS - short for the "Common Lisp Object System" - which includes multiple inheritance, generic functions, a meta-object protocol, and is in all essentials, a superset of the capabilities of the object systems of mainstream OO languages such as C++, Java, Smalltalk and Objective-C.

    No one is advocating entering a time warp to the 1960s to use LISP 1.5 for the teaching of modern OO programming, least of all Conrad Barski, the author of Land of Lisp, which uses ANSI standard Common Lisp.

  • by cduffy (652) <charles+slashdot@dyfis.net> on Wednesday November 03, 2010 @03:51PM (#34116132)

    Speaking as someone who does a lot of real-world programming in non-LISPy languages, I don't think so.

    I love Python, and it's considerably more capable than Java or C in terms of metaprogramming... but I can't tell you how many times I wish I could add a bit of syntactic sugar to replace an awkward construct built to work around Python's no-sharp-edges syntax. LISP-style macros may be abusable, but they're also beautiful, beautiful things.

  • by eldavojohn (898314) * <eldavojohn.gmail@com> on Wednesday November 03, 2010 @03:52PM (#34116148) Journal

    Can I buy it as an elecrtonic copy, e.g. Kindle?

    I saw electronic copies available on O'Reilly's site [oreilly.com]. Not exactly a huge cost benefit but that seems to be the norm.

  • by mangu (126918) on Wednesday November 03, 2010 @03:55PM (#34116174)

    What Lisp promised then is what Python promises now. With one difference, in that Python respects the visual limitations of humans.

    Different from parentheses, it's very easy to undo a bunch of indentations, just put the left margin where you want it.

    Well, if only the TAB character had never been invented... TAB is a kludge to make a typewriter behave sort of like a spreadsheet but, unfortunately, it fucks up the excellent "Don't mix content with presentation" principle.

  • First, Lisp is not an acronym.

    Second, Lisp has the CLOS, which is an advanced OOP system in its own right with multiple inheritance, polymorphism, encapsulation, multiple dispatch and all that other groovy nonsense. It's no setback compared to "modern" OOP.

  • by eldavojohn (898314) * <eldavojohn.gmail@com> on Wednesday November 03, 2010 @03:58PM (#34116226) Journal

    Can anyone post links to any Lisp web application? It can be something different then the HTML & SVG web game, though I would be extra keen to see that run...

    Can't find it hosted but found the code to the book at the homepage [landoflisp.com] that includes both the svg.lisp and webserver.lisp (also check out CL-HTTP [cl-http.org]). As to your more generic question, I think this year's lisp game expo [cliki.net] competition had a few good Lisp web games [norstrulde.org].

  • by smug_lisp_weenie (824771) <cbarski.4503440@bloglines.com> on Wednesday November 03, 2010 @03:59PM (#34116236) Homepage

    For some reason, mopi and epub files take a couple extra weeks to make. They should be appearing on nostarch.com and amazon in a couple of weeks.

  • My understanding is you'll be able to download the mobi/epub versions for free when they become available if you buy the PDF now.

  • by Anonymous Coward on Wednesday November 03, 2010 @04:28PM (#34116604)

    > No, I don't really know of lots of copy and paste style redundant code in my C or C++

    If you are using C or C++, I guarantee that you do have large amounts of code duplication.

    Really. I guarantee it, absolutely, with no doubt possible.

    You may not see it, because you are so used to it that you think that's "just how things are". You are blind to certain things because you know them like the back of your hand. But that doesn't mean it doesn't exist. You DO have code duplication in your C++ program. The language for all practical purposes does not allow you not to.

    Further, there are things which are not code duplication, but could be expressed in a far shorter way if you had higher level language features than you have in C/C++.

  • by unity100 (970058) on Wednesday November 03, 2010 @04:47PM (#34116818) Homepage Journal
    i STILL eat lasers ....
  • by npsimons (32752) * on Wednesday November 03, 2010 @05:45PM (#34117404) Homepage Journal

    I find it amazing that, contrary to popular belief, the 21st century started in 1958.
    Seriously, guys, who in their right mind believes there have been no major advances in programming languages since Lisp?

    Some quite [paulgraham.com] notable [paulgraham.com] hackers [paulgraham.com] believe that everything since LISP has simply reinvented the wheel. The more I study programming languages, the more I'm inclined to believe them.

  • by Lamesword (14857) on Wednesday November 03, 2010 @06:26PM (#34117882)

    I agree that Python is a better beginning language than Lisp, but I think the book is pitched more as an introduction to Lisp (and functional programming) than as an introduction to programming. That said, I'd like to say a few words in defense of Lisp as a first language.

    In my experience (having taught a number of courses that involve coding), beginning programmers love to write bad code. The path of least resistance for them is to write monolithic blocks of code with one-character variable names and zero documentation, and to perform tasks in a remarkably contrived way that reflects a resistance to thinking ahead, somehow managing to do in cubic time what the "obvious" (to me) approach would do in linear time. Python tolerates this--it's such an awesome language that it is often easy to get something done even in the presence of terrible habits and lazy thinking (e.g., its readability makes monolithic code manageable).

    Lisp does not make it so easy to get away with being a bad programmer. Writing monolithic functions, for instance, is relatively hard work in Lisp; the programmer who attempts this is punished with parentheses, and soon finds that the path of least resistance involves many relatively short functions with well-defined purposes. In other words, Lisp requires a level of care and forethought that other languages don't. Pedagogically, this is a virtue (though it comes with the heavy drawback that beginners can easily get discouraged).

    There are exceptions, certainly. For instance, the easiest way to compute the nth Fibonacci number in Lisp is naive recursion, resulting in exponential runtime. Less naive recursion allows linear time, but a beginner would have trouble with that. (And a mathematically inclined programmer can compute it in constant time, if you assume arithmetic operations take constant time.)

    In my view, the only *bad choice* of a starting language is one that causes brain damage, such as BASIC. Python tolerates brain damage (since it accommodates almost any programming style), but is safe under proper supervision. Lisp avoids brain damage.

  • by Urkki (668283) on Wednesday November 03, 2010 @06:45PM (#34118086)

    Python does precisely that. It mixes presentation (what code looks like) with content (what code does).

    To some extent, every language does that. What I meant is that the TAB character introduces an arbitrary visual configuration that's not part of the language itself, which can confuse things when tabs and spaces are mixed in the same source file.

    I think better solution to not having tabs would have been if C would only have accepted tabs as indentation. And if python had "one tab is one level of nesting", I think that'd have been better too.

    Problems only arise when mixing tabs and spaces, and when not agreeing how many spaces indentation is, or how many spaces tab is. I'm sure most of us have encountered source files which have had all three of these, after being edited with many people with different editors and settings. "One TAB equals one level of indentation" would fix all that. Any programmer could use any amount of spaces for displaying tabs in editor, and it would not affect the source file.

    However, this does not mean that the presentation of the code is unimportant. For instance, a reason why I once programmed in Pascal but switched to C was that I found braces easier to read than "begin ... end" pairs. Curly braces are clean and small symbols, looking at the source code at a glance they are easier to identify than multi-character keywords.

    When you are writing and reading code by the hundreds of thousands of lines, every detail becomes significant. That's something language theorists often fail to understand, but Dennis Ritchie and Guido van Rossum got perfectly right.

    Indeed. However, these days code presentation, including automatic indentation, is largely taken care of by the editor (and if it isn't, maybe it's time to either learn to configure it, or switch to a more capable one). Except this is rather hard for Python, for the obvious reason. IMHO this is a serious and unique shortcoming of Python.

  • Hi- I'm the Reviewer (Score:2, Informative)

    by vsedach (1630061) on Wednesday November 03, 2010 @07:04PM (#34118316)

    I'm the reviewer, so I can probably explain how this happens.

    I started out writing posts on my blog about old obscure distributed systems and programming books that I thought deserved more attention. Then I got a copy of Masterminds of Programming for giving a lightning talk at a conference (International Lisp Conference 2007; O'Reilly were giving out books to lightning talkers), and decided to write a review on my blog (it's an interesting book).

    A few months later, Peter Seibel's Coders at Work was about to come out, and Peter noticed that I had written about Masterminds and decided that I would be interested in a preview copy of Coders at Work (which I was). Then he mentioned that I should consider writing a review for Coders at Work on Slashdot instead of my blog, and I liked the suggestion, so I wrote a review (it is a good book). Peter says it helped the book's sales a lot.

    I heard about Land of Lisp from the O'Reilly media relations mailing list (I'm on the list because I'm the O'Reilly User Groups program contact for the Montreal JavaScript user's group; they give us discounts and freebies). The media relations list is basically O'Reilly spamming you with descriptions of upcoming titles - if you think something is interesting, you ask them to send you a review copy. Actually, I had heard about Land of Lisp a long time ago (the book was originally supposed to come out in 2007), but forgot about it in the meantime. If it wasn't for the O'Reilly mailing list, I wouldn't have heard about the book until after it had come out (and then only because I'm very involved in the Lisp community).

    So the lesson here is you should look for someone interested in the book's subject who has written about other books before, offer to send them a review copy, and suggest they write a review for Slashdot. It helps to stroke their egos ("I really like your writing, would you like a super-special advanced exclusive preview copy for super-smart special people? The proles won't get to see this for another two months!")

    Obviously blogs are the best places to find these people; look at blog aggregators on whatever subjects your book is about (for example, the Lisp-related postings on my blog are syndicated on Planet Lisp and Russian Lisp Planet).

    O'Reilly has by far the best book promotion efforts of any technical publisher (media relations mailing list, user's group program, and an extremely active presence at conferences), but it's actually not very effective compared to being part of whatever community your book is about, and simply informing community members of your book's existence. Conrad does pretty well in this respect. I'm sure if I hadn't written a review of Land of Lisp for Slashdot, someone else would have.

It's time to boot, do your boot ROMs know where your disk controllers are?

Working...