I have digged into MPS for a couple of days now and I am excited and stunned at the same time. It is amazing how the whole system bootstraps itself with its core concepts. The language design and editor construction is just amazing. However, I have some critique concerning the generator template language.
The anonymous macros hide their logic and do not help the reader with some descriptive name like functions in programming languages would. The template reads "dollar this, dollar that..." and the background semantics of the macros is hidden and can only be retrieved with the inspector. The template DSL is not descriptive and it is impossible to understand the template without the inspector.
I find it extremely difficult if not impossible to create a mental model of a given generator, which I have not designed myself. It is too hard to keep all the semantics of the many anonymous macros in my head. The logic of a generator is scattered across the mapping spec, the external templates, and the hidden macros.
Also, i find the numerous [null] arguments to be an indicator that this concept is somewhat skewed.
Was there a specific reason why an anonymous macro concept has been chosen in favour of an ordinary functional decomposition scheme like in Open Architecture Ware, for instance?
If I missed some detail, please let me know.