Different ways of interacting with a DSL

There's a nice post from Steven Kelly which contrasts different ways of interacting with a DSL in a tool.

I say 'interacting with a DSL', to stress the difference between that and working with a static syntax on a piece of paper. Working through a tool provides you with many more options not only in how you view and browse expressions in your language, but how you create and update those expressions.

However, I'd like to pick Steven up on a couple of points:

  • He says that graphical languages are much slower for data entry than text. Whilst this has been true in the past, I'm wondering if it will remain so. I think that some of the mindmapping tools out there are showing that you can achieve rapid data entry through a graphical surface by minimizing mouse movement and using keyboard shortcuts much more.
  • We've also found that there is often rich data in a DSL that is not amenable to graphical representation (or at best adds considerable clutter to the diagram, thereby reducing it's value) and also isn't that well served by an explorer (tree view) and/or properties window. In these case, you really want to design domain specific forms for dealing with that data. So it's nice to see Jezz kick off a project along those lines: check out https://www.codeplex.com/dsltreegrideditor.