在这里我们要说明一下动态模型的完备性问题,这个问题很重要,因为动态模型方法解决的是系统运行时动态改变的问题,如果动态模型这种方法是不完备的,那么必然存在停机重启的问题,即有些功能在理论上是无法用模型实现的,这样作为一种动态方法就是有缺陷的了。
如上图可以看到我们实现了Java的各种语句的对应模型,这说明所有的编程语言的对应语法都可以模型化,从而说明了它具有编程语言的功能。
即任何一个模型是否都可以用已有的模型构造出来,实际上也是要证明任何新的功能是否能够用已有的功能构造出来,如果不行同样也说明了系统不具备足够的动态性。
在这里我们要证明系统最初只存在有限个模型的情况下,就可以通过这些模型直接或者间接的构造出其它任何模型来。这段话也可以表示为假设所有的模型的集合是A,那么是否存在有限个元素的A的子集B,使得通过B可以通过一个方法构造出任意一个属于A的模型。
现在我们要证明其实系统只要存在一个模型就可以直接或者间接的构造出其它任意模型了,这个模型我们称为元模型。
在这里我们提出一个构建模型的方法,模型可以简单的理解为ML,所以我们使用XML的结构来编辑XML的方法。
现在我们要证明任意模型的结构的结构是唯一的,这样系统最初只要存在这个结构的结构,那么就可以通过它直接或者间接的构造出其它模型来了。
一个模型是有属性和子节点构成的,所以我们先定义属性和子节点的结构。在这里我们使用XML来表示。
属性的结构,在XML中属性一般用<attributeName>="<value>"的格式表示属性,比如name="Tom" age="10"等,在动态模型编程中我们定义它的结构为:<attribute name="<attributeNmae>"/>,即只描述属性的名称。
节点的结构,在XML中节点的格式一般是<<nodeName> ...../>的格式,比如<Person ...../>,在动态模型编程中我们定义它的结构为:<thing name="<ndoeName>"/>,即只描述节点的名称。
由于属性是嵌套在节点中的,而子节点也是嵌套到父节点中的,所以可以使用嵌套的方式定义完整的模型的结构。比如:
<Person name="Tom" age="40“> <Child name="Smith" age="10"/> </Person>
它的结构是:
<thing name="Person"> <attribute name="name"/> <attribute name="age"/> <thing name="Child"> <attribute name="name"/> <attribute name="age"/> </thing> </thing>
如果计算任意一个模型的结构的结构,等价于计算任意一个XML的结构的结构,那么就会发现结果是:
<thing name=”thing”> <attribute name=”name”/> <thing name=”attribute”> <attribute name=”name”/> </thing> <ting name=”thing”> <attribute name="name"/> <thing name="attribute"> <attribute name="name"/> </thing> <thing name="thing"> ... </thing> </thing> </thing>
这是一个每层节点都一样的且有无限层节点的一个XML,我们把它称为元模型,由于模型也称为事物,所以它也称为元事物。
动态模型的完备性说明实现了一个计算机系统理论上可以在运行时构建出它可以实现的任何功能,这样的系统可以体现出成的特征和进化的特征。
元事物(元模型)的性质具有一些巧合,请大家自行理解这些巧合。
Copyright © 2007-2014 XWorker.org 版权所有