什么是DSL和GPL

编译原理初学者入门指南 作者:pixelcao,腾讯 IEG 后台开发工程师一、引子最近的工作需要用表达式做一些参数的配置,然后发现大脑一片空白,在 Google 里试了几个关键词(起初搜了下“符号引擎”,发现... 阅读详情

DSL的全称是domain-specific language,它在wiki上的定义如下:
A domain-specific language (DSL) is a computer language specialized to a particular application domain.
与之相对的是GPL(general-purpose language)。
DSL指的是针对特定应用领域而设计使用的计算机语言,而GPL指的是针对跨应用领域而设计使用的计算机语言。
常见的DSL有:HTML,Shell,make语言,ant语言,maven语言,rpm语言,dpkg语言,awk语言,正则表达式,dc计算机语言等,有些DSL语言又被称为微型语言
常见的GPL有:Java,C等

另外在Apache Storm中有Coljure DSL,Python DSL,Ruby DSL等
这里的DSL指的是为了使用Coljure,Python,Ruby等语言开发Storm应用程序而设计的语言
举例来说,现在我们设计了Coljure DSL,我们想要使用Coljure语言开发Storm应用程序,我们只需按照Coljure DSL的规范,进行一些配置,Coljure DSL会自动解析这些配置,生成采用Coljure语言编写的Storm应用程序

原文转载http://blog.youkuaiyun.com/dslztx/article/details/46682889

领域特定语言与通用语言的较量 本文探讨了领域特定语言(DSL)的概念、优势以及如何在编程实践中运用。通过与通用编程语言(GPL)的对比,我们了解到DSL专注于特定问题领域,而GPL则适用于更广泛的问题。文章还提供了如何选择或设计适合特定问题的DSL的建议,并探讨了内部DSL与外部DSL的区别。 阅读详情

相关推荐

STM32L431电池供电项目实战:用STOP2模式把功耗降到5uA以下(CubeMX配置详解)

本文详细介绍了如何在STM32L431电池供电项目中利用STOP2模式实现5μA以下的超低功耗设计。通过CubeMX配置、硬件优化和软件策略,成功将农业温湿度监测节点的待机功耗控制在4.7μA,确保CR2032电池供电下3年以上的工作寿命。文章包含完整的低功耗实现路径和实测数据,特别适合物联网边缘设备开发者参考。

weixin_30345577的博客 392

DSL与GPL

一、DSL 与 GPL DSL(Domain-Specified Language 领域特定语言),而与 DSL 相对的就是 GPL,最常见的 DSL 包括 Regex 以及 HTML & CSS 等。 没有计算和执行的概念; 其本身并不需要直接表示计算; 使用时只需要声明规则、事实以及某些元素之间的层级和关系; GPL(General Purpose Language 通用编程语言...

weixin_30835933的博客 240

Python Opencv cv2提取图像中某种特定颜色区域(例如黑字白纸背景下的红色公章提取),并将纯色背景透明化

拜拜PHOTOSHOP- 领导突然让我帮他把公章从图片中抠出来,在确保了不是要做坏事的情况下,我打开了PHOTOSHOP,用魔棒工具一点一点抠,但由于魔棒工具的原理是对比临近区域像素差值,导致封闭字体中的区域无法剔除,而且一点一点抠非常麻烦,愤而PYTHON,使用CV2完美解决。 效果如下(马赛克是我添加的): 任务就是把蓝色的公章抠出来。 效果如上。 代码如下: import cv2 import numpy as np src = cv2.imread(r"imagepath")#这里填你的原图像路

qq_43670549的博客 1万+

【转】开发者需要了解的领域特定语言(DSL)

转自:开发者需要了解的领域特定语言(DSL) - 知乎 领域特定语言是在特定领域下用于特定上下文的语言。作为开发者,很有必要了解领域特定语言的含义,以及为什么要使用特定领域语言。 领域特定语言domain-specific language (DSL)是一种旨在特定领域下的上下文的语言。这里的领域是指某种商业上的(例如银行业、保险业等)上下文,也可以指某种应用程序的(例如 Web 应用、数据库等)上下文。与之相比的另一个概念是 通用语言general-purpose language (GPL,LCTT

sinolover的专栏 4154

结合 Conda 手动安装 RepeatMasker

RepeatMasker 是一个广泛使用的生物信息学工具,用于识别和屏蔽(mask)基因组序列中的 重复序列(repeats) 。在使用过程中需要调用重复序列数据库(Repbase 和 Dfam),如果使用Conda安装的话会出现许多问题,因此推荐手动安装。在此记录我手动安装RepeatMasker的流程,希望对各位同学有所帮助。

m0_65437087的博客 2534

基于bootstrap+Java的图书管理系统(任务书)

10] 倪甜弟,周晓波,王相喜.基于JSP图书馆自习室预约系统的设计与实现[J].现代计算机, 2024, 30(9):117-120.DOI:10.3969/j.issn.1007-1423.2024.09.023.[2] 陈明雪,赵勇,周小丽,等.基于Node.js和Bootstrap的图书管理系统设计与研究[J].现代信息科技, 2021, 5(24):4.[9] 杨婷婷.基于VOSviewer的图书馆管理系统研究的可视化分析[J].现代信息科技, 2023, 7(3):123-126.

毕业作品网站 644

DSL和GPL的区别

DSL和GPL的区别 DSL(Domain Specified Language)领域专用语言。 GPL(General Purpose Language)通用编程语言 GPL也表示 General Public License,表示GUN的的开源许可证,在此,我们只讨论作为语言的GPL。 DSL 要理解DSL 分类需要先理解一个概念。“元语言抽象” 它是指通过一种语言来构建另一种语言。比如...

null 1629

手把手教你用AD9834 DDS模块DIY一个可调信号源(附AD原理图/PCB/程序)

本文详细介绍了如何使用AD9834 DDS模块DIY一个高精度可调信号源,涵盖硬件搭建、原理图解读、PCB优化和程序烧录等关键步骤。通过STM32控制实现0-10MHz频率范围输出,特别适合电子设计与射频实验,提供完整的AD原理图、PCB设计和程序代码参考。

weixin_31854867的博客 406

DSL 领域特定语言

一、DSL介绍 DSL(Domain Specific Language)是针对某一领域,具有受限表达性的一种计算机程序设计语言。 常用于聚焦指定的领域或问题,这就要求 DSL 具备强大的表现力,同时在使用起来要简单。说到DSL,大家也会自然的想到通用语言(如Java、C等)。 为什么没有一种语言同时 兼具『简洁』和『业务表达』能力呢? 从信息论本质上来讨论这个问题,每个语言的程序都可以抽象为一个字符串,每个字符串由有限数量的合法字符组成,它在运行时会实现某个功能,因而可以看作是一种需求的信源编码。每

Sunny的专栏 3万+

【Q1/论文复现】:利用 CHARLS 数据库考察抗高血压药物依从性和认知衰退

摘要: 北京大学团队基于CHARLS数据(2011-2018)的纵向研究发现,抗高血压药物高依从性能显著延缓中国45岁及以上社区中老年人的认知衰退。研究表明,坚持服药者7年内全局认知衰退速度降低0.014SD/年,记忆功能衰退减缓0.023SD/年,效果接近正常血压人群水平。研究还提示社会经济地位(SES)可能通过影响用药依从性间接调控认知衰老进程。该成果为高血压管理对认知保护提供了人群级证据,发表于《BMC Medicine》(DOI:10.1186/s12916-025-03949-8)。

dingdianbangni的博客 808

基于YOLOv5/v8/v10的垃圾分类识别系统:设计实现与性能优化(附代码+数据集)

做完这个毕设,你已经掌握了从数据准备、模型训练到界面开发的全流程。把模型部署到树莓派上,做个真正的“智能垃圾桶”硬件装置;加入语音提示功能,检测到垃圾后自动语音播报类别;试试融合多个YOLO模型的优势,让分类精度再上一个台阶。按照这个教程一步步做,你的毕设不仅能顺利完成,还能做出很多亮点。要是过程中遇到啥问题,别慌,慢慢琢磨或者咱们一起聊聊,肯定能把这个毕设做成让你满意的作品。

know_F0727的博客 461

什么是DSL?

优秀的程序员不仅关注代码的功能实现,还会关注代码的表达能力,他们善于将意图与实现分离,并保持两者的独立性。DSL 是一种强大的工具,它的设计理念不仅提升了特定领域的问题解决效率,也给了程序员更高效表达意图的方式。在日常开发中,学会用 DSL 的思维方式——即分离意图与实现,不仅有助于编写更好的代码,还能显著提升代码的可维护性和扩展性。不同于通用编程语言(如 Java、Python 等),DSL 更加简洁易懂,通常用来表达特定领域的意图和规则,使编写、阅读和维护代码的过程更加高效和直观。

pumpkin84514的博客 8755

TEA-Tiny Encryption算法在FPGA的实现

在FPGA原型中,我们定义了一个TEA_FPGA模块,该模块包含一个输入数据端口(plain)、一个输入密钥端口(key)和一个输出数据端口(cipher)。在模块中,我们通过32轮的循环处理来实现TEA算法的加密过程,并将最终结果存储在cipher变量中。由于FPGA硬件的高速性能,这种基于HDL的TEA算法实现可以在短时间内完成大量的数据加密处理,从而提高加密效率和性能。总之,在FPGA中实现TEA算法可以大大提高加密效率和性能,通过使用硬件描述语言HDL来实现可以更高效、更快速地完成数据加密操作。

BitSlinger的博客 272

手把手教你使用ANTLR和Go实现一门DSL语言(第一部分):设计DSL语法与文法

《使用ANTLR和Go实现DSL入门》[1]一文中,我们了解了DSL与通用编程语言(GPL)的差异、DSL解析器生成工具选择以及ANTLR文法的简要书写规则,并和大家一起完成了一个CSV解析器的例子。看完上述文章后,你是不是有了打造属于自己的DSL的冲动了呢!那么究竟该如何设计和实现一门自己的DSL呢?在这个系列文章中,我将“手把手”地和大家一起看看设计和实现一门DSL(...

TonyBai 2919

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

DSL-让你的 Ruby 代码更加优雅

DSL是Ruby这门语言较为广泛的用途之一,不过如果不熟悉Ruby的元编程的话,难免会被这类语法弄得一脸蒙蔽。今天主要就来看看DSL它是个什么东西,它在Ruby社区中地位怎么样,以及如何实现一门简单的DSL。 DSL与GPL DSL的全称是domain specific language-领域特定语言。顾名思义,它是一种用于特殊领域的语言。我们最熟悉的HTML其实就是专门用于组织页面结构的“语言”...

weixin_33816821的博客 257

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

[转]DSL-让你的 Ruby 代码更优秀

https://ruby-china.org/topics/38428 以下摘录 DSL和Gpl DSL : domain-specific language。比如HTML是用于组织网页的‘语言’, CSS专门调整页面样式的‘语言’。 SQL是数据库操作的‘语句’。 GPL: general-purpose language。通用目的语言。即不是为了特定领域设计的语言。R...

weixin_30332241的博客 132

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

开发者需要了解的领域特定语言(DSL)

领域特定语言是在特定领域下用于特定上下文的语言。作为开发者,很有必要了解领域特定语言的含义,以及为什么要使用特定领域语言。 领域特定语言 domain-specific language (DSL)是一种旨在特定领域下的上下文的语言。这里的领域是指某种商业上的(例如银行业、保险业等)上下文,也可以指某种应用程序的(例如 Web 应用、数据库等)上下文。与之相比的另一个概念是 通用语言 gener...

weixin_46302190的博客 1827

DSL 简介资料

DSL Domain Specific Language 领域特定语言 A specialized computer language designed for a specific task. 为了解决某一类任务而专门设计的计算机语言 Martin Fowler 对于领域特定语言的定义,DSL 通过在表达能力上做的妥协换取在某一领域内的高效。 最常见的 DSL 包括 Regex 、SQL、 HTML & CSS 一些共同的特点: 没有计算和执行的概念; 其本身并不需要直接表示计算; 使用时只需要

晨猫 357

(十)深度解析领域特定语言(DSL)第一章——DSL设计基本原则

本文探讨了DSL(领域特定语言)设计应遵循的核心原则。首先强调应借鉴通用编程语言的成熟语法规范,降低用户学习成本。其次提出"小即是美"理念,控制功能边界避免过度泛化。同时指出DSL需保持编程语言的本质特征,确保语法结构的严谨性与明晰性。此外,建议采用敏捷开发模式进行迭代设计,并强调严格测试的重要性。文章还提到应提供完善的错误提示、注释功能和版本信息等辅助特性。这些原则旨在平衡DSL的表达能力与易用性,使其真正成为提升开发效率的实用工具。

weixin_46217641的博客 5万+

域控 只能访问特定网址_开发人员需要了解的特定于域的语言

域控 只能访问特定网址 特定领域语言 (DSL)是一种旨在在特定域的上下文中使用的语言。 域可以是业务上下文(例如,银行,保险等)或应用程序上下文(例如,Web应用程序,数据库等)。相反,通用语言(GPL)可以用于多种商业问题和应用范围。 DSL不会试图让所有人满意。 相反,它是为有限的适用性和使用范围创建的,但是它具有足够的功能来表示和解决该领域中的问题和解决方案。 DSL的一个很好的例子...

cuml0912的博客 445

一、 Gradle和Groovy的引入

Groovy是一种JVM语言,它可以编译为与Java相同的字节码,然后将字节码文件交给JVM去执行,并且可以与Java类无缝地互操作,Groovy可以透明地与Java库和代码交互,可以使用Java所有的库。Groovy尚未成为主流的开发语言,但是它已经在测试(由于其简化的语法和元编程功能)和构建系统中占据了一席之地。而与 DSL 相对的就是 GPL,是General Purpose Language 的简称,即通用编程语言,也就是我们非常熟悉的Java、Python 以及 C 语言等等。

wei7a7a7a的博客 227

Android 与gradle常见相关问题及解答(1)

在使用android studio 开发的过程中,经常遇到一些和 gradle  相关的问题,本文结合自身经验,做一总结 1.什么是DSL(Domain-specific language) A Domain-specific language (DSL) is a computer language specialized to a particular application d

perfectnihil的博客 277

Atitit 多语言互相调用总结mltlan invk现在我们开发项目往往会采用多种语言,各取所长 组合使用。。常常需要互相调用为什么会调用多种语言?1.开发效率与可读性 ,一种情况是实现同

Atitit 多语言互相调用总结mltlan invk 现在我们开发项目往往会采用多种语言,各取所长 组合使用。。常常需要互相调用 为什么会调用多种语言? 1.开发效率与可读性 ,一种情况是实现同样功能或模块,使用另外一种语言更加方便简洁。 功能性,还有可能本语言缺失某些类库或有缺陷,而另外语言恰好有。。 要实现某功能或模块,发现已经有了,但是是另外一种语言写的,此时只需要集成调用即可 项目体积,不同语言的类似类库体积可能相差很大 可维护性 性能 稳定性等需要 目录 1. 其中又

attilax的专栏 363

编译原理ch09-语义分析-符号表

符号表是用于保存各种信息的数据结构第几行进行的声明和定义,在第几行被用到过。

NJUSE 风间的博客 1914

UniHacker:跨平台 Unity 激活工具全解,从原理到上手

UniHacker 是一款基于 C# 开发的 Unity 激活工具,通过修改编辑器二进制文件与生成本地许可证文件,为 Windows、macOS、Linux 上的 4.x 至 2022.1 版本 Unity 解除许可验证,适合教学、测试与个人研究场景。 ## 项目概览 UniHacker 的定位很直接:一个图形化工具,替你完成"定位字节 → 修改字节 → 生成许可证"的全过程。它用 .NET

gitblog_01192的博客 357

DSL的概念

DSL:以极其高效的方式描述特定领域的对象、规则和运行方式的语言。 需要有特定的解释器与其配合。 高效简洁的领域语言,与通用语言相比能极大降级理解和使用难度,同时极大提高开发效率的语言。 能够描述特定领域的世界观和方法论的语言。 DSL 通过在表达能力上做的妥协换取在某一领域内的高效。 而有限的表达能力就成为了 GPL 和 DSL 之间的一条界限。 谈谈 DSL 以及 ...

diaoju3333的博客 1735
上一篇: RPC原理
下一篇: ELK第八篇:ElasticSearch: Index 和 Type 的区别
牧竹子
博客等级 码龄17年 572粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值