- 中文名
- 领域特定语言
- 外文名
- domain-specific languages
- 作 者
- Martin Fowler
- 译 者
- ThoughtWorks中国
- 学 科
- 计算机
- 领 域
- 计算机
绪论
播报编辑
在定义DSL是什么的问题上,Fowler 认为业界经常使用的一些特征,例牛欢朵如虹慨“关注于领域”、“有限的表现”和“语言本质”是非常模糊的。因此,唯一能够确定DS套弃促L边界的方法是考虑“一门语言的一婚牛种特定用法”和“悼凝该语言的设计者或使用者的意图”:
如果XSLT的设计者将其设计为XML的转换工具整危热,那么我认为XSLT照记悼是一个DSL。如果一个用户使用DSL的目的是该DSL所要达到的目的,那么它是一个DSL,但是如果有人以通用的方式才提签誉来使用一个DSL,那么它(在这种用法下)就不再是一个DSL了。
以Fowler的观点,DSL首先是一种帮助用户从一个系统中抽象出某些部分的工具。所以“当你意识到你需要一个组件,或者当你已经有了一个组件而你希望简化操作它的方式的时候”,DSL是有用的。使用DSL确实提供了某些益处。DSL不仅提高了代码的易读性,让开发者可以和领域专家更好的交流,而且是改变执行上下文的一种手段,例如:把逻辑从编译时切换到运行时,或者当命令式编程不是很合适的时候转用声明式计算模型。
定义
播报编辑
领域特定语言(英语:domain-specific language、DSL)指的是专注于某个应用程序领域的计算机语言。又译作领域专用语言。不同于普通的跨领域通用计算机语言(GPL),领域特定语言只用在某些特定的领域。 比如用来显示网页的HTML,以及Emacs所使用的Emac LISP语言。
分类
播报编辑
内部DSL:通用语言的特定语法,用内部DSL写成的脚本是一段合法的程序,但是它具有特定的风格,而且仅仅用到了语言的一部分特性,用于处理整个系统一个小方面的问题;
优点
播报编辑
2、和领域专家沟通,领域专家可以通过DSL来构建系统的功能;
3、执行环境的改变,可以弥补宿主语言的局限性。
处理步骤
播报编辑
1、DSL脚本;
2、解析脚本;
4、生成代码或者执行模型。 [1]
基于groovy的DSL
播报编辑
2、闭包等特性以及语法的简介,使用非常灵活;
3、可以和java系统无缝的整合;
4、Groovy自身不是 DSL。 Groovy官方已经发布了较多基于 Groovy书写的 DSL,比如 GANT, GORM, XMLBuilder, HtmlBuilder等等。
代表语言
播报编辑