4

Charles Simonyi 首先是在微软,然后是在他自己的公司,努力建立意向编程领域的雄心和创造力让我印象深刻。

究竟什么是意向编程

http://en.wikipedia.org/wiki/Intentional_programming

在这种软件方法中,程序员首先构建一个特定于给定问题域(例如人寿保险)的工具箱。领域专家在程序员的帮助下,然后以所见即所得 (WYSIWYG) 的方式描述程序的预期行为。自动化系统使用程序描述和工具箱来生成最终程序。后续更改仅在 WYSIWYG 级别进行。

它似乎是一种非常有用且实用的编程方法,可能会规避当前软件开发方法的许多问题。

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

DSL 涵盖了从简单的 5 行规则引擎到 Ruby on Rails 等复杂应用程序的所有领域。所以我认为延迟发布他的产品与他正在处理简化更高级别的抽象这一事实有关,因为他必须基本上允许同时封装所有领域语言。

所以,我的问题是

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

(b) 如果 Antlr 和 Intentional Programming 不同,有没有类似 Intentional Programming 的东西?

4

3 回答 3

3

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

这些产品中的每一个都有不同的优点和缺点,但它们都属于Language Workbenches的类别。Intentional Software 的 Intentional Workbench 可能是迄今为止该类别中最雄心勃勃的产品,但也不是普遍可用的。

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

于 2010-02-18T23:16:05.980 回答
2

我不是这方面的专家,所以用一大撮盐来处理。然而...

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

于 2009-01-31T23:51:50.037 回答
2

ANTLR 只是一个解析器生成器。在任何重要的 DSL 中,编写解析器所花费的精力不到实现 DSL 的 50%。评估器/规则引擎/代码生成器/时间表或您的 DSL 所做的任何其他事情,可能需要更多的工作并且不能像解析器那样生成。

于 2009-02-01T13:41:44.180 回答