So, you think you know a lot about programming? I’ve been writing code since my senior year in high school. That’s 14 years. I’ve written code in more languages than I care to remember – C, C++, Assembly, Pascal, COBOL, Java, Perl, VBScript, JavaScript, PHP, Ruby, Python, Unix Shell.
I thought I knew a lot about programming, until I started reading The Little Schemer. This is a book that literally blew my mind. As soon as I started reading it I thought I can’t wait to finish this and start reading The Seasoned Schemer.
Once I got about halfway through the book I realized that I wouldn’t be able to do that. Instead, when I finished the book I immediately started reading it again. I’ve never done that with any book before. The Little Schemer is really that good. I’m on my third reading now.
What makes it so great? It teaches a whole new way of looking at programming problems. Not only that, it uses a unique method of teaching. Instead of the usual dull paragraphs followed by pages of code, this book is a humorous series of questions and answers. The authors never really tell you anything. They let you figure things out for yourself.
Even more interesting is the authors’ choice to talk about the Scheme programming language. As I said earlier, I’ve written a lot of code, but never any Scheme. Scheme is a dialect of the Lisp language. Here’s what Eric S. Raymond has to say about learning Lisp:
Lisp is worth learning for 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.
After reading The Little Schemer, I believe that quote. No matter what language you program in, this book is worth reading. Even if you have no experience with Lisp, by the time you finish studying this book you’ll be able to write your own Scheme interpreter.
Several other programmers have taken ideas from The Little Schemer and applied them into other languages. One of my favorites is The Little JavaScripter by Douglas Crockford. Douglas Crockford is a genius JavaScript programmer. He took all of the code from the book and translated it into JavaScript, including the Scheme interpreter.
Another interesting book to check out if you enjoy this style of learning is A Little Ruby by Brian Marick. This is just a draft of the first three chapters of the book, but I sincerely hope he finishes it someday.
Enjoy these links, I’ve got to get back to reading.
I agree, it is one of the most well-written books ever about programming, and it’s the first book to read for functional programming. (though all those pictures of food always made me hungry =))
I think it starts out kinda slow, but if you understand the last chapters (y-combinator and interpreting scheme) then you see why lisp is so powerful.
Another great functional programming book specifically for python is Text Processing in Python..
You can’t tell by the book title but the author’s programming style is very different if you have not done functional programming before.
Anyway, haven’t read the book in close to a year, maybe should pick it back up again, esp. since most of my work these days is in java/c-type languages.
Maybe time to start doing this stuff in java =)
http://www.c2.com/cgi/wiki?BlocksInJavaIntro
I just started reading it and I want to try the code out, but I have not been able to find an implementation of Scheme that matches the syntax used in the book. Have you had any luck with that?