I ran across two computer programming books with their full text available online: Teach Yourself Scheme in Fixnum Days and Structure and Interpretation of Computer Programs. I’ve only skimmed through each of them very briefly, but I personally am going to start on the teach yourself Scheme book. While I am a pretty hard core geek, I do know that I’m pretty far behind the curve in terms of the Scheme style of programming. Unfortunately there are a lot of programmers who never realize when they’re in similar situations. Learning new techniques shouldn’t stop when you get your degree or certification. So if you’re a professional programmer I urge you to at least take a look over this stuff, especially if you’re not familiar with functional programming. I know most will look over at the books and say something like “this is dumb, my language can do all of this stuff much more easily.” Resist that urge. For those of us who come from an imperitive or object oriented background (C, C++, Pascal, Java, etc) there is a bunch to be learned from the style. What got me to go back and look at the stuff was an article by Paul Graham about using Lisp for web programming. In the article he quotes Eric Raymond:

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.

I’ve found that statement to be eerily accurate.