If you haven’t read Martin Fowler’s article on domain-specific languages (DSLs) and
language workbenches, then a fog of ignorance hovers over you like the miasma ever poised above Pigpen’s head. Mad props to The Martin (and
get well soon):
For a long time there's been a style of software development that seeks to describe software systems using a collection of domain specific languages. You see this in the Unix tradition of 'little languages' which generate code via lex and yacc; you see it in the Lisp community with languages developed inside Lisp, often with the help of Lisp's macros. Such approaches are much liked by their advocates, but this style of thinking hasn't caught on as much as many of these people would like.
In the last few years there's been an attempt to support this style of development through a new class of software tool. The earliest and best known of these is Intentional Programming - originally developed by Charles Simonyi while at Microsoft. However there are other people doing similar things too, generating enough momentum to create some interest in this approach.
Exciting possibilities abound for the forward-thinking developer, as you’ll see when you read Fowler’s article, but almost all of the tools you’ll want to explore are, as of yet, still in development. Without tools, the whole thing looks way too expensive to be realistic. So what’s an architect to do?