`
pengpeng
  • 浏览: 84878 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[原]认识DSL

 
阅读更多

 

 

         “我们应该学习那些科学家发现和解决问题的思维过程,而不应该直接灌输理论知识。”

         “大学精神的本质,并不是为了让我们变得深奥,而恰恰是恢复人类的天真".----刘瑜

         ”一个人的语言的世界,既是这个人的世界";

                                                                                                                      ------------------------引子

 

 

         数学家莱布尼茨提出了以下问题:

         1) 创建一种可以描述所有问题的”通用“语言;

         2)找出一种可定义的方法去解决用这种”通用“语言描述的所有问题(算法);

          莱布尼茨的问题是:是否存在一种”通用“语言描述来解决所有问题?

 

         1936年,阿兰·图灵引入的图灵机和阿隆佐·邱奇的lambda演算论文几乎同时证明了算法的“可计算性”;即任何计算或算法都可以用一台图灵机来执行。而现在的基于冯·洛依曼机器模型既是一个带寄存器状态机的图灵机器。从对问题领域的分析,到对所研究问题的恰当表述的过程既是DSL思想;而最终对于“可计算性”这个问题用计算机机器表述出来。可以说计算机的发明就是一个针对”可计算性问题“的一个伟大DSL;为计算机产生奠定了理论基础。

         图灵机的描述更偏重硬件层面的表述,而lambda演算更偏重软件层面的表述。

         构筑于“图灵机”理论上的冯·洛依曼思想衍生出许多命令式程序设计语言:汇编语言,Fortran,c,java等等。

          lambda演算理论衍生出了lisp系列的函数式程序设计语言:scheme,common-lisp;elisp等。

 

           言归正传,开始讲DSL(domain specific language),比较官方的定义为:侧重特定领域的表达有限的计算机编程语言。我们日常接触的各个方面的编程语言既是DSL,比如sql语句就是数据库查询的DSL, shell语言是与操作系统交互的DSL,java,ruby使程序员在更高的抽象层面专注业务逻辑编码;等等。

            DSL的特点,在所关注的领域易于阅读,理解的语言。因为封装了domain细节,屏蔽复杂性,提供上层操作方法,所以更易于表述人对这个业务的的理解的语言。

           DSL的实现:

                   1. 利用现有语言进行元编程;(比如:我们web开发常用的一些ssh框架,而语言层面,lisp,ruby这些语言的宏编程直接提供元编程能力)

                   2. 使用编译工具;可以使用lex,yacc,或者javacc,antlr等帮助我们建立新语言的描述和解释。比如antlr提供了词法描述,语法描述,各种目标语言(java,c,c++)的词法分析器,语法分析器生成。利用他你可以实现一个完整的语言。在各种建模工具逆向工程,比如通过代码生成图表描述的工具uml,powerdesign)等都可以看到他的身影;

                   3. 自己设计语言的规范并实现编译器;

 

 

 

                                                     ------------- 转载请注明出处:老徐

 

分享到:
评论

相关推荐

    DSL论坛-DSL介绍

    ### DSL技术概述与演变 #### 一、DSL技术简介 DSL(Digital Subscriber Line,数字用户线路)是一种通过传统电话线提供高速数据传输的技术。它利用现有的铜线电话网络,在不干扰普通电话服务的情况下,实现宽带...

    LSM6DSL应用手册

    LSM6DSL是一款由STMicroelectronics生产的高性能惯性测量模块,具有多种传感器功能,包括3D加速度计和3D陀螺仪,它们被封装在一个系统内。本文手册主要提供了关于LSM6DSL的使用信息和应用提示,深入讲解了如何进行...

    dsl-1.2.7-API文档-中文版.zip

    赠送原API文档:dsl-1.2.7-javadoc.jar; 赠送源代码:dsl-1.2.7-sources.jar; 赠送Maven依赖信息文件:dsl-1.2.7.pom; 包含翻译后的API文档:dsl-1.2.7-javadoc-API文档-中文(简体)版.zip; Maven坐标:...

    LSM6DSL I2C总线驱动

    ST原厂LSM6DSL I2C总线驱动 In the 'driver' folder there are the driver files of Mems Sensor (.h and .c) to be included in your project. Driver documentation can be generate using Doxigen tool. The ...

    KotlinDSL.zip

    【标题】Kotlin DSL Kotlin DSL(Domain Specific Language)是一种使用Kotlin语言构建的特定领域语言,它允许我们以更简洁、更直观的方式编写构建脚本,特别是针对Gradle构建系统。在Android开发中,Kotlin DSL...

    DSL测试方案.

    DSL测试方案的知识点涵盖了宽带DSL接入方式下的运营维护问题,并提出了相应的自动测试解决方案以及对其中的关键技术点进行讨论。以下是对文中提及的关键知识点的详细说明: 1. DSL测试的背景与意义 - 宽带DSL接入...

    elasticSearch查询语句DSL

    在这篇资源中,我们将详细介绍如何使用DSL来构建复杂的查询语句,以满足各种搜索需求。首先,我们将学习DSL的基本结构和语法规则,包括查询、过滤器、聚合和排序等核心概念。通过深入了解DSL的语法,您将能够灵活地...

    840Dsl v4.5 toolbox

    840DSL v4.5 Toolbox 是一个专为西门子NCU730.3PN设计的软件工具集,它提供了对840DSL数控系统进行编程、诊断和维护的功能。840DSL是西门子的一款高端数控系统,广泛应用于精密加工中心和重型机床。这个版本的...

    lsm6dsl源码

    LSM6DSL是一款由意法半导体(STMicroelectronics)生产的六轴传感器,集成了三轴加速度计和三轴陀螺仪。它被广泛应用于移动设备、无人机、物联网(IoT)设备以及需要运动检测和姿态估计的各种系统中。STM32F4系列微...

    dsl.rar_dsl

    DSL(Domain-Specific Language,领域特定语言)是一种为了特定应用领域设计的计算机语言,它通常比通用编程语言更简洁、直观,更容易理解。在VHDL(Very High-Speed Integrated Circuit Hardware Description ...

    groovy 一个不错的文档 实现dsl

    ### Groovy实现领域特定语言(DSL)的知识点详解 #### 标题与描述解析 - **标题**: "groovy 一个不错的文档 实现dsl" - **描述**: "groovy 一个不错的文档 实现dsl" 标题与描述均指向了一个关于如何使用Groovy语言...

    packet tracer dsl modeml连接实验

    Packet Tracer DSL.Modem 连接实验 Packet Tracer DSL.Modem 连接实验是使用 Packet Tracer 软件模拟远程拨号通信,连接两台远程主机,使其能互相通信的实验。实验中使用了 DSL.Modem 和云图,连接网络,模拟远程...

    西门子840DSL调试

    西门子840DSL数控系统是西门子公司生产的一款先进的数控系统,广泛应用于机床制造业和设备维修行业。该系统以其高精度、高稳定性和强大的功能而受到业界的广泛好评。 西门子840DSL数控系统的调试是一个复杂的过程,...

    lsm6dsl_官方驱动+中英文文档.7z

    LSM6DSL是意法半导体(STMicroelectronics)推出的一款高度集成的六轴传感器,集成了3D加速度计和3D陀螺仪。这款传感器广泛应用于移动设备、物联网(IoT)、穿戴设备、机器人、无人机以及健康监测等领域,提供精确的...

    840Dsl读取S120电流步骤

    西门子840D/840DSL机床伺服电机电流速度读取步骤详解 西门子840D/840DSL机床伺服电机电流速度读取是许多初学者难以掌握的技术难点。本文将详细介绍如何通过西门子840D/840DSL机床伺服电机电流速度读取步骤,希望...

    ubuntu10.04 DSL 上网攻略 pdf

    ### Ubuntu 10.04 DSL 上网配置详解 #### 引言 随着Linux操作系统的日益普及,越来越多的用户开始尝试使用Linux系统替代传统的Windows操作系统。对于初学者而言,Linux的强大功能与灵活性往往伴随着较高的学习曲线...

    Groovy DSL

    ### Groovy DSL:基于领域的特定语言开发指南 #### Groovy简介 Groovy是一种基于Java平台的灵活、强大的脚本语言,它与Java高度兼容...随着越来越多的企业和个人认识到DSL的价值,Groovy在未来的发展前景将更加广阔。

    802Dsl 简明调试 2008.02

    802DSL是一种专为数控系统设计的调试工具,主要用于802DSL数控系统的安装与调试过程。在本文中,我们将深入探讨802DSL简明调试2008.02版本的相关知识点,帮助读者理解和掌握其核心功能和操作流程。 首先,802DSL...

    西门子840Dsl利用PC备份PCU50的数据

    ### 西门子840Dsl利用PC备份PCU50的数据 #### 知识点一:西门子840Dsl简介与特点 西门子840Dsl是一款高端数控系统,适用于复杂加工任务,如车削、铣削等。该系统具有高度的灵活性和可扩展性,能够满足不同工业应用...

    Android代码-Android RecyclerView的DSL库。

    Build RecyclerView With DSL > Let's talk about how to use DSL in RecyclerView, this framework has been widely used in my project. It could help you build RecyclerView List in DSL Style like Anko ...

Global site tag (gtag.js) - Google Analytics