第1章 初识DSL
本章内容
- 什么是DSL
- DSL对于商业用户和解决方案的开发者各有什么好处
- DSL的结构
- 采用设计得当的抽象概念
清晨上班路上,你通常都会走进钟爱的咖啡店点一杯“大杯纤体肉桂带奶油拿铁”,店员则会准确无误地端上一杯用脱脂奶和无糖糖浆调制的香甜肉桂口味473毫升拿铁咖啡,上浇打发的鲜奶油。因为你点单用的是她能理解的精确语汇,所以即使没有详细解释每个词的含义,也丝毫无碍于交流,哪怕不相干的人听了会摸不着头脑。本章将要介绍的就是如何用特定领域的语汇来表达一个问题,然后进一步在解答域对问题建模。这种从问题域映射到解答域的实现模型就是DSL(Domain-Specific Language,领域专用语言)的基本思路。如果把上述咖啡店里的情境做成软件,那么客人们每天点单所用的语言就是你要找的DSL。
开发者设计的任何应用程序都将问题域映射成解答域的实现模型。DSL是映射过程中的一项重要产物和组成部分。在更确切地定义DSL之前,我们首先介绍成功建立映射的必要过程。要使映射成立,你需要先找出两个领域之间相通的语汇。这组语汇是促成DSL最终诞生的关键种子。
设计得当的DSL实现必定不能缺少一套好的抽象。某些读者可能打算继续深究怎样设计出良好的抽象,因此我们在附录A中详细探讨了设计中应该追求的一些特质。你不妨现在就翻阅一下附录A,然后再继续看本章接下来的内容。1.7节也介绍了关于抽象的基本内容,但附录A的介绍要详细得多。