Domain driven design Antlr是DSL生成器,是有意编程的替代方案吗?
查尔斯·西蒙尼(Charles Simonyi)的雄心壮志和创造力让我印象深刻,他首先在微软,然后在自己的公司建立了意向性编程领域 在这种软件方法中,一个 程序员首先构建一个工具箱 特定于给定的问题域 (如人寿保险)。领域 专家,在程序员的帮助下 描述计划的预期目标 你所看到的就是你所看到的 获得(所见即所得)的方式。一 自动化系统使用该程序 说明和工具箱 生成最终程序。连续的 更改仅在所见即所得模式下进行 水平 它似乎是一种非常有用和实用的编程方法,潜在地规避了当前软件开发方法的许多问题 从本质上讲,它似乎有助于非程序员(业务/系统分析师)创建特定于领域的语言,但它所处的阶段比UML所能提供的更接近于实际实现。他说它最终会完成,但现在还没有(大约15年后) DSL运行的范围从简单的5行规则引擎到复杂的应用程序,如Ruby on Rails。因此,我认为延迟发布他的产品与这样一个事实有关,即他正在处理简化更高层次的抽象,因为他必须同时允许封装所有领域语言 所以,我的问题是 (a)是否可以作为有意编程的替代方案-尽管可能是一种不太友好的替代方案,需要程序员的干预,而不是允许业务分析师生成DSL?您是否可以使用Antlr生成类似Ruby on Rails的DSL(假设它支持Ruby作为输出-我认为它不支持)?它不能做什么?而且,我不明白为什么它被称为“语言解析器”而不是“语言生成器”-因为后者描述它的用途,而前者描述它如何实现其最终结果。 及Domain driven design Antlr是DSL生成器,是有意编程的替代方案吗?,domain-driven-design,antlr,dsl,intentional-programming,Domain Driven Design,Antlr,Dsl,Intentional Programming,查尔斯·西蒙尼(Charles Simonyi)的雄心壮志和创造力让我印象深刻,他首先在微软,然后在自己的公司建立了意向性编程领域 在这种软件方法中,一个 程序员首先构建一个工具箱 特定于给定的问题域 (如人寿保险)。领域 专家,在程序员的帮助下 描述计划的预期目标 你所看到的就是你所看到的 获得(所见即所得)的方式。一 自动化系统使用该程序 说明和工具箱 生成最终程序。连续的 更改仅在所见即所得模式下进行 水平 它似乎是一种非常有用和实用的编程方法,潜在地规避了当前软件开发方法的许多问题
(b)如果Antlr不同于故意编程,那么有什么类似于故意编程的吗?我不是这方面的专家,所以请谨慎对待。但是
ANTLR本身不是一个DSL生成器,尽管它可以用来创建解释DSL的代码。它是一个解析器生成器-但DSL生成器必须创建ANTLR生成解析器的源代码。ANTLR只是一个解析器生成器。在任何非平凡的DSL中,编写解析器的工作量不到实现DSL。求值器/规则引擎/代码生成器/时间表或DSL所做的任何其他工作可能需要更多的工作,不能像解析器一样生成。在回答第b部分时,在类似空间中工作的三个系统是:
MPS和xText是免费的开源产品。Metabase是最成熟的,是一种商业产品。他们都有一个陡峭的学习曲线。这是一个问题还是广告?