我想我正在寻找某种介绍,看看是否有人使用过它。使用它有什么特别的好处吗?
维基百科:
领域专用语言(DSL)是一种专门针对特定问题域、特定问题表示技术和/或特定解决方案技术的编程语言或规范语言。
有人能给出具体的例子来说明你是如何实现它的,或者它在给定的场景中是如何有用的吗?
发布于 2009-04-30 23:40:23
特定于领域的语言是为处理特定领域或一组关注点而编写的语言。它们中有很多,比如make、ant和rake用于描述软件构建,或者lexx和yacc用于语言构建。近年来,它们变得流行起来,因为一些东西结合在一起,使它们更易于构建。其中最重要的是Ruby的日益流行,它有几个特性使构建新的DSL变得更加容易。
马丁·福勒( Martin )是这里这个想法的大力支持者。
发布于 2009-05-01 00:19:38
您可以将DSL看作是用更通用的编程语言编写的函数的复杂参数。真正的编程语言解析DSL代码并使用它做一些事情,通常,DSL代码只关注您想要做的事情,而更大的系统就会知道如何做。
DSL的示例包括所有查询语言(SQL、XPath、.)、所有模板语言(Django、Smarty、.)、shell脚本,特别包括诸如XML、命令驱动的web浏览器(主要用于自动测试)、数据存储和交换语言(XML、YAML、.)以及LaTex、HTML或CSS等文档语言。
有些语言具有非常灵活的语法,如TCL和Lisp,直接将它们的DSL构建到语言中.如果可能的话。大多数语言使用字符串,通常从外部文件加载。
使用它们有什么特别的好处吗?将它们用于预期的目的是非常有利的,因为您将在不知道的情况下转向它们,就像您一直在使用SQL或HTML而不将它们视为DSL一样。
我敢说,有足够的DSL为您可能需要的任何类型的应用程序;您几乎可以肯定不需要学习如何编写您自己的应用程序。
发布于 2009-04-30 23:48:30
(解决问题的关键)
我想我第一次在某个地方看到DSL,它的定义是“特定领域的语言”,我也认为它是一种特殊的、具体的语言,我只是没有听说过--但是,不,它是针对特定应用领域的语言的通用术语。
具有讽刺意味的是,如果您刚刚听说TCL是一种“工具命令语言”,您可能会认为,像DSL一样,各种工具都会有大量的TCLs -但是,不,它是一种特定脚本语言的特定名称。
https://stackoverflow.com/questions/809574
复制相似问题