成功的领域特定语言?你用哪一个?

时间:2009-06-18 14:16:15

标签: dsl

我对Domain Specific Languagess的设计和实现很感兴趣。 我所知道的大部分DSL源于学术界。

您能否给我一些指向行业中实际使用的DSL的信息?并且你每天都在使用......真的很方便..

(我也对声明性语言感兴趣,但不是基于xml的...)...

我想建立一个(非详尽的)行业部署语言清单......我知道这很大......

有时,我正在使用通用语言来实现可以使用DSL轻松完成的事情。

修改 我主要对应用程序导向的DSL感兴趣,而不是小嵌入式语言。例如,SQL匹配我正在寻找的东西,但java中嵌入的SQL对我不感兴趣。 我正在寻找的那种语言的另一个例子是X#

16 个答案:

答案 0 :(得分:12)

一个如此成功的DSL,它有自己的SO标签是正则表达式语言。当然,具体到字符串模式匹配的领域。

另一种流行的,但我没有经验的是VHDL。 VHDL的普及源于它易于转换以用于FPGA的事实。

[编辑] 虽然它肯定不是图灵完整的,但C的printf()格式说明符可以被视为另一种特定于域的语言。

答案 1 :(得分:11)

NMake,MSBuild,lex,yacc,bison,flex,TeX,PostScript,XAML,SSIS,Wix

答案 2 :(得分:6)

EBNF可能是其域中使用最广泛的域特定语言 - 一种描述语言的语言。

答案 3 :(得分:3)

Wikipedia suggests电子表格公式和shell脚本都是特定于域的语言。这将使它们成为最广泛传播的例子。

答案 4 :(得分:2)

Awk提供了一种用于处理半结构化文本数据的特定于域的语言 广泛使用的许多功能更强大的unix命令行工具(如find和grep)可归类为具有域特定语言(即使仅限于命令行参数)

答案 5 :(得分:2)

我不知道你是否也想考虑图形DSL。我要包括

以上两个都是使用DSL Toolkit创建的。

答案 6 :(得分:1)

这是一个我曾经问过用Ruby编写的DSL的问题:Ruby DSL (Domain Specific Language) repositories, examples

除了Ruby DSL之外,SQL也是非常受欢迎的DSL的一个很好的例子,就像AWK一样。

答案 7 :(得分:1)

MEL(Maya表达式语言)是AutoDesk Maya在整个设计中使用的命令行式语言。可以保存场景的Maya Ascii文件格式使用MEL来组成场景。用户界面主要使用MEL脚本构建和控制。 MEL可以用来驱动对象上的通道和属性的表达式。

我认为在您只为其编写脚本的情况下,技术上可以被视为嵌入式语言。但是,如果没有MEL,Maya基本上不存在。没有ascii文件格式,没有用户界面等。

答案 8 :(得分:0)

您可以用Boo等语言编写特定于域的语言,但我认为特定域名的定义表明大部分时间它将出现在特定行业或甚至只是一家公司...

Wikipedia有一篇很好的介绍性文章。

这个overview有一个示例部分,其中包含一些很好的链接。

答案 9 :(得分:0)

rails上有部分ruby可以被视为特定于域的语言。特别是它用于指定关系表的语言。

答案 10 :(得分:0)

  1. Mak Stealth编程字符行为的语言(不要认为它有名字)
  2. 俚语 - Goldman Sachs语言(我听说过但从未使用过它)
  3. CMS-2海军编程语言

答案 11 :(得分:0)

Google的网络搜索支持部分increasingly sophisticated parametrization

你可以说这是最广泛使用的DSL之一,即使他们的用户群的一小部分使用其中一个而不是标准的单词列表。

答案 12 :(得分:0)

Erlang最初是一种电信专用语言,虽然现在(偶尔)用作通用语言。

答案 13 :(得分:0)

最令我印象深刻的两个(尚未提及)是:

我是声明性DSL的忠实粉丝。运营的DSL(例如MapleMathematicaR也很不错,但与传统语言没有什么不同。)

答案 14 :(得分:0)

Tcl是一种最初被设计为构建DSL的框架的语言 - 提供可编程性和I / O等基本功能,而特定于域的部分是为每个应用程序创建的 - 并且长大为通用脚本语言。其中一种比较广为人知的基于Tcl的DSL是Expect

答案 15 :(得分:0)

对于业务流程,我们有例如。

  • BPEL,以XML表示,可执行
  • BPMN是一种视觉语言,用于建模