0

我只是在学习 DSL,我试图将它们放在我能理解的上下文中。

例如,假设我们正在谈论互联网广告 - 因为这是我想工作的领域 - 你可能构建的小型自定义 DSL 的例子是什么?

此外,您需要哪些高级技术步骤来实现这一点?

4

3 回答 3

1

去年我一直在使用 VS2005 的 DSL 工具。

为了学习它,您应该阅读 Steve Cook、Gareth Jones、Stuart Kent 和 Alan Cameron Wills 的“使用 Visual Studio DSL 工具进行领域特定开发”。

这应该是您的切入点,它涵盖了技术的各个方面,包括一些高级主题。

于 2009-06-29T13:06:03.030 回答
1

根据定义,领域特定语言是专为领域专家设计的语言。

题目很大,可以分为:

  • 内部或外部 - 它是程序员编写的宿主语言的一部分,还是独立的。
  • 命令式或声明式 - 您是指定“程序”的流程,还是写下需要满足的属性。
  • 观众 - 这是由程序员还是非程序员编写的

DSL 的一大子集(包括下面的那个)可以被描述为由规则或推理引擎一次性评估的规则。

对于互联网广告领域,您可能想要提出一组业务规则,用于管理在给定页面上显示哪些广告。

if page.popularity is high then use ads of account[valuable]

if page.topic is not NSFW then use ads of topic[not NSFW]

if browser does not support flash then use ads of capability[javascript]

在这种特殊情况下,一个干净、受欢迎的页面会从最好的付费帐户获得广告,并且可以安全地工作。

如果这是一种引起您共鸣的方法,您可能需要集成现有的规则引擎。如果最终用户不是开发人员,这尤其明智,因为您需要提供一定数量的工具以及 DSL。

于 2009-06-26T22:00:04.717 回答
0

比赛有点晚了,但是...

谷歌有这样的 DSL 来指定谷歌广告商可以投放的广告。它包括通常的 Google 搜索(广泛匹配 [未引用的文本]、短语匹配 [带引号的字符序列] 和完全匹配 [括号中的字符序列])以及用于消除匹配的 Google 搜索的“否定关键字” . 它是通过一组表格输入的,所以看起来不像是编程,但输入的最终是一些相当简洁的文本字符串。它不是一个非常聪明的 DSL 恕我直言(我实际上不得不使用它,我希望它在低端包含正则表达式,在高端包含自然语言解析)但它非常真实并被数百万“非程序员”使用”。

实现 DSL 有两个步骤:解析它(理解它所说的内容)和机械化它的含义。解析很好理解;查看任何有关在 Stack Overflow 上进行解析的问题。机械化要困难得多;我们所认为的“谷歌”很大程度上该 DSL 的机械化。

于 2011-06-12T04:51:47.997 回答