Programming languages UML是领域特定语言(DSL)吗?

Programming languages UML是领域特定语言(DSL)吗?,programming-languages,uml,dsl,Programming Languages,Uml,Dsl,将UML视为DSL合适吗 我知道每个人都认为UML是一种画图的方式,但是在UML图的“视图”下面有一个模型……UML中的“L”代表语言 另一个问题——SysML是DSL吗?对这两个问题的简短回答——否 把UML看作是一种工具,它可以让你描述软件架构、软件交互等等。。。用语言不可知的一般方式描述它们 DSL是专门的语法,旨在更容易描述一些特定的问题集UML是一种通用建模语言,不特定于任何领域,而DSL中的S代表特定的。UML用于建模系统,这些系统也可以用多用途编程语言表示。另一方面,DSL是特定于

将UML视为DSL合适吗

我知道每个人都认为UML是一种画图的方式,但是在UML图的“视图”下面有一个模型……UML中的“L”代表语言


另一个问题——SysML是DSL吗?

对这两个问题的简短回答——否

把UML看作是一种工具,它可以让你描述软件架构、软件交互等等。。。用语言不可知的一般方式描述它们


DSL是专门的语法,旨在更容易描述一些特定的问题集

UML是一种通用建模语言,不特定于任何领域,而DSL中的S代表特定的。UML用于建模系统,这些系统也可以用多用途编程语言表示。另一方面,DSL是特定于特定领域的受限编程/脚本语言。

我认为第一个问题的答案取决于如何在术语“通用语言”中定义“通用”。它不是DSL:

相反的是:

  • 通用编程语言,如C、Java或Python

  • 或通用建模语言,如统一建模语言(UML)


UML不是DSL,因为UML可以用于建模任何垂直领域(保险软件、嵌入式系统等)

UML是一种(横向)DSL,因为UML是一种用于建模软件系统的专用语言

因此,UML是DSL,也不是DSL,这取决于您如何看待它。您可以将同样的推理应用于许多其他语言,如html或SQL。它们是通用的,因为它们可以用来表示/操作任何类型的数据,但它们是特定的,因为它们专注于一项任务

“领域特定语言”允许人们在狭窄的应用领域中指定问题或解决方案;银行业务、电话电路设计等。。。。区分DSL的一种方法是它不能进行通用计算(尽管有些DSL可以)。Java、C#、Python和COBOL无法通过此测试。(有人会说COBOL是特定于“业务”的领域,但它唯一严重的让步是十进制数据类型,C#也有);非标准语法不是DSL的产物,但IIRC ColdFusion对生成HTML有一定的支持。Fortran未能通过此测试,但其数组(-section)子语言仅适用于数组,而不适用于通用计算。Verilog非常特定于领域:它的设计目的是让您记录数字电路

UML侧重于指定软件结构的不同方面。[您会注意到它不能进行通用计算;一个特点]。(它实际上有9个或9个以上的不同方面:类、状态图、部署……我将在本次讨论中继续讨论类方面)。类图方面可以描述数据是如何组织的,以及对该数据的操作。你可以就软件争论这个问题,这样它就不能是“特定领域的”。什么,构建软件不是一个问题域

SYSML专注于表达系统是如何连接的,因此它也适合这一类

问IMHO一个更有用的问题是,“如果我认为UML是DSL,我会得到什么?”在这里,我认为你不会得到很多。DSL的概念在你为一个你没有(设计或拥有)的系统而争论时是有用的,其要点是对一个常见问题有更好的表达能力,并且可能在争论“你不想完全在它中实现你的系统,因为它没有图灵功能”时是有用的。如果你想解释你的语言会有很多有趣的符号,这也很有用,因为它们有特殊的用途。人们已经知道UML,所以。。。什么也没学到

虽然我是DSL的忠实粉丝,但我也是GPL(通用语言)的忠实粉丝。我认为,在大型系统中,您必须同时找到“很多”这两个方面:DSL可以简洁地表达它们所能表达的内容(减少工程和维护成本),而GPL可以提供任意计算和系统部件之间的粘合。对我来说,一种语言最重要的是:

  • 它声称要解决的问题类别是什么?它做得如何
  • 语法是什么(对于问题域来说,它是否相对标准)
  • 确切的语义是什么(这是你学到最多的地方)
  • 工具支持有多好
  • DSL与大系统的其他部分的集成程度如何
  • 社区有多大,有多大的支持力
UML(15年后)已经为这些问题找到了非常好的答案


国产DSL通常做得不好,部分原因是设计不好,但通常是因为很难获得工具支持。我的公司提供改善这种情况的服务。

我是MDA爱好者,因此我想我可以为您的问题提供非常详细的答案。 什么是UML: 对象管理组(OMG)是一个旨在提供标准语言和技术的公司联盟,定义了一种元建模语言,称为“元对象设施”或MOF(http://www.omg.org/mof). 元模型是一个描述模型的模型,或者换句话说,描述词汇表(可以在模型中使用的元素)、语法(它们之间的关系)及其语义(每个实体的含义是什么以及在给定上下文中其含义如何变化等)。元模型扮演着与上下文无关语法相同的角色。因此,您可以将元模型看作是一种可以用来定义元模型的语言。这就是OMG对UML实际所做的。UML语言有一个通过MOF在两个文档中描述的元模型:UML基础设施