If you’re “young”, you may think the history of (general) modeling languages starts and ends with the Unified Modeling Language (UML) but there is nothing further from the truth.
UML itself is the merge of several object-oriented modeling languages (more due to economical pressures than purely technical ones but this is another story) and there are quite a few other languages that existed and continue to exist independently from UML. One of the best examples is the ER or EER (enhanced entity-relationship) language, still widely used to model database schemas (see also “The only thing I miss from the ER language“).
What I was not aware of was the existance of any summary that puts together all these languages and the dependencies / relationshps among them. Until now. In his recent keynote talk at Code Generation 2014: The business cases of modeling and generators, Juha-Pekka Tolvanen (the CEO of MetaCase) included one slide that did exactly this. Take a look at the history of modeling languages in one picture (click on it for a larger version)!
Feel free to let us know about any missing languages / dependencies or any other corrections you want to point out. I obviously recommend to take a look at the whole talk (abstract and slides below, the video will be also available at some point at InfoQ, I think).
Abstract of the talk
There is no business case for modelling and generators – only for a specific language and generator in a specific situation. The right language in the right situation can improve productivity by an order of magnitude; the wrong language will reduce it. So what makes a language “right”?
In this talk we look what kinds of modelling languages and generators tend to be more beneficial than others –from the early days of modelling right up to the latest research. Getting more out of the models than their original creation required, raising the level of abstraction and addressing a specific need seem to be common characteristics of successful modelling and code generation approaches.
To evaluate the full business case we also need to look at the costs and benefits of creating languages, generators and tools. By applying the above principles to language creation itself, we can improve the quality of the resulting modelling language, whilst lowering the time and effort needed to create and maintain it. Other features important to the language developer include enabling tools to support language evolution, and improving tool scalability to tackle larger systems and teams.