This thread that was already answered sort of hits on my question, but since part of this is a contest anyway, thought I'd start my own. ;)
I was lucky enough to attend Guillaume Laforge's talk on DSLs at SpringOne in Oct 2009. He talked about developing a DSL intended for scientists and doctors studying malaria medicines and how they interact (or something along those lines). It was really interesting and really gave me a good feel for what a DSL really is.
However, the one thing I struggle with understanding in regards to DSLs is how to put them in the hands of users. I get the idea of writing a DSL so that a developer can make streamlined or more efficient calls in Scala or Groovy or whatever. But IMO, the real power of a DSL is the ability to define something that a non-programmer can use.
Say I have a stock trader as my customer and I want to write a DSL for him. I'd want something like:
But if I were to do that, how would the user interact with it? Would he need to compile it? Or just run it as a script/executable? Hand it off to a development team to execute? Do we need a GUI around it? You don't have to answer each question, but this is where I struggle with the idea of DSLs - how do you make it accessible to non-developers?
Is that something that is covered in the book?