I’ve been really enjoying the work resulting from switching my programming language focus for the past year+ over to Ruby and/on Rails. Ruby has really widened the range of possibilities in terms of what kinds of systems I can build and concepts I can employ in doing so.
However, having done a lot of metaprogramming on the edges of what is possible in pure Ruby, I’m finding myself craving more. While there are ways to add more to Ruby with C libraries like ParseTree and RubyInline, the time has come for me to start planning learning my next language.
As part of my self-education, for the past two years I’ve watched and re-watched countless times, the free online MIT Video lectures from 1986 entitled Structure and Interpretation of Computer Programs. These videos are an amazing treasure-trove of insight for anyone in the field of software engineering and computer science. They cover so many different styles of architecture and techniques for program and language design, yet the course is taught all in a single language: LISP
Why would LISP still be relevant? Probably the most important reason is that as languages go, LISP doesn’t set any specific limitations on what LISP can do. You can use LISP to write in pure functional style, or use objects with multiple-inheritance, multi-methods, modules, logic-programming… In terms of pure functionality, LISP makes the possibilities feel truly limitless.
From the outside looking it at least… So why doesn’t everyone just use LISP? My guess is that it’s partly because it looks very arcane. Most of its built-in functions and reserved words are just scarily obscure, and programs appear to have endless nested series of parentheses which tend to make even basic constructs appear intimidating:

But the thing is, once you get past the surface, there is a lot of inherent power in this basic structure. Since everything in LISP is a symbolic expression that can be interpeted by LISP code, LISP code can read itself and write itself without needing to do the naive and opaque string evaluations of other scripting languages, and can even interpret the same code differently, as desired, in different contexts. I think LISP is still the sleeping giant of the software world. And if it isn’t sleeping its at least the stealthiest language out there (at least when you compare it to C, C++, Ruby, PHP, Java, Perl, Python, or LOLCODE!)
At the moment, the technology I use at my day job is still powered pretty much 100% by Ruby on Rails, and its likely to stay that way for a while. I will probably continue to do a lot Ruby work in my spare time as well, but I am going to try and get in at least 30 minutes of LISPery into my schedule daily until it starts to gel. I am looking forward to seeing where it takes me.