关于UML和图灵完整性的天真问题
众所周知,UML并没有图灵完成(与通常的编程语言相反)。但在我看来,UML比传统语言更灵活。我无法想象你可以用C++语言来描述一个问题,但同时也不能用UML来描述。恰恰相反,我更容易想象UML中存在的一个构造,但是在C++(java、delphi、VB等……)中不可重置。关于UML和图灵完整性的天真问题,uml,turing-complete,Uml,Turing Complete,众所周知,UML并没有图灵完成(与通常的编程语言相反)。但在我看来,UML比传统语言更灵活。我无法想象你可以用C++语言来描述一个问题,但同时也不能用UML来描述。恰恰相反,我更容易想象UML中存在的一个构造,但是在C++(java、delphi、VB等……)中不可重置。 你能帮我理解这一刻吗?我真的听不懂。这个问题很有趣。我想到了几点,尽管可能还有更多。抱歉,时间太长了 强>你能用C++描述什么,你不能用UML描述? < /P> 首先,您必须定义“UML”的含义。通常,人们倾向于指“核心”元素
你能帮我理解这一刻吗?我真的听不懂。这个问题很有趣。我想到了几点,尽管可能还有更多。抱歉,时间太长了 <>强>你能用C++描述什么,你不能用UML描述?<强> < /P> 首先,您必须定义“UML”的含义。通常,人们倾向于指“核心”元素——类图、状态图、活动图等上的元素——加上OCL(约束语言) 考虑到这些元素,您不能指定命令式算法。具体来说,任何需要分配的任务。但是,您可以非常接近:步骤和决策逻辑可以使用活动图等表示,每个步骤的功能在OCL中定义为前置和后置条件。但是,您永远无法完全指定行为。以一个原子步骤为例,其目的是增加整数的值。输入是一个整数,比如说
X
。输出由post条件X==X@pre+1
。然而,UML中没有任何东西可以实际实现该步骤
现在完全可以想象扩展UML的使用来解决上述问题。UML动作语义的开发正是为了实现动作规范。这样做可以使语言在计算上完整。这些问题仅仅是实际问题:
这是一个有趣的问题。我想到了几点,尽管可能还有更多。抱歉,时间太长了 <>强>你能用C++描述什么,你不能用UML描述?<强> < /P> 首先,您必须定义“UML”的含义。通常,人们倾向于指“核心”元素——类图、状态图、活动图等上的元素——加上OCL(约束语言) 考虑到这些元素,您不能指定命令式算法。具体来说,任何需要分配的任务。但是,您可以非常接近:步骤和决策逻辑可以使用活动图等表示,每个步骤的功能在OCL中定义为前置和后置条件。但是,您永远无法完全指定行为。以一个原子步骤为例,其目的是增加整数的值。输入是一个整数,比如说
X
。输出由post条件X==X@pre+1
。然而,UML中没有任何东西可以实际实现该步骤
现在完全可以想象扩展UML的使用来解决上述问题。UML动作语义的开发正是为了实现动作规范。这样做可以使语言在计算上完整。这些问题仅仅是实际问题:
hth.我想说,自从添加了动作语义包(这发生在UML1.5版本中)以来,UML是一种图灵完整语言 现在UML包括一种命令式操作语言(不要与OCL混淆),它允许精确定义类方法的行为。这种命令式操作语言包括典型的