Raise your level of abstraction
When the level of abstruction was rised from punched tape to assembly, 3GL or 4GL, even visual IDE, we always call the jobs “coding” or “programming,” the articles “source code” and “object code,” and can automatically transform the high level works into the lower.
However, sometime we started to use the “modeling” and “models” rather then “coding/programming” and “(scource) code.” We still believe that we can automatically carry out the transforming from the high level(the models) into the lower(it's still called as code).
Why must we change the words, even said “using modeling languages as programming languages?”
What is the essential difference between MODELING and PROGRAMMING, models and code, modeling languages and programming languages?
I know this is an old topic.. but its an important one. To me the difference between modeling and programming is the difference between saying "what" and saying "how". This is not an absolute binary distinction, but is rather a spectrum. However, I do believe that a modeling language must be more about "what" than about "how". In this sense models are declarative (in the sense of being "statements of what is needed", not in the sense of being opposite of imperative). We may also say that models are specifications. The fact that some models can be directly executed does not mean that they are code.
One of my favorite examples is BNF. This is clearly a specification language. It is clearly about "what" not "how". But it is also directly executable. Ablog about it.
This is a great reply William! I ended up reading the whole discussion, and there were great answers in this thread, but you answer made it clear for me. I am wondering if you or anyone could refer me to some article where I can read about the difference between model to model transformation and compiling a high-level language to a low-level language.
Hi! William, just saw your comment. Yes, it seems the "what and how" is a representative answer for this question although I would not see it the unique or final answer. In fact, what the first opinion I would like to raise here (as a context for MDE and some more with models and modeling for software, computing) is we should first distinguish them two, i.e., programming/coding and modeling or programs/code and models. This is a starting point to go to some in-depth, interesting issues, for example, your project on the interpretation for the models to desired behaviors of a system, and more. But I'm very cautious about the uses of execution (executable) in the context.