Almost every time I hear Rails people banging on about Little Languages, I find myself wondering what the fuss is all about - these things are not exactly new after all.
Then, while I was rereading The Structure and Interpretation of Computer Programs for the nth time and realising how much I missed the first n-1 times through, I came across this:
It is not exaggeration to regard this as the most fundamental idea in programming:That's from the second edition, published in 1996, but I don't doubt that the 1990 edition said something very similar. After all, it goes back to Turing.
The evaluator, which determines the meaning of expressions in a programming language is just another program.
To appreciate this point is to change our images of ourselves as programmers. We come to see ourselves as designers of languages, rather than only users of languages designed by others.
In fact, we can regard almost any program as the evaluator for some language. … Seen from this perspective, the technology for coping with large-scale computer systems merges with the technology for building new computer languages, and computer science itself becomes no more (and no less) than the discipline of constructing appropriate descriptive languages.
The moment that it clicked in me that all programming is language design was one of those profound moments when the world seems to remake itself before your eyes - it comes back the same, but with a whole new set of perspectives on it. Understanding’s like that - the good stuff can (should?) remake your world.
 Or, if you insist, Domain Specific Languages - a puffed up piece of nomenclature if ever there was one.