Wednesday, September 24, 2008

A fascinating quote attributed to James Gosling

I have been sitting on this post by Ken Arnold for months now, trying to figure out a way to write about it. I thought of it again today and decided to carpe blogem with some quick thoughts.

Random Thoughts

  • James Duncan Davidson has always been too apologetic and too harsh on Ant. Sure, it isn't perfect and may not have been his finest hour, but it delivered us from 'make'; and for that, I'm forever grateful.
  • IMO, Gant may well be the next generation of build tools. I'm not sure that it allows the Unix pipes that Arnold mentions, but it is much closer than Ant will ever be. (My Maven friends will, no doubt, chime in here.)
The quote by Gosling

I love the (paraphrased) quote attributed to Gosling:

James Gosling once said that every configuration file becomes a programming language, so you might as well think that way.

First, I should point out that I have not authenticated this quote, but Arnold is a reputable source, and this seems consistent with Emacs. Presumably, this was well before 2003, the date of Arnold's post.

This quote shows the power of philosophy: without knowing it, Gosling anticipates the success of Rails and Grails over Struts, and to a lesser degree, the possibility of a triumph of Gant over Ant.

True, this doesn't talk about "convention over configuration" or even web frameworks per se, but it clearly suggests that solutions with static configuration suffer an asymptotic disadvantage, compared to solutions with dynamic, programmatic configuration. The dice are loaded from the start.

Every time I work with Grails or Gant, I think of this quote.


Morgan Creighton said...

I may be way off on the wrong tangent here, but... Configuration files don't only make me think of Ant build files, but also Spring XML files. Could Mr. Gosling's quote refer to that as well? (or instead)

Guice, and now the latest Spring, replace configuration files with a declarative "language" for dependency injection.

There may be other examples. Is JTA a "language" that replaces that old (ugh) EJB transactional configuration files?

The migration from configuration to language may be an indicator that a technology has matured.

Michael Easter said...

Good point, Morgan... I can see the comparison of Guice/Spring annotations over XML files as being in the same vein.

It's a bit of a stretch, vis-a-vis the quote, because that development values the type safety of the compiler over the more basic need to do conditional and iterative logic (which is my interpretation of the quote). But it is definitely similar in an abstract sense.

Aluan said...

Yeah, I love that quote. It is so eloquently realistic, practical, and depressing.