Recently, I read a piece of very interesting blog “Rich World – Poor Models” by modelpractice, and have some discussions with the author at (1)What is the essential difference between MODELING and PROGRAMMING?  and (2)The Mathematical Foundations for Models.
I (1), the author said:
From my perspective:
Programming: using a very expressive language and restrict it by coding rules.
Modelling: using a very restricted language, s.t. it is expressive enough, but also easy enough to handle (read, write, …), for creating different views on a thing.
what I mean is that independent from its domain, even if it comes in different notations, every languages has a certain level of expressiveness. think e.g. of the chomsky hierarchy.
According to the author’s clues, I imagined a rough view as follows:
- a machine language maybe close to recursively enumerable or context-sensitive language corresponding to Chomsky hierarchy Type-0 or Type-1, and
- a high-level programming language maybe more close to a contex-free language at the Type 2, thus
- a modeling language such as UML is basically close to a regular language at Type-3, it (a model by it) can be taken such as some business context then has rich semantics to describe a system include software intended.
For this, the author commented:
roughly, yes. where I think in much smaller bits than the whole UML.
by the way, regular languages have the same expressiveness as (relational) Monadic Second Order Logic. This is how Finite Model Theory comes in.
the point is that languages from propositional logic up to chomsky-0 form a hierarchy, where modeling comes from the low and programming from the high end.
(the bold is added by me)
And at (2), I said:
I think, Model Theory (mathematical) may be the most important foundation for models.
However, it seems there are some basic puzzles, such as some inconsistencies in the use for term of model?
The author replied:
Totally agree, Model Theory is it, but please let it be finite (here’s why: http://bit.ly/eg9VHb )
Finite Model Theory has provided the essential basis for database theory. Think it could also do for modeling.
Above discussions maybe touched some meaningful issues, I think the author point out certain propositions clearly, also I was looking for. Maybe it is one of the important piece of a jigsaw – about models and modeling.
I want to try to explain it a bit more. I have been having the basic viewpoint, that is, a model (or a domain) must be finite (so-called “universe of discourse” is ambiguous). This is a premise for our cognition – more specifically, this is a premise of that we gain stable, reasonable outcome from requirements analysis for a system.
In other words, to face the infinite and open world, our logical premise has to opened but any effective cognition always based upon a finite model (e.g. a theory with a model satisfied it), the closed word assumption. Perhaps someone would say it is simply obvious but, it maybe one of the primary premise to introduce mathematical basis for models and modeling we are interested.
By the way, how do we get a finite domain? It is to do modeling. Here, the meaning of “models” have being reduced insensibly. Unfortunately, to access it have to cross the wall from China, now.  There is a basic background, that is the open world assumption and closed world assumption.