« Why Bloggers Blog | Main | Thin is In »

Ways of Thinking, Ways of Doing

In a recent column, Jon Udell says “much of what seems to be modern innovation is, in fact, rediscovery of … Lisp and Smalltalk.” He goes on later to say:

If existing tools can do more than we realize, we could spare ourselves a bit of grief. But probably not a lot. Translating ways of thinking into ways of doing always takes longer than we predict.
From The spiral staircase of SOA | InfoWorld | Column | 2005-09-28 | By Jon Udell
Referenced Wed Oct 12 2005 09:55:00 GMT-0600 (MDT)

This is an interesting point and one that’s under-appreciated, particularly by academics. For example, I’ve frequently maintained that anyone with a CS degree can understand XML and cut through the hype in a few sentences:

  • XML is a way of describing context free grammars.
  • An XML schema is a BNF for a particular grammar (it can contain more, but this is a good start).
  • XML parsers are interpreted versions of LEX and YACC.
  • A DOM is a standardized parse tree.
  • XSL is an interpreted pretty—printer.

This pretty much says it all except for Jon’s point. Because there’s nothing new in the principles behind XML, good programmers have been using the principles of XML for years, but by creating the “way of doing” we call XML and encapsulating those principles in standards and tools, Tim Bray and others gave those techniques to the masses.

Posted by windley on October 12, 2005 9:49 AM

See related posts:

3 Comments

There's nothing new behind the principles of XML, but the argument I think is kind of false. I can argue that there is nothing added in C++ that I couldn't have done in C. Yet, C++ is better for those techniques because it is standard and (now) widely used. I hear the comment about LISP and Smalltalk all the time, mostly used by old time programmers who want to dismiss the contributions of later languages as simply re-implementations of older work. In a sense it's true if everything is deconstructed properly. Just as if you deconstruct things properly it all comes down to 1s and 0s and ANDs and ORs and NOTs and hence we haven't really contributed anything since ancient times.

One important principle left off your list above is that all things XML are converging on XML. XSL isn't just an interpreted pretty printer. The language directing the interpreter is expressed in the same easily accessible notation as the items being transformed, XML. An XML Schema describing an XML document is itself in XML. The base is constant. No requirement to learn new notations for BNF or scripts for pretty printing. It also provides a common base for tools to be built on, unlike the previous collection of principles about which many of us are familiar.

Comment from Phil Windley at October 12, 2005 3:29 PM

But that's exactly my point. There's a difference between ways of thinking (you can do OOP in assembly language) and ways of doing (there's a structure to support it).

Ah I see what you were getting at. I was focussing on the latter paragraph as an independent point rather than a supporting point to the first.