Experiences on language design: review of ~100 cases
As more and more domain-specific languages are defined we inevitable start learning-by-doing how to define good languages. Possibilities to extract good principles for language design is naturally reduced when having defined just one DSL, have just few users, or even more so if defining internal DSLs typically for own personal use only. The best would be, of course, to analyze a large portion of domain-specific languages as it allows seeing the bigger picture and therefore better extracting principles for language design. Moreover, the languages should address different domains and being developed and used by many persons.
This is exactly what my colleagues at MetaCase, Risto Pohjonen and Steven Kelly have done. In my opinion they did an excellent job by first collecting tens of cases (76 to be precise) which target different domains and generate different kind of code from domain-specific models. After the analysis they interestingly decided to focus on worst practices since in many cases it is easier to learn what to avoid. Among the worst practices identified my top three picks are using the code/library as source for language constructs, failing to consider language's real-life usage during language construction and not updating the language anymore after successful adoption.
The article is published in July/August issue of IEEE Software and it is available/can be purchased from IEEE Computer Society Digital Library (DOI: http://doi.ieeecomputersociety.org/10.1109/MS.2009.109).
