The 2011 edition of the annual Code Generation Conference in Cambridge, UK, had taken its own motto “raise your level of abstraction” to heart, stepping back from the focus on code generation to a broader picture.
Concretely, several sessions discussed what further interesting and valuable things could be done with models that are otherwise often seen as just the input models to a code generation process. Visualization and domain level verification are examples of such operations as there is value in catching errors earlier and giving error messages in a language that users of the input model can understand. Another observation from the conference is that while input models are still edited in the form of diagrams (UML and other notations), text based Domain Specific Languages (DSL) seem to be gaining momentum as an alternative.
Code generation is of course still an important topic at the CodeGen conference, but the abstraction level is definitely being raised. It therefore felt natural that this years’ conference had been extended from three days of speaker led sessions to include a fourth day dedicated to a side-by-side comparison of language workbenches, called the Language Workbench Competition.
Each participant showed how their workbench implemented a predefined set of requirements for a small example language dealing with entities and entity instances. In keeping with the general theme, code generation played only a part and more time was spent discussing how the input code for the new language could be edited, validated and meaningfully combined with other languages.
Each participant would also get a chance in the final, “freestyle” part of their demos to show some particular features about their tools that made them unique. For Intentional Software, I showed an example where an expression language (built for the general part of the assignment) could be evaluated and tested with the results presented to the user as an integrated part of the code editor.
I also showed examples of the Intentional Domain Workbench supporting multiple projections, where the code for the new language could be edited in a notation that mixes text, graphics and tables together, giving the user an experience more like editing a Word document than a text based DSL in Visual Studio or Eclipse. You can see detailed descriptions of all the entries here (direct link to entry by Intentional Software here).
While the organizers concluded that it was not really a competition as no winners would be announced, it was a fun and inspiring day where I feel I won a lot by going. Thanks to the organizers of both the Language Workbench Competition and the Code Generation Conference for a great week!