一、DSL介绍
DSL的核心价值在于提供了一种可以清晰地就系统某部分的意图进行沟通的手段。它提供了一种用于思考问题的抽象,更容易用一种可理解的方式指定系统行为。DSL领域模型可以降低阅读复杂度,可以提升开发团队与客户以及软件用户之间的沟通。DSL提供了一种清晰而准确的语言,可以有效地改善这种沟通。
1.1 外部DSL
通常采用自定义语法,不过选择其他语言的语法也很常见,如:XML。外部DSL的例子有:正则表达式、SQL等。外部DSL并不等价于一种通用语言,语言可以针对某领域,但仍是通用语言。R语言用于统计的语言和平台,主要用于解决统计方面的问题,它具备通用语言的所有的表达性。因此,尽管它是针对某一领域,但却不是DSL。
1.2 内部DSL
是一种通用语言的特定用法,用内部DSL写成的脚本是一段合法的程序,但是它具有特定的风格,而且只用到了语言的一部分特性,用于处理整个系统一个小方面的问题,例如:Kotlin DSL、Groovy DSL等。构造DSL表达式时,会限制自己只使用通用语言的一部分特性,通常不会使用条件判断、循环结构和变量。
1.3 语言工作台
是一个专用的IDE,用于定义和构建DSL。
二、DSL & DDD
TODO
三、其他
2.1 XML vs JSON
XML
和HTML
一样是一种标记语言,而Json
则只是一种资料交换格式。
四、参考文献
- 领域特定语言
- 一杆到底:DSL 领域特定语言
- 开发者需要了解的领域特定语言(DSL)
- 领域特定语言设计技巧
- 代码描述代码,模型描述模型
- openapi在线校验
- schemastore
- JSON
- Groovy 教程
- Groovy DSL - A Simple Example
- Architecture as Language