美文网首页
简单聊聊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

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