Antlr是DSL生成器并且是有意编程的替代方法吗?
-
20-08-2019 - |
题
查尔斯·西蒙尼(Charles Simonyi)首先在微软,然后在他自己的公司建立意向编程领域的努力的雄心和创造力使我感到震惊。
http://en.wikipedia.org/wiki/Intental_programming
在这种软件方法中, 程序员首先构建一个工具箱 特定于给定的问题域 (例如人寿保险)。域 专家,然后在程序员的帮助下 描述程序的意图 所见即所得的行为 获得(所见即所得)的方式。一个 自动化系统使用程序 说明和工具箱 生成最终程序。连续 更改仅在所见即所得 级别。
这似乎是一种有用且实用的编程方法,有可能规避当前软件开发方法中的许多问题。
从本质上讲,它似乎可以促进非程序员(业务/系统分析人员)创建特定于域的语言,但是在这个阶段,比UML所提供的更接近于实际实现。他说它将最终完成,但尚不存在(将近15年)。 DSL的范围很广,从简单的5行规则引擎到复杂的应用程序(如Ruby on Rails)。因此,我认为发布产品的延迟与以下事实有关:他正在处理简化更高级别的抽象的问题,因为他必须实质上允许立即封装所有领域语言。
所以,我的问题是
(a) Antlr 是否可以替代有意编程-尽管也许是一种不太友好的替代方案,需要程序员的干预,而不是允许业务分析人员生成DSL? 您是否可以使用Antlr生成像Ruby on Rails这样的DSL(假设它支持Ruby作为输出) -我认为不是)?它不能做什么?另外,我不明白为什么将其称为“语言解析器”而不是“语言生成器”-因为后者描述了它的用途,而前者描述了它如何达到最终结果。
和
(b)如果Antlr与故意编程不同,那么有什么类似于故意编程吗?
解决方案
我不是这方面的专家,所以要用少许盐调味。但是...
ANTLR本身不是DSL生成器,但可以用来创建解释DSL的代码。它是一个解析器生成器-但是DSL生成器必须创建ANTLR用来生成解析器的内容。
其他提示
回答b)部分,三个在相似空间中工作的系统是:
- “> JetBrains MPS
- “> Eclipse xText
- “> MetaCase MetaEdit +
每种产品都有不同的优点和缺点,但是它们都属于语言工作台类别。Intental Software的Intental Workbench可能是迄今为止该类别中最雄心勃勃的产品,但也不是普遍可用。
MPS和xText是免费的开源产品。MetaCase是最成熟的,是一种商业产品。它们都具有陡峭的学习曲线。
ANTLR只是一个解析器生成器。在任何非平凡的DSL中,编写解析器都不到实现DSL所花费工作的50%。评估程序/规则引擎/代码生成器/时间表或您的DSL所做的任何其他事情,可能需要更多的工作,并且无法像解析器那样生成。