【问题标题】:Interesting examples of Domain Specific Languages领域特定语言的有趣示例
【发布时间】:2011-07-18 01:57:23
【问题描述】:

我正在考虑为我的本科项目使用领域特定语言。我的一个问题是我真的找不到任何有趣的例子,我可以扎根。有没有人有任何 DSEL 的好例子(最好是开源的)?

另外,我想研究的一个领域是使用 DSEL 解决/解决并发问题(协程等)。有没有人在 DSEL 中使用这个的好例子?如果这是 DSEL 的愚蠢应用,请解释原因...

另一个潜在的探索领域是数据库编程。这又是一个用 DSEL 探索的愚蠢领域。例如,在 C# 中添加一些疯狂的数据库操作语法会是一个很好的项目吗?

编辑:我希望实现的通用语言是 Java、Python、Scala、C# 等。可能不是 C++ 或 C。

【问题讨论】:

    标签: database programming-languages concurrency language-design dsel


    【解决方案1】:

    Linda 实现可以被视为 eDSL。 CL-STM 这样的 STM 实现肯定是 eDSL。

    与并发无关,但非常有用的是嵌入式 Prolog 实现,其中有很多用于 Scheme、Lisp 和 Clojure。解析 eDSL 已经被提及 - 他们的族长 Parsec 绝对值得深入研究。

    编辑:使用您的实施语言列表,您错过了最有趣的 eDSL 机会。最强大和最灵活的 eDSL 是通过元编程制作的。 Scala 风格(甚至 Haskell 风格)的 eDSL 基于高阶函数,即基于迷你解释器。它们的设计更复杂,灵活性更低,并且受限于宿主语言的语法。

    【讨论】:

    • 我的项目导师实际上是 Haskell 的共同创造者之一,这很有趣。他对我使用 Scala 或 Haskell 很感兴趣,但你是说这可能不是最好的方法吗?另外,我不清楚元编程的主题?能给我举个简单的例子吗?
    • @Oetzi,我所说的元编程是指 C++ 模板元编程、Lisp/Scheme 宏元编程、Nemerle 宏等。可以通过这种方式完成的示例如下:meta-alternative.net/pfront.pdf 另外,看看在我上面提到的嵌入式 prolog 实现中。
    【解决方案2】:

    boost::spirit 如果你喜欢 C++,这是一个有趣的例子。引用:

    Spirit 是一组 C++ 库,用于 解析和输出生成 实现为特定领域 嵌入式语言 (DSEL)...

    (不过,我不知道您所说的“解决并发问题”是什么意思。我不明白您一般如何解决“并发问题”,或者 DSEL 如何提供帮助。)

    【讨论】:

    • 哎呀。我的意思是解决并发问题。一般不并发。正如您所说,“并发”实际上无法以任何方式解决:)。
    猜你喜欢
    • 2019-01-05
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多