In my work as a software architect, I'm becoming more and more interested in the use of scripting languages to extend software applications. Although this is somewhat a rather common practice, I think the true potential of this approach is still untapped. In particular, I'm interested in the use of Lisp and Scheme as extension languages, mainly because they are nowadays the only ones that can be effectively used to develop domain specific languages - and I mean user-specific DSL, not only application-based DSL. So, in general, I see a three-level approach:
- the core application, written using the host language, implements the application's basic domain, and exposes it to the application scripting language using a suitable data-model;
- scripting language is then used to extend the application's behaviour; and finally,
- an user defined DSL built onto the scripting language may be used to, in fact, potentially retarget the whole application to another domain.