浅谈DSL
浅谈DSL
散关清渭 发表于2年前
浅谈DSL
  • 发表于 2年前
  • 阅读 52
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 领域特定语言(DSL) 是针对特定问题领域的编程语言,而非通用语言。创建一种领域特定语言并非难事。但我们对领域的理解总是不断深入,要让DSL长期有用,我们就需要一种不断完善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
共有 人打赏支持
粉丝 24
博文 159
码字总数 166498
×
散关清渭
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: