`
pengpeng
  • 浏览: 82387 次
  • 性别: 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-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 ...

    elasticSearch查询语句DSL

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

    LSM6DSL应用手册

    本文档详细的讲解了LSM6DSL的详细配置,其中讲解了数据的读取,唤醒模式,计步功能等。

    DSL工程示范站,DSL规范

    DSL工程示范站,DSL图片规划,标准化施工

    DSL测试方案.

    针对宽带DSL接入方式下的运营维护的难题,结合开发工作,介绍在DsL接入方式下自动测试的解决方案,对其中的技术要点做重点讨论。

    DSL论坛-DSL介绍

    这是DSL论坛的一篇学习资料,通过该文档可以让我们对DSL有一些初步的概念和认识

    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 ...

    840DSL编程手册

    840DSL编程手册

    DSL解说

    DSL有两种类型的用途:一种是ADSL(非对称数字用户环线),用于要求很快的下载速度,但上传速度较慢可以接受的互联网接入领域;还有一种是SDSL(对称数字用户环线),用于对下载和上传速度都有较高要求的短距离网络...

    西门子840 Dsl 调试ppt

    西门子840 Dsl 调试ppt 西门子840 Dsl 调试ppt 西门子840 Dsl 调试ppt

    dsl最新版本441

    可以用来构架最小WEB服务器,包括ftp/www等应用

    840DSL操作手册

    840DSL是西门子公司推出的一款高端系统,本说明书可以帮助操作人员

    lsm6dsl源码

    STM32f4的LSM6DSL程序,SPI驱动等,包含数据手册

    840dsl简明手册

    840dsl简明手册,电子书,PDF,容易看懂,系统简介,上手容易

    用Groovy实现DSL领域定义语言

    本系列文章是从原著《Groovy For Domain-Specific Languages》(原作者: Fergal Dearle)中翻译而来,从中加入了一些本人自己的读书笔记和理解。本系列文章不为任何商业目的,只为更好的传播 groovy dsl 技术知识。...

    dsl8b20仿真程序

    dsl8b20在proteus下的仿真程序

    840Dsl 五轴功能调试

    840Dsl数控系统 五轴功能的调试方法,详细介绍了相关功能和参数的设置

    840dsl开机手册

    西门子840Dsl开机调试用手册

    840Dsl v4.5 toolbox

    840DSL v4.5 toolbox 最新版 适用 NCU730.3PN

Global site tag (gtag.js) - Google Analytics