领域特定语言指南

特定于域的语言(DSL)是一个针对特定类型的问题的计算机语言,而不是针对任何针对任何类型软件问题的通用语言。已经讨论了特定于域的语言,几乎只要计算完成计算。

dsl在计算中非常常见:例如CSS、正则表达式、make、ant、SQL、许多Rails、JMock中的期望、graphviz的点语言、struts的配置文件....

我制作的一个重要且有用的区别是内部和外部DSL之间。内部DSL是使用宿主语言给主体语言的特定语言感受特定语言的特殊方式。这种方法长期以来一直是丽斯普斯传统的一部分,在过去十年中,Ruby社区被重新激励。虽然它通常在这样的低仪式语言中通常更容易,但您可以以更多的主流语言更容易,例如Java和C#的更多主流语言。内部DSL也称为嵌入式DSL或流利的界面

外部dsl有自己的自定义语法,您可以编写完整的解析器来处理它们。在Unix社区中有这样做的强大传统。另一种方法是用XML或YAML等数据结构表示形式对DSL进行编码。

今天野外最常见的DSL是文本的,但您也可以拥有图形DSL。图形DSL需要沿着沿线的行的工具语言工作台.语言工作台不太常见,但有些人认为它们有潜力深刻地改进我们的编程方式。

DSL可以通过解释或代码生成来实现。解释(在DSL脚本中读取并在运行时执行它)通常是最简单的,但代码生成有时是必不可少的。通常生成的代码本身就是高级语言,例如Java或C.

www.dawgtracker.com上关于领域特定语言的材料指南。

域特定语言

在00的最后几年我对DSL的复苏感兴趣,通过Ruby社区的努力推动,创建流利界面的愿望,以及诱人,如果朦胧,语言工作台的前景。我看到了一个普通的少数项目,使用DSLS的想法,但大多数人在建造和使用它们时没有良好的选择。所以我决定通过写一本用于简单的内部和外部文本DSL的模式来解决这个问题。虽然在干预年内的大部分兴趣中,但我仍然觉得这本书做得很好地捕获这些技术。特别是,它在使用自适应模型上闪光,以捕获替代计算模型,例如规则引擎,决策表和状态机。

由Martin Fowler.

2010

阅读更多…

DSL问答

我被要求对非技术类型的dsl进行讨论。也许我读得太多了斯蒂芬奥格拉德但我有种不可抗拒的冲动,想用问答的方式来回答。它来了。

由Martin Fowler.

2008年9月9日

阅读更多…

bliki

领域特定语言

Dsl边界

当主题DomainSpecificLanguage的时候,一个常见的困惑就是什么是DSL,什么不是DSL。问题是DSL没有精确的定义,而且在DSL和其他事物之间存在很大的灰色地带。

由Martin Fowler.

2006年8月1

阅读更多…

bliki

领域特定语言

语言工作台:领域特定语言的杀手级应用程序?

软件开发中的大多数新想法都是旧想法的188比分直播完整手机版新变化。本文介绍了其中一个,这是一类我称之为语言工作台的工具的越来越多的想法 - 其中包括故意软件,Jetbrains的元编程系统和微软的软件工厂。这些工具采用了旧的开发风格 - 我称之为面向语言的编程,并在出价中使用IDE工具来制作方面的方向编程是一种可行的方法。虽然我不足以说他们是否会在他们的野心中取得成功,但我认为这些工具是软件开发地平线上的一些最有趣的东西。188比分直播完整手机版有趣的是写这篇文章,试图至少在概述中解释他们如何工作和周围的未来有用的主要问题。

由Martin Fowler.

2005年6月12日

阅读更多…

文章

语言工作台

188app彩票ios重构自适应模型

我们的大多数软件逻辑都是用我们的编程语言编写的,这些软件逻辑为我们提供了最佳的编写和发展逻辑的环境。但是有些情况有助于将该逻辑转移到我们的命令代码可以解释的数据结构中 - 我将其称为自适应模型。在这里,我将在JavaScript中显示一些产品选择逻辑,并显示如何将其重构到JSON中编码的简单生产规则系统。此JSON数据允许我们在使用不同的编程语言之间共享此选择逻辑,并在不更新这些设备上的代码的情况下更新此逻辑。

由Martin Fowler.

2015年11月19日

阅读更多…

文章

188app彩票ios领域特定语言

业务可读DSL

DSL将允许商务人士在不涉及程序员的情况下编写软件规则吗?

当人们谈论DSLS时,旨在提出为自己编写代码的商人问题。我喜欢将Cobol推论应用于这一思路。也就是说,COBOL的原始目标之一是允许人们在没有程序员的情况下写软件,我们知道这是如何解决的。因此,当任何方案被孵化到没有程序员的编写代码时,我必须询问这次会让它成功的特殊情况,其中COBOL(等许多其他事情)失败。

由Martin Fowler.

2008年12月15日

阅读更多…

bliki

领域特定语言

语法的噪音

一个常见的短语,当谈论圆角特异性语言(或确实任何计算机语言)是嘈杂的语法。人们可能会说Ruby比Java更少嘈杂,或者外部DSL比内部DSL噪声较小。通过句法噪音,人们的意思是无关的字符,这些字符不是我们真正需要说的,而是有些满足语言定义。噪音字符是糟糕的,因为他们掩盖了我们程序的含义,强迫我们拼图揭示它正在做的事情。

由Martin Fowler.

2008年6月9日

阅读更多…

bliki

语言功能领域特定语言

DSL目录

我的关于领域特定语言的书使用了一种模式结构来组织我用来描述dsl的概念。这个目录是那本书中的模式列表。每个模式都链接到对应于每个模式的页面。虽然页面不包含很多细节,但它们确实为每个模式提供了一个引用URI。

由Martin Fowler.

阅读更多…