DSL和GPL的区别

DSL和GPL的区别

DSL(Domain Specified Language)领域专用语言。

GPL(General Purpose Language)通用编程语言

GPL也表示 General Public License,表示GUN的的开源许可证,在此,我们只讨论作为语言的GPL。


DSL

要理解DSL 分类需要先理解一个概念。“元语言抽象”

它是指通过一种语言来构建另一种语言。比如 Java 就是构建在 C 上的语言。
其中,从什么语言构建而来,这种构建来源的语言称为“宿主语言”

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

  • 内部 DSL(从一种宿主语言构建而来)

  • 外部 DSL(从零开始构建的语言,需要实现语法分析器等)

内部DSL

内部DSL,就是为了满足某些特定的功能需求,借助宿主语言而“抽离”出的一种言

比如我用过的: 正则regex表达式,spring-AOP切点的execution表达式、定时任务中的Cron表达式等

forexample

正则regex匹配验证-验证Email是否正确

    ublic static void main(String[] args) {
    // 要验证的字符串
    String str = "service@xsoftlab.net";
    // 邮箱验证规则
    String regEx = "[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}";
    // 编译正则表达式
    Pattern pattern = Pattern.compile(regEx);
    // 忽略大小写的写法
    // Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(str);
    // 字符串是否与正则表达式相匹配
    boolean rs = matcher.matches();
    System.out.println(rs);
    }

AOP excution表达式

     @Pointcut("execution (* com.shfdr.service..*.*(..))")
     public void cut(){}

外部DSL

外部DSL可以理解是一种全新的语言,主要是为特别的领域来实现功能,并且需要特定的解释器或分析器来处理它。

但相反,内部DSL,比如正则regex它内部依据java.

关于领域的理解,我个人认为,其实是指的是针对不对业务需求,而有不同的限定

常接触的外部DSL,就是CSS和html了 ,它们为了把数据图形化展示而存在。

讲到特殊领域,css和html应该算是前台开发人员,或者UI需要掌握的一门,但因为会涉及到和后头交互,所以CSS和Html也成了后台人员必备的技能了。


GPL

通用编程语言指被设计为各种应用领域服务的编程语言。通常通用编程语言不含有为特定应用领域设计的结构。就是我们非常熟悉的 Objective-C、Java、Python 以及 C 语言等等

GPL也可以理解是我们实现编程的基础。


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值