基本原理
1.理念
1.1.世界在个体存在之前已存在
动态模型编程的理念是基于认知的,即把一个动态模型的系统比喻成个体,那么它的主要任务是如何认知已有的世界,如何把未知的知识转化为个体可以理解的知识。
1.2.动态模型是一种解释数据的方法
一个软件系统,它所能处理的就是数据,比如数据是通过各种传感器采集的数据,或有程序生成的各种数据。动态模型假设一个软件系统的“世界”就是有这些数据构成的,而动态模型就是找到一种方法(或算法),使得系统可以理解和处理这些数据。
这个方法是一个解释数据的方法,它包含两个部分,一个是语义的表达,二是执行方法。
2.语义的表达
2.1.语义
语义是指数据所代表的含义。
2.2.基本想法
动态模型编程假设数据是已经存在的,然后通过什么算法可以用来解释数据其中的含义。
2.3.解释语义的方法
动态模型是一个面向对象的方法,在动态模型里数据是结构化的树形结构的数据,并把数据的每一个节点都当作是一个对象,所以解释语义的方法就是要解释这个对象时什么,有哪些属性和行为等。
2.3.1.解释是什么的方法
- 事物:数据称为事物,事物表示待认知它的状态。模型是树形结构的数据,一个数据节点可以包含0或多个节点,在动态模型里每个节点也被当作独立的事物。
- 名字:把事物的name属性的值当作它的名字。
- 描述:一个事物可以用自己或其它事物来描述它。比如一个名字为A的事物,可以用它自己或用名字为B的事物来描述它。
- 事物名:当用一个事物来描述一个事物时,比如使用事物B来描述事物A,那么B就是事物A的事物名,此时可以称A是一个B。
因此解释是什么的方法依靠事物的名字和它们之间的描述关系。比如问一个东西是什么,那么可以用它的名字或它的类来回答,如问他是谁,可以回答他是张三,或他是一个人。
2.3.2属性的表示方法
动态模型使用像XML这样的树形结构的数据来表示模型,这种结构自带属性,所以无需额外的方法来表示属性。
2.3.3.行为的表示方法
- 动作:首先设定任何一个事物(模型数据)都可以转化为动作,而动作是可以执行的。(在这里什么也不做或执行错误也被看作是执行。)
- 行为:因为动作的假设里任何事物模型都可以执行,所以可以约定一个事物的某些子节点是它的行为。(X-Meta引擎约定第一个事物名为actions的子节点下的子节点。)
- 行为的继承:一个事物继承它所继承的其它事物的行为,也继承它的描述者(类)的行为。
- 行为的顺序:事物、所继承的事物和描述者(类)都有可能定义了同名的行为,事物执行一个行为的优先顺序是事物所定义的->描述者(类)所定义的->被继承事物所定义的。
在这里,首先假定任何事物模型都是可执行的,这是表示行为的关键假设。
3.执行方法
执行方法是如何解释执行动作模型的方法。
- 动作也是事物模型,它也可以有自己的行为。
- 执行一个动作是要执行它的名为run的行为。
- 一个事物的run行为也是动作,要执行它回到1的步骤。
- 以上形成递归,如要让递归能够终止,那么一些动作是由引擎直接解释执行,而不用通过执行它的run方法。
X-Meta引擎是使用Java编写的,在X-Meta引擎里就规定了事物名为JavaAction的动作模型是由引擎直接解释执行的。