11

我对领域特定语言的设计和实现感兴趣。我知道的大部分 DSL 都来自学术界。

你能给我一些关于工业中实际使用的 DSL 的建议吗?并且你每天都在使用……真的很方便……

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

我想建立一个(非详尽的)行业部署语言列表......我知道这是巨大的......

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

编辑 我主要对面向应用程序的 DSL 感兴趣,而不是小型嵌入式语言。例如,SQL 匹配我正在寻找的内容,但嵌入在 java 中的 SQL 对我不感兴趣。我正在寻找的另一种语言示例是 X#

4

16 回答 16

13

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

另一个流行的,但我没有经验的是 VHDL。VHDL 之所以受欢迎,是因为它可以很容易地转换为在 FPGA 中使用。

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

于 2009-06-18T14:55:36.600 回答
11

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

于 2009-06-18T20:36:43.833 回答
6

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

于 2009-06-18T15:53:17.947 回答
3

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

于 2009-06-18T15:54:13.627 回答
2

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

于 2009-06-18T16:01:19.697 回答
2

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

  • NORMA,一种用于概念领域建模的 DSL,基于对象角色建模表示法 (ORM2)
  • Web 服务软件工厂,它使用三个 DSL 来对 Web 服务进行建模

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

于 2009-07-10T13:07:00.773 回答
1

这是我曾经问过的一个关于用 Ruby 编写的 DSL 的问题:Ruby DSL(领域特定语言)存储库,示例

除了 Ruby DSL,SQL 是非常流行的 DSL 的一个很好的例子,A​​WK 也是如此。

于 2009-06-18T14:20:38.387 回答
1

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

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

于 2009-06-18T20:52:48.340 回答
0

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

我是声明式 DSL 的忠实粉丝。可操作的 DSL(如MapleMathematicaR也不错,但与传统语言没有太大区别)。

于 2010-06-25T14:34:18.320 回答
0

Tcl是一种语言,最初被设计为构建 DSL 的框架——提供可编程性和 I/O 等基本功能,同时为每个应用程序重新创建特定领域的部分——并发展成为一种通用脚本语言。Expect是最广为人知的基于 Tcl 的 DSL 之一。

于 2010-06-25T15:03:24.207 回答
0

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

  • 以 XML 表示且可执行的BPEL
  • BPMN是一种视觉语言,用于建模
于 2011-02-06T23:15:15.707 回答
0

您可以用 Boo 等语言编写特定领域的语言,但我认为特定领域的定义表明大多数时候它将在特定行业甚至只是一家公司......

维基百科对此有一篇很好的介绍性文章。

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

于 2009-06-18T14:20:35.237 回答
0

ruby on rails 的某些部分可以被认为是特定领域的语言。特别是它用于指定关系表的语言。

于 2009-06-18T14:24:24.277 回答
0
  1. Mak Stealth 用于编程字符行为的语言(不要认为它有名字)
  2. 俚语 - 高盛语言(我听说过但从未使用过)
  3. CMS-2海军编程语言
于 2009-06-18T16:07:48.717 回答
0

谷歌的网络搜索支持一些越来越复杂的参数化

您可能会争辩说,这是使用最广泛的 DSL 之一,即使他们的一小部分用户群曾经使用过其中的一个,而不是标准的单词列表。

于 2009-06-18T16:10:30.573 回答
0

Erlang最初是一种电信专用语言,尽管它现在(偶尔)被用作通用语言。

于 2009-07-10T13:08:38.170 回答