领域特定语言指南
领域特定语言(DSL)是一种针对特定类型的问题的计算机语言,而不是针对任何类型的软件问题的通用语言。特定于领域的语言已经被讨论过,并且几乎从计算开始使用起就一直在使用。
dsl在计算中非常常见:示例包括CSS、正则表达式、make、ant、SQL、Rails的许多部分、JMock中的期望、graphviz的点语言、struts的配置文件....
我所做的一个重要而有用的区分是内部和外部dsl之间的区别。内部dsl是使用主语言的特殊方式,以使主语言具有特定语言的感觉。这种方法长期以来一直是Lisp传统的一部分,在过去十年中,Ruby社区重新赋予了它活力。尽管在诸如此类的低级语言中通常更容易,但您可以在诸如Java和c#等更主流的语言中进行有效的内部dsl。内部领域特定语言也称为嵌入式领域特定语言或连贯接口
外部dsl拥有自己的自定义语法,并编写完整的解析器来处理它们。这样做在Unix社区中有很强的传统。这种方法的一种变体是用数据结构表示(如XML或YAML)对DSL进行编码。
目前最常见的领域特定语言是文本的,但也可以有图形化的领域特定语言。图形化领域特定语言需要一个工具语言工作台.语言工作台不太常见,但一些人认为它们有潜力深刻改进我们的编程方式。
dsl可以通过解释或代码生成来实现。解释(读取DSL脚本并在运行时执行它)通常是最简单的,但代码生成有时是必不可少的。通常生成的代码本身是一种高级语言,如Java或C。
www.rodiba.com上关于特定领域语言的材料指南。
领域特定语言
DSL q & a
我被要求对非技术类型的dsl进行讨论。也许我读得太多了Stephen O’grady但我有一种不可抗拒的冲动,想用问答的方式来回答。它来了。
Dsl边界
当话题DomainSpecificLanguage最常见的问题之一就是到底什么是DSL,什么不是DSL。问题是DSL没有精确的定义,而且DSL和其他东西之间有很大的灰色地带。
语言工作台:领域特定语言的杀手级应用程序?
软件开发中的大多数新思想实际上是旧思华体会登录网址想的新变体。本文描述了其中之一,我称之为语言工作台的一类工具的不断发展的想法——其中的例子包括意图软件、JetBrains的元编程系统和微软的软件工厂。这些工具采用了一种旧的开发风格——我称之为面向语言的编程,并使用IDE工具使面向语言的编程成为一种可行的方法。尽管我不能预测他们是否会成功,但我确实认为这些工具是软件开发领域中最有趣的东西。华体会登录网址有趣的是,我写这篇文章来尝试解释(至少是概述)它们是如何工作的,以及围绕它们未来用途的主要问题。
华体会app下载二维码重构到自适应模型
我们的大多数软件逻辑都是用编程语言编写的,这为我们提供了编写和发展这种逻辑的最佳环境。但是在某些情况下,将逻辑转移到命令式代码可以解释的数据结构中是有用的——我将其称为自适应模型。在这里,我将展示一些用JavaScript编写的产品选择逻辑,并展示如何将其重构为用JSON编码的简单生产规则系统。这个JSON数据允许我们在使用不同编程语言的设备之间共享这个选择逻辑,并在不更新这些设备上的代码的情况下更新这个逻辑。
DSL业务可读
dsl允许业务人员在不涉及程序员的情况下编写软件规则吗?
当人们谈论dsl时,通常会提出业务人员为自己编写代码的问题。我喜欢将COBOL推理应用到这一思路中。那就是COBOL最初的目标之一是允许人们在没有程序员的情况下编写软件,我们知道这是如何实现的。因此,当任何计划在没有程序员的情况下编写代码时,我必须问一下,在COBOL(和许多其他东西)失败的情况下,这次有什么特别之处可以使它成功。
语法的噪音
这是一个经常被提及的短语DomainSpecificLanguages(或实际上任何计算机语言)是嘈杂的语法。人们可能会说Ruby比Java更安静,或者外部领域特定语言比内部领域特定语言更安静。所谓“句法噪声”,人们指的是无关紧要的字符,这些字符不是我们真正需要表达的内容的一部分,而是为了满足语言定义而存在的。噪声字符很糟糕,因为它们模糊了程序的含义,迫使我们弄清楚它在做什么。
DSL目录
我关于领域特定语言的书使用了一种模式结构来组织我用来描述领域特定语言的概念。这个目录是那本书中模式的列表。每个链接都链接到每个模式的页面。虽然这些页面不包含太多细节,但它们确实为每个模式提供了一个参考URI。