Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Books Book Reviews

Land of Lisp 330

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 eldavojohn ( 898314 ) * <eldavojohn@noSpAM.gmail.com> on Wednesday November 03, 2010 @02:57PM (#34115408) Journal

    (incidentally, around the same time as why's (poignant) guide to ruby, probably the most famous and epic programming language comic book)

    Hey, take it easy there, this is a book review meant for humans (not some code for an interpreter)!

    Oh great, now you've got me doing it too. Do you have any idea how long it took for this to go away the last time I coded Lisp?

    *obsessively tallies and double checks to make sure he closed all his parentheses before hitting submit*

    • What do Smileys do to Lisp?

    • by Ksevio ( 865461 )

      *obsessively tallies and double checks to make sure he closed all his parentheses before hitting submit*

      If you're using a good editor, you just need to hold shift-zero until it starts getting angry. At least that's how I usually ended up finishing off programs.

  • Lisp is cool... (Score:3, Interesting)

    by RocketRabbit ( 830691 ) on Wednesday November 03, 2010 @03:02PM (#34115472)

    But where's our new hyper advanced LISP machines?

    Nothing will beat the Symbolics Lisp machine. Clozure is great, but not quite there yet.

    • Re:Lisp is cool... (Score:5, Interesting)

      by Animats ( 122034 ) on Wednesday November 03, 2010 @03:16PM (#34115634) Homepage

      Nothing will beat the Symbolics Lisp machine.

      Ever use one? I've used the refrigerator-sized Symbolics 3600. 45 minute garbage collections. Flaky electronics. An arrogant service organization. Those things lost out to general purpose UNIX workstations for good reasons. Even for running LISP, a SUN 2 was better than a Symbolics 3600.

      (Symbolics was also tied in strongly to the 1980s expert systems crowd, the "strong AI Real Soon Now" people", like Ed Feigenbaum. I went through Stanford CS when those guys were running the department, just as it was becoming clear that expert systems really couldn't do all that much. Not a happy time in academic computer science. Stanford had to move computer sciences from Arts and Sciences to Engineering, and put in adult supervision.)

    • Re: (Score:2, Interesting)

      by Anonymous Coward

      I detested programming in Lisp. The endless parentheses tracking and macro soup made it a miserable experience. It seems to be mainly popular with people who don't have to actually write the code.

      • Re: (Score:3, Insightful)

        by Darinbob ( 1142669 )
        Dismissing lisp because of parentheses is like dismissing Citizen Kane because it was in black and white. It totally misses everything else in the language that's far more important. Lisp is a milestone in computer language history, it was extremely influential to modern fashionable languages, and it is still relevant. To miss all that because of some parentheses is short sighted.
  • by cybrpnk2 ( 579066 ) on Wednesday November 03, 2010 @03:04PM (#34115500) Homepage
    ...they'd never end... Sigh. I remember David Ahl's Basic Computer Games with such nostalgia, spending my first weeks in late 1974 as a freshman typing in SUPER STAR TREK onto paper punch cards to run on the IBM360 at University of Tennessee. As a county bumpkin coming into the land of Oz where there were Real Actual Computers I could work with for the first time, I though I had Entered The Future. Little did I know that the future had only begun, and continues today. Probably will continue into tomorrow, too.
    • Re: (Score:3, Informative)

      by cybrpnk2 ( 579066 )
      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!!!
      • Yeah, I remember typing in a long basic game from probably that same book, on a teletype that my school had for a timeshared regional PDP-10 in the late 1970s.

        I think you can learn a lot by just retyping stuff.

        While I first started learning programming on the KIM-1, in my early teens, it was very confusing (working in assembly).

        I think programming really gelled for me by playing with Radio Shack TRS-80 computers in the store and reading and doing the BASIC exercises in the TRS-80 "User's Manual for Level I"

        • Long before I was playing Super Star Trek in BASIC, I was playing nim [wikipedia.org] on a Digicomp-1 [wikipedia.org] that was my first computer. Wish I still had that thing. Maybe I'll rebuild it [mindsontoys.com] one day...
    • Just remember to be buried facedown, nine-edge first

      Those were the days!

      Any youngsters reading this, GET OFF MY LAWN!

    • Re: (Score:3, Funny)

      I happened to look at the bombs away game on that list and it has this wonderful question: "Is this your first Kamikaze Mission (Y or N)"
    • by PRMan ( 959735 )
      I have that book. I was just looking at it the other day. I remember typing the listings in to my Atari computer at home and the Apple in the library at school. Once I typed in Super Star Trek (and changed the characters to look like the ships), everyone wanted a copy.
  • From the review:

    If you're a C programmer, you might be surprised to know that you're a Cro-Magnon fighting the COBOL dinosaur.

    From the "random" quote of the day at the bottom right of the page:

    COBOL is for morons. -- E.W. Dijkstra

  • 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 mdf356 ( 774923 )

      What's this "object oriented" thing you speak of? If you can't do it in C or LISP, is it really necessary? :-)

    • Re: (Score:2, Informative)

      by Anonymous Coward

      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.

    • 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.

    • 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.

    • I wouldn't recommend BASIC or LISP for someone wanting to learn modern object-oriented programming today.

      I don't completely agree. A true beginner doesn't really need to understand how to structure a large program, which is what the modern principles are for. The first goal should be to write "linear" programs of the input-process-output model, learn the basic control structures and operators, and how to debug. From that foundation, you could go one way and learn how things work "under the hood" and try C o

      • Re: (Score:3, Funny)

        by Crackez ( 605836 )
        I disagree, LISP is fine for beginners. I mean an entire OS, emacs, is written in LISP; too bad it doesn't come with a good editor...
    • 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.

      Yes, you would. Objects are meant to solve a problem, and simply get in the way until and unless you run into that problem. Of course, the same goes for structured programming...

      Alice teaches much more modern object-oriented principles that would be much

    • Re: (Score:3, Insightful)

      Funny. To date, Common Lisp still has the most powerful and feature-complete OOP system ever designed in a programming language.

  • I initially learned to code (BASIC) from 3-2-1 Contact magazines.

  • I remember David Ahl. I don't think he gets enough respect today for what he did for the industry with his magazines and books. BTW you can get the text of old articles from Creative Computing at: http://www.atarimagazines.com/

  • 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!

  • San Francisco?

    • by khallow ( 566160 )
      Lisp is an East Coast thing. Blame MIT. The Snowbol/Pike/Perl progression was so much more open to the San Francisco lifestyle.
  • by Junta ( 36770 ) on Wednesday November 03, 2010 @03:44PM (#34116038)

    To get the most out of LISP, you really have to approach it with a mindset particularly distinct from most programming. It also happens to be distinct in nearly requiring recursion that is generally not part of an 'easy' getting started with programming. That and most people will club themselves over the head trying to sort out how many close parentheses are needed when they write something *particularly* 'clever'.

    If in modern Windows, Powershell is a good starting point, if in Linux, Python. Unlike LISP, both yield immediately marketable skills and are easy to start toying with basics and do not require a lot of knowledge of where to go to get it running, it already exists on your platform (almost certainly).

    I do agree that 'web frameworks' have mutated the relatively straightforward nature of underlying http into a frightening looking mystery to the uninitiated, but at least some in the industry are swinging back to the basics and discarding some of the oddly complex schemes over HTTP.

    • by fusiongyro ( 55524 ) <faxfreemosquito.yahoo@com> on Wednesday November 03, 2010 @04:03PM (#34116280) Homepage

      Your information about Lisp is about 30 years out of date. It's not an acronym, Common Lisp has many looping constructs that are much more widely used than recursion, and closing parenthesis is as trivial to any modern editor or IDE as managing any other aspect of syntax. I think if you look at the cover of this book, it should be obvious to you that the target audience is not particularly interested in the marketability of their skills.

      • Re: (Score:2, Insightful)

        > and closing parenthesis is as trivial to any modern editor or IDE as managing any other aspect of syntax.

        That's a hinderance, not an advantage. I should be able to easily enter in blocks of code without having to rely on crutches like IDEs to make sure I have the correct number of parenthesis. While I admire LISP for its simplicity, elegance, and consistency, back in the Real World (TM) it has a lot of unncessary and redudant parenthesis that do nothing except clutter up code, making that crap near u

        • Indeed. If you want a clean, readable functional language, you're much better with something like Haskell (assuming you don't write Haskell like an academic... seriously, *WTF* is with all these single character variable names? Yes, Haskell looks like a system of equations, but it's still a fucking programming language, people).

        • by ultranova ( 717540 ) on Wednesday November 03, 2010 @05:33PM (#34117282)

          While I admire LISP for its simplicity, elegance, and consistency, back in the Real World (TM) it has a lot of unncessary and redudant parenthesis that do nothing except clutter up code, making that crap near un-readable -- at least in C/C++ you can remove the braces for one-liners.

          Thus saving a whole single character per line. That's real efficiency.

          Algol-like languages have a better mapping to mathematical functions. foo(x) vs (foo x)

          I wonder how many bugs have been introduced when people have confused Algol-like functions (which have side effects) with mathematical ones (which don't)?

        • Re: (Score:3, Interesting)

          by SuperKendall ( 25149 )

          I should be able to easily enter in blocks of code without having to rely on crutches like IDEs to make sure I have the correct number of parenthesis.

          That's an issue with braces in any other language, just check your C++ example... or any code with nested if statements and a bunch of closing braces.

          As with any paired construct, the solution is to enter both halves before you type anything else - so I always enter:

          ()

          And then type into it. You don't mismatch parens that way - editors are nice in that they ca

        • Re: (Score:3, Interesting)

          by Wolfbone ( 668810 )

          rely on crutches like IDEs [...] t has a lot of unncessary and redudant parenthesis that do nothing except clutter up code, making that crap near un-readable [...] Algol-like languages have a better mapping to mathematical functions. foo(x) vs (foo x)

          IDE? A programmer's editor is all you need. In the Real World (TM) I suspect most programmers are already 'reliant' on such ubiquitous crutches!

          The parentheses are necessary and are not redundant - the necessary minimum in fact - and do not "do nothing except c

    • by SuperKendall ( 25149 ) on Wednesday November 03, 2010 @04:13PM (#34116402)

      The great thing about learning Lisp as a first language is the lack of marketability, because it's to about setting you up on a path, it's about giving you fundamentals.

      As noted there is enough syntactic sugar now to not cause the kinds of rough work that used to be around, and I think the brevity of the language can be good for people in that there's not a ton of syntax to learn to actually get something real built.

      Once you have programmed in at least two languages, you have a much better idea of what you are doing I think. So given that you'll learn some "practical" language to do something, let Lisp be that "other language".

      • Re: (Score:2, Insightful)

        by Mike Buddha ( 10734 )

        I'm with Junta on this one. If you're going to learn a first language, make it one that will grow with your knowledge. When I started out, it was with LOGO and BASIC. The LOGO stuff was pretty much mental masturbation, as it were. Yes, some of the concepts were transferrable to more modern, practical languages, but so were the concepts in BASIC.

        For a beginner, I'd recommend Python. It's a powerful language, freely available on just about every platform imaginable, with tons of support and it will take a use

      • Once you have programmed in at least two languages, you have a much better idea of what you are doing I think. So given that you'll learn some "practical" language to do something, let Lisp be that "other language".

        I concur, and would add that being proficient with five languages is not too high a bar to set for a professional developer. (Not a world-leading expert, but able to Write Good Code(tm))

        Heck, I know C, C++, python and shell scripting *very* well (IMNSHO); haskell, java and scala decently; scheme, elisp and SML/NJ somewhat; javascript, C# and perl superficially, [...].

        But then again, scheme and javascript are basically the same language, and python is a funky dialect of it with elisp being a close cousin.

  • Please, please say there will be a Kindle and/or iBook version of this book...

    I'll preorder the physical copy anyway, but it would make a great eBook I think (not having seen it yet).

    I think everyone, doing anything, should learn Lisp just to really open yourself to alternative programming approaches. I have used different techniques I learned in Lisp in every programming language I have ever used, from shell scripts to full languages like Java, C++, or Objective-C.

  • by unity100 ( 970058 ) on Wednesday November 03, 2010 @04:47PM (#34116818) Homepage Journal
    i STILL eat lasers ....
  • by Baldrson ( 78598 ) * on Wednesday November 03, 2010 @05:08PM (#34117026) Homepage Journal
    I find it amazing that, contrary to popular belief, the 21st century started in 1958 [wikipedia.org].

    Seriously, guys, who in their right mind believes there have been no major advances in programming languages since Lisp?

    Oh, I'll admit that 99.9% of the supposed "advances" have been horseshit...

  • by slim ( 1652 ) <john@hartnupBLUE.net minus berry> on Thursday November 04, 2010 @07:04AM (#34122594) Homepage

    Two comments about the summary:

    Programming today is easier than programming in the 80s, if you pick the right language. BASIC wasn't that easy -- although at least on most computers there was no installation step.

    Most people who typed in games from magazines weren't doing it to learn -- they wanted to play the game, and printing the BASIC code on paper was more cost effective for the publishers than gluing a cassette to the magazine. Typically there would be no comments, no discussion of the techniques use, and towards the end of this practice's lifetime, it wasn't unusual for the program to be a small piece of BASIC for poking integers into memory, followed by several A4 pages of hex characters; the machine code for the game.

"If it ain't broke, don't fix it." - Bert Lantz

Working...