浅谈DSL

领域专用语言是编程语言或规范语言的一种类型,致力于特定问题领域,特定问题表示技术,或特定解决技术。


领域专用语言的例子包括HTML、Verilog和VHDL硬件描述语言、用于符号数学的Mathematica和Maxima、关系数据库的SQL、创建解析器的YACC语法、指定词法分析器的正则表达式、创建图表语言的通用Eclipse模型系统、声音和音乐合成的Csound、GraphViz和GrGen的输入语言、用于图布局和图重写的软件包。

相反的是:

    1、相通用目的的编程语言,诸如C、Java 或Python

    2、 通用目的的模型语言诸如UML


一个领域专用语言被专门创建去解决一个特定领域里的问题,而不是打算能解决问题之外的。

与此相反,通用目的语言被创建用于解决许多领域的问题。领域也许是一个商业领域。


DSL是一种有着特定目的语言。DSL和脚本语言之间的区别在某种程度上是模糊的,但DSL常常缺乏低级功能,如文件系统访问、进程间控制和其他表征功能齐全的编程语言,脚本或其他等的功能。许多DSL不编译成字节码或可执行代码,但是编译成各种各样的媒体对象:GraphViz导出为PostScript,GIF,JPEG等 ,Csound编译成视频文件。


SQL代表一个有趣的例子:它被认为是一种DSL,因为它具体到一个特定领域,并且它常常被从其他应用程序里调用,但是SQL比其他许多脚本语言有更多的关键字和函数,通常被认为是它自己权利的一种语言,也许因为在编程中,数据库操作的普遍,在这个语言里需要是一个专家。


一个非常小的语言像一个小刀,可以用几千种不同的方式使用,从切食物到砍树。

一个DSL语言就像一个电钻:它是一个在特定上下文中有着广泛用途的强大工具。

一个通用语言是一个全集,有多种多样的工具用于执行各种各样的任务。

DSL应该被正看着他们工作台的程序员使用,意识到他们需要一个更好的钻子,发现一个独有的DSL确切地提供了


参考文献:

[0]  Domain-specific_language

https://en.wikipedia.org/wiki/Domain-specific_language


你可能感兴趣的:(DSL)