美文网首页
简单聊聊DSL

简单聊聊DSL

作者: twj小鱼儿 | 来源:发表于2020-12-29 11:17 被阅读0次

什么是DSL?

DSL(Domain Specified Language)领域专用语言。
DSL是为了解决问题描述者(使用者)和解决者(构建者)之间的沟通方式产生的,即一种在特定领域专家和实现者之间双方都能顺利沟通的“共同语言”。

常见的DSL

广义上,绝大部分编程语言都是DSL,是在计算机领域程序员和计算机之间的“共同语言”;常见的DSL主要有:软件构建领域 Ant、UI 设计师 HTML、硬件设计师 VHDL。我们这里主要讨论狭议的DSL。

DSL的特点

用于专门领域,不能用于其他领域
表现力有限,提供给问题描述者使用
不描述解答域,仅描述问题域

DSL与通用编程语言的区别

DSL 供非程序员使用,供领域专家使用
DSL 有更高级的抽象,不涉及类似数据结构的细节
DSL 表现力有限,其只能描述该领域的模型,而通用编程语言能够描述任意的模型

DSL 分类

要理解DSL 分类需要先理解一个概念。“元语言抽象”。
它是指通过一种语言来构建另一种语言。比如 Java 就是构建在 C 上的语言。
其中,从什么语言构建而来,这种构建来源的语言称为“宿主语言”。

根据是否从宿主语言构建而来,DSL 分为:

内部 DSL(从一种宿主语言构建而来)
外部 DSL(从零开始构建的语言,需要实现语法分析器等)
还有一种属于外部DSL的“非文本DSL”,即尽量使用图形化表述。比如 JetBrains 的 MPS。

我们通常所用的框架实际上就是一种内部 DSL。比如 Rails 框架就是基于 Ruby 的用于 Web 开发领域的内部 DSL。

如何构建 DSL

能够完整描述领域
简单易用
隐藏实现细节

flutter_dynamic 是一种解决Flutter动态创建应用的DSL,其很好地解决了产品与开发之间动态描述功能需求的问题。

相关文章

  • 简单聊聊DSL

    什么是DSL? DSL(Domain Specified Language)领域专用语言。DSL是为了解决问题描述...

  • 第10章 使用 Kotlin 创建 DSL

    第10章 使用 Kotlin 创建 DSL 使用DSL的编程风格,可以让程序更加简单干净、直观简洁。当然,我们也可...

  • kotlin DSL 简单示例

    案例场景 当接口的方法过多,而我们只需要其中一个方法时,例如TextView.addTextChangedList...

  • DSL学习笔记(1)

    本章解决的问题: 什么是DSL 什么是语义模型 以及 和 DSL 的联系 内部dsl vs 外部dsl dsl的优...

  • Groovy与DSL

    DSL:领域特定语言。常用于聚焦指定的领域或问题,这就要求 DSL 具备强大的表现力,同时在使用起来要简单。由于其...

  • Gradle开发-Groovy入门

    #Groovy DSL 简单了解; Groovy 的基本概念; Groovy 的特性; Groovy 的优势 总结...

  • Kotlin 之 DSL 篇一

    Kotlin DSL 什么是DSL Domain Special Language DSL是领域特定语言,与通用语...

  • 在Kotlin中使用DSL

    1 DSL(domain-specific language) 1.1 DSL的定义 DSL被定义为处理特定领域问...

  • ES简单实用DSL查询

    ES版本信息 查看所有索引 查看字段类型 创建索引 删除索引 批量(_bulk)加载数据 查询数据 查询1000条...

  • 44、初识搜索引擎_Query DSL搜索语法

    1、什么是Query DSL 搜索内容在{···}中的就是Query DSL搜索,如: 2、Query DSL的基...

网友评论

      本文标题:简单聊聊DSL

      本文链接:https://www.haomeiwen.com/subject/pedfoktx.html