Domain driven design Antlr是DSL生成器,是有意编程的替代方案吗?

Domain driven design Antlr是DSL生成器,是有意编程的替代方案吗?,domain-driven-design,antlr,dsl,intentional-programming,Domain Driven Design,Antlr,Dsl,Intentional Programming,查尔斯·西蒙尼(Charles Simonyi)的雄心壮志和创造力让我印象深刻,他首先在微软,然后在自己的公司建立了意向性编程领域 在这种软件方法中,一个 程序员首先构建一个工具箱 特定于给定的问题域 (如人寿保险)。领域 专家,在程序员的帮助下 描述计划的预期目标 你所看到的就是你所看到的 获得(所见即所得)的方式。一 自动化系统使用该程序 说明和工具箱 生成最终程序。连续的 更改仅在所见即所得模式下进行 水平 它似乎是一种非常有用和实用的编程方法,潜在地规避了当前软件开发方法的许多问题

查尔斯·西蒙尼(Charles Simonyi)的雄心壮志和创造力让我印象深刻,他首先在微软,然后在自己的公司建立了意向性编程领域

在这种软件方法中,一个 程序员首先构建一个工具箱 特定于给定的问题域 (如人寿保险)。领域 专家,在程序员的帮助下 描述计划的预期目标 你所看到的就是你所看到的 获得(所见即所得)的方式。一 自动化系统使用该程序 说明和工具箱 生成最终程序。连续的 更改仅在所见即所得模式下进行 水平

它似乎是一种非常有用和实用的编程方法,潜在地规避了当前软件开发方法的许多问题

从本质上讲,它似乎有助于非程序员(业务/系统分析师)创建特定于领域的语言,但它所处的阶段比UML所能提供的更接近于实际实现。他说它最终会完成,但现在还没有(大约15年后)

DSL运行的范围从简单的5行规则引擎到复杂的应用程序,如Ruby on Rails。因此,我认为延迟发布他的产品与这样一个事实有关,即他正在处理简化更高层次的抽象,因为他必须同时允许封装所有领域语言

所以,我的问题是

(a)是否可以作为有意编程的替代方案-尽管可能是一种不太友好的替代方案,需要程序员的干预,而不是允许业务分析师生成DSL?您是否可以使用Antlr生成类似Ruby on Rails的DSL(假设它支持Ruby作为输出-我认为它不支持)?它不能做什么?而且,我不明白为什么它被称为“语言解析器”而不是“语言生成器”-因为后者描述它的用途,而前者描述它如何实现其最终结果。


(b)如果Antlr不同于故意编程,那么有什么类似于故意编程的吗?

我不是这方面的专家,所以请谨慎对待。但是


ANTLR本身不是一个DSL生成器,尽管它可以用来创建解释DSL的代码。它是一个解析器生成器-但DSL生成器必须创建ANTLR生成解析器的源代码。

ANTLR只是一个解析器生成器。在任何非平凡的DSL中,编写解析器的工作量不到实现DSL。求值器/规则引擎/代码生成器/时间表或DSL所做的任何其他工作可能需要更多的工作,不能像解析器一样生成。

在回答第b部分时,在类似空间中工作的三个系统是:

每一种产品都有不同的优势和劣势,但它们都属于不同的类别。Intential Software的Intential Workbench可能是迄今为止这一类别中最雄心勃勃的产品,但也不是普遍可用的


MPS和xText是免费的开源产品。Metabase是最成熟的,是一种商业产品。他们都有一个陡峭的学习曲线。

这是一个问题还是广告?