It's taken over a year thanks to shifting priorities, but I finally finished The Seasoned Schemer tonight, sequel to The Little Schemer. It's amazingly humbling to have gotten so much out of two books at the end of which read, "You have reached the end of your introduction to computation." Well what was it I learned in the 4 years of my degree then? How to jump through hoops, maybe. Although a more positive way of seeing it is a prof's quote my friend is quite fond of that says one goes to university to learn how to learn.
In any case, I'm finally in a position to say what's so great about Scheme and by extension, Lisp in general. It's the only language I know of that can be understood starting with nothing but a tiny set of primitives. Like with axioms in a mathematical system, you can use these primitives to generate virtually everything else you know in the world of programming, whether it be a paradigm like object orientation or an interpreter for Scheme itself. What's empowering is not only that it's like a first principles approach to programming, but that it's also a limitless medium through which to confront the world you face in programming. The resounding lesson I get from Scheme is that you don't just solve problems, you invent your way towards the solution in whatever way you see fit to tame the problem at hand.
You might argue that the benefit is merely psychological. After all, Turing complete languages all have the same capabilities. But the difference in expressiveness and the high vantage point it gives you makes using it like cutting something with a sharp blade instead of a dull one; it's just that much easier to do a good job with the former.
Add to this the collective experience of decades of programmers and you arrive at something like Common Lisp. But I'll leave all the Common Lisp raving for another day when I know it better....
For now, I'm moving on to reading SICP. It just so happens there's a virtual study group being organized around the book right now, so it's great timing. I encourage whoever's out there to join....
// posted at 00:48. permalink comments