Enterprise Engineering Forum

企业工程论坛
Categorized as: 模型与建模   Tagged as: ,, , , , , ,

建模和编程的本质区别是什么

Author: 余彤鹰,  Source: 企业工程论坛,  Published: 2011-03-29

Excerpt: 介绍最近在模型驱动工程(MDE)社区就建模(模型)与编程(程序/代码)本质区别的一点讨论。作为一个基本的出发点,我认为“模型不是代码”。抽象层次方面的理解是必要和重要的,但停留在抽象层次的区别(即使涉及到与所谓“业务/问题域”的联系),仍然不能满足。我们至少可以从立场或视角、业务或问题领域与计算平台的关系、解释的语境(上下文)、对象或目标、规定的方式等方面进一步地研究这个课题,而其最本质的区别,应当建立在某种基础理论尤其逻辑与数学的基础上。在有关讨论中,涉及了几个非常有启发性的话题。其一是有关抽象层次与乔姆斯基形式文法层级体系的关系,另一个是数理逻辑分支“有限模型论”的引入与运用。综合而言,模型(建模)与程序/代码(编程)之间本质区别的认识,在某种意义上是超出“抽象层次”或“文法表达能力层次”所在范畴的。

(modeling)和编程(programming;或编码,coding)的区别似乎是明显的,但并不容易说清楚。这个问题稍微展开一点,可能涉及这样几个密切关联的对比性问题:建模与编程、建模语言与编程语言、模型与程序()。一般地看,在软件技术主流社群流行的观点,似乎主要会将二者的区别归结于“抽象层次”的不同。也有过一些对建模的“图形”或“可视化”表达的强调,但这种观点在最近,似乎不是那么受待见;有些人或更喜欢讨论“文本化”建模的话题,例如textual UML/DSL等,这个方向同时也显得与“自动转换”和“可执行模型”关注焦点等更亲和。对此,虽然我也认为,流行的一些强调建模图形化方面的观点的确往往流于表面,但实际上,文本与图画之于建模与模型这一课题,却可能是比本文标题更加意味深长的话题——我们姑且存而不论。相对于“图形”与“文本/形式化”的区别,还存在另一种倾向,就是忽略建模与编程的区别。例如,OMG的MDA提出时曾经有这样一个重要的口号,就是要“把建模语言当作编程语言使用”——若仅止于此,或许可以说这只是一种比喻。但当有人提出“代码就是模型”(code is model),或“一切皆为模型”(everything is a model)时,大概就不会怀疑这种将模型泛化倾向的存在了。

对本文标题,我最基本的一个观点或出发点(稍有针对性地),就是“模型不是代码”(Model is not code)。就本文话题,最近在一个较活跃的模型驱动工程社区中有过一点讨论[1]。一种最基本的观点,实际上也代表着对编程与建模最自然的理解,强调编程是对系统的严格——形式化表达。而建模,就像我们在讨论一个软件任何做时常常在白板上画出一些草图——是伴随着我们思维过程的,通常不太严谨和非形式化的表达(但现在,许多人则认为或者正在努力将其形式化)。

另一些人,强调了“”,引出“抽象层级”的基本观点。这种观点似乎很自然地将“建模/”摆在一种高抽象层级上,并且处于从低(比如机器码的层级)到高“升层次”的一个终点(尽管大家一般不这样明说),衔接着“业务领域”或“问题领域”。例如,Andreas这样叙述(原文是英文):

抽象层次之间有很大不同。所以,我会将对“建模与编程”问题归结为当前的编程水平(xGL)和面向业务领域建模各处于何种抽象层次?这个问题指向一种信息架构的方向。这个介于xGL和MDx之间的最终的抽象有这样一些特点:
  • 其解释语境不是指示机器如何执行而得到结果,是说明的(declarative)而不是程序的。
  • 对给定的PSM,其解释语境可能基于平台的特定构造(比如UI, DB, 通信技术等)。
  • 对PIM,其解释语境则不应涉及上述构造,而应该只涉及与相应业务领域有关的事物及其相互作用的逻辑。
我感觉,这段叙述比较中肯地反映了业界较为流行的基本观念。这种认识是重要乃至必要的,但我却不能满意停留于类似的层面(即使已经能涉及到与所谓“业务/问题域”的联系)。当深入追究时,将发现许多令人困惑的地方,涉及到对模型与程序(编码)实质性区别的理解。要想进一步厘清二者的区别与联系,或许要在很多方面分别进行更深入的讨论,比如
  • 立场或视角;
  • 业务或问题领域与计算平台的关系;
  • 解释的语境(上下文);
  • 对象或目标;
  • 规定的方式;等等。

而其最本质的区别,应当建立在某种基础理论尤其逻辑与数学的基础上。可喜的是,在上述讨论中,真的就涉及了这个方面。首先,对于我一直思考的,表达的层级与逻辑体系的层级(比如:一阶逻辑、二阶逻辑)的关系问题,得到了非常明确的印证和进一步的启示,来自瑞士的Modelpractice提示了有限模型论(Finite Model Theory)的导入关键[2],以及语言的表达能力等级、其与乔姆斯基形式文法层级体系(或称谱系)的关系。按照他的提示,我粗略地勾画了这样一个层级模式:

  • 机器语言:对应乔姆斯基0或1级
  • 高级编程语言:对应乔姆斯基2级
  • 建模语言:对应乔姆斯基3级

建模语言的例子如UML。但它已经是一个复杂的综合体,所以Modelpractice指出应更具体地考察其中的部分。上述讨论相当粗糙,但或许具有很好的启发意义和进一步研究的空间。然而,回到本文的主题上来,综合而言,我认为模型(建模)与程序/代码()之间本质区别的认识,在某种意义上是超出“抽象层次”或“文法表达能力层次”所在范畴的。今后将逐步讨论到相关的话题。

 

[1] 很遗憾,这个链接可能需“翻樯”访问。
[2] 部分讨论见此链接。在“Open World and Finite Models ”一文中,对这次初步的讨论做了一个简单小结。进一步阅读可以看到,有限模型论在数理逻辑分支模型论背景上真正明确界定及重视,大约自1990年代。正如我直觉中想象的一样,它对计算机科学尤其重要乃至在数据库理论方面已经提出了直接应用。可参看此维基百科条目

Copyright

  本发布物版权归原作者所有,经原作者许可在企业工程论坛(EE-Forum.org)公开发布,并允许个人及公益性机构非牟利性使用及传播。传播中需保持从标题、署名到各项内容及此声明包括链接地址等完整内容不变。引用或摘编文中内容或观点应符合公认准则。其它机构,或牟利性使用,请预先取得作者许可。保留一切未说明的权利。
  详细说明见: http://www.ee-forum.org/about/copyright ,管理者电子邮箱:admin(at)ee-forum(.)org

Cite Style

GB7714 style: 余彤鹰. 建模和编程的本质区别是什么[EB/OL]. 企业工程论坛, http://www.ee-forum.org/wp/pub/ty/2011-03-p2665.html, 2011-03-29[2017-03-28 08:00]

Chicago style: 余彤鹰, "建模和编程的本质区别是什么", 企业工程论坛, http://www.ee-forum.org/wp/pub/ty/2011-03-p2665.html(accessed 2017-03-28 08:00)

Posted by   2011-03-29(Original)   Hits 9246   Modified 2011-03-30(Locked)
Prev Post: 
Next Post: 

Related Entries:

复杂系统的层级原理与模型驱动软件体系结构
企业建模与模型的一些讨论观点(一)
漫谈计算机领域的本体论(ontology)
模型驱动工程的语言与系统国际会议MODELS 2011论文征集
思于模型

6 Comments

  1. 这么好的一个题目和思考,让我惊心动魄!

  2. 建模是声明描述性的,是做什么。
    编码是操作性语言,讲如何做。编码与技术平台相关。
    从一元谓词和高阶谓词的角度来区分建模和编码,这很有启发性,这与元语言之间的关系值得进一步考虑,与语义框架升层次的关系值得进一步考虑,导致N型文法的表达能力,也是一个富有启发的思路。
    很有兴趣余兄后面的思想:
    综合而言,我认为模型(建模)与程序/代码(编程)之间本质区别的认识,在某种意义上是超出“抽象层次”或“文法表达能力层次”所在范畴的。

    • 余山兄很明了拙文的意图。声明性或描述性与执行性的区别(也简单归为“是什么”what与“如何做”how)是重要的,大致已可以归入此话题的经典认识
      (即使如此,本领域一些大牛仍孜孜不倦地探索“可执行模型”课题^_^)

      当然,上述经典认识,我的确还不能满意。
      (其实,我在这里发的某几篇文章,已经涉及了关键,只是用了稍微“隐讳”的方式……)

  3. 这个问题从表达理论来回答似乎就是“为什么我们要建立一个独立层次的术语体系”,为什么不用中世纪经院哲学家奥康姆提出的“奥康姆剃刀”把它剔除,还原为它的底层语言。请参见我的博客文章:中间变量:表达理论中一个关键问题http://yushan58.bokee.com/7001414.html

    • 看了你的那篇博客。那边的留言无法提交。你博客中所述:
      “为什么要形成企业模型这样一个独立的表达层面,而不是用计算机编码语言直接来进行表达呢?
      这是一个非常重要的表达论问题,一个好问题!”

      ——这是关键,正在点子上:-)

      除了欧阳兄展示的基本思路,这个问题还有多方面的回答,其意义之一在于,这些来自多方面的回答集中在同一关键问题上,就可以引出“应用方案”的思想基础。结果,就是把玄而又玄的表达或数理逻辑、语言学理论,与应用直接联系到了一起。

Leave a Response

You must be logged in to post a comment.