From Programming To Modeling – and back again
So, what's the difference between programming and modeling? And should there even be one?
A long time ago I started programming using the usual general-purpose languages of the time: Pascal, C++, Java. In the last couple of years I turned to domain specific languages and model driven development, building my own languages and compilers specific to certain technical and application domains, usually driven by a broad range of customer from various fields. However, modeling is a world different from programming – at least regarding tools. So as I think more about this, I came to the conclusion that there should be no difference between programming and modeling. What we really need is a set of composable language modules that each express different concerns of a software system, some application domain specific, others more related to technical concerns, and hence more general and reusable. In this article I explore this idea. Of course the idea isn't really new. However, as the necessary tools are maturing, the time is right to discuss this idea again.