我只是在学习 DSL,我试图将它们放在我能理解的上下文中。
例如,假设我们正在谈论互联网广告 - 因为这是我想工作的领域 - 你可能构建的小型自定义 DSL 的例子是什么?
此外,您需要哪些高级技术步骤来实现这一点?
我只是在学习 DSL,我试图将它们放在我能理解的上下文中。
例如,假设我们正在谈论互联网广告 - 因为这是我想工作的领域 - 你可能构建的小型自定义 DSL 的例子是什么?
此外,您需要哪些高级技术步骤来实现这一点?
去年我一直在使用 VS2005 的 DSL 工具。
为了学习它,您应该阅读 Steve Cook、Gareth Jones、Stuart Kent 和 Alan Cameron Wills 的“使用 Visual Studio DSL 工具进行领域特定开发”。
这应该是您的切入点,它涵盖了技术的各个方面,包括一些高级主题。
根据定义,领域特定语言是专为领域专家设计的语言。
题目很大,可以分为:
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。
比赛有点晚了,但是...
谷歌有这样的 DSL 来指定谷歌广告商可以投放的广告。它包括通常的 Google 搜索(广泛匹配 [未引用的文本]、短语匹配 [带引号的字符序列] 和完全匹配 [括号中的字符序列])以及用于消除匹配的 Google 搜索的“否定关键字” . 它是通过一组表格输入的,所以看起来不像是编程,但输入的最终是一些相当简洁的文本字符串。它不是一个非常聪明的 DSL 恕我直言(我实际上不得不使用它,我希望它在低端包含正则表达式,在高端包含自然语言解析)但它非常真实并被数百万“非程序员”使用”。
实现 DSL 有两个步骤:解析它(理解它所说的内容)和机械化它的含义。解析很好理解;查看任何有关在 Stack Overflow 上进行解析的问题。机械化要困难得多;我们所认为的“谷歌”很大程度上是该 DSL 的机械化。