Sunday, October 08, 2006

Patterns and Grimoires

Mark-Jason Dominus has a post here about Design Patterns, which discusses whether the existence of a design pattern in a particular language is an example of a weakness or a missing feature in that language, and also discusses whether there is a meaningful distinction between features implemented in the language, versus in the library.

One of my favourite concepts in my own private study of meaning is that of the True Grimoire. To me a True Grimoire is a particular kind of book of magic - one which has the property of being written in the language which things are, rather than any language in which they are merely represented.

A True Grimoire is thus able to be understood by anyone who reads it, no matter what languages the reader understands - because the concepts represented are the concepts themselves, not any model of them.

This is useful for thinking about patterns, because it brings to the centre the idea that programming languages are just models of a set of concepts which are more complex en masse than their basic form suggests. MJD says that the existence of patterns in a particular language is a sign of weakness in that language. The implication is that if the pattern needs to be repeatedly re-implemented in the domain of applicablity of the language, then perhaps a version of the language which included the pattern's solutions as part of the shipping bundle would be better.

I think of it as this - when we can write a computer language (Enochian?) which resembles the alphabet of the True Grimoire, then patterns will truly have become irrelevant. Until then, we're stuck in a world where we address them as we find them and in doing so shift the burden of the heavy lifting from one stress point to another.