DSL
DSL: 领域特定语言(Domain Specific Language),为了解决某一类任务而专门设计的计算机语言,DSL并不是真正的编程语言,与之相对应的是GPL(General Purpose Language)通用编程语言,如Objective-C、Java、Python等
例如:'Regex'、'SQL'、'HTML/CSS'
设计原则:简单,通过简化语言中的元素,降低使用者的负担
缺点:缺乏抽象的概念,比如:模块化、变量及方法等
抽象的概念并不是某个领域所关注的问题,就像Regex并不需要模块、变量以及方法等概念
嵌入DSL(内部DSL):↑前面部分的概念可以被称为外部DSL,而内部的DSL的实现往往是嵌入一些编程语言的,比如iOS的依赖库管理组件CocoaPods和Andriod的主流编译工具Gradle,前者的实现是基于Ruby语言的一些特性,后者基于Groovy。
CocoaPods以及其他的嵌入式DSL使用了宿主语言(host language)的抽象能力,并且省去了实现复杂语法分析器(Parser)的过程,并不需要重新实现模块、变量等特性。
网友评论