Friday, March 13, 2009

Rebuilding the world. Again.

I'm a little intimidated by the power of Clojure. It changes the dynamics of designing software. Traditionally it was important to get the overall design right because once coding started, changing the design suddenly became quite expensive. Changing the number of fields on a form has rippling changes right through the code base.

Not so in the world of properly factored Clojure development, because all the source code dependent on the shape of the forms is generated using macros. This changes design time from before coding to afterwards. This makes the design iterative, and done upon the working code.

I can see why lisp wizards were both prized and feared. They can build systems that cannot be built other ways, but at the same time it takes Gladwell's 10,000 hours to be ready for Lisp. As a lisp developer you need to understand the impacts of design changes right through the system, from the user interface to disk layouts, because the macros you write cover the whole solution space.

So I finally have an answer to why Lisp was never popular. It's not popular because it is genuinely hard to develop in. The repl is intimidating the same way a drag car is. Sure, it is a beast of enormous power, but it also has no time for formalities. If you don't know what you are doing, this beast will show you up, and probably hurt you in the process.

On the upside, I am now seriously looking at commercial software that costs thousands of dollars per year, per seat, and feeling that I can build it in a reasonably short time frame, once I have written a bunch of macros. Mmmm. Nothing like a challenge to get me going =)