`
summersmile
  • 浏览: 48692 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

如何轻松构建DSL(一)

阅读更多

编译原理相对来说都是很难的一门技术,但是在实际中却非常有用,很多时候,我们并不止是在编程的时候才与它打交道,对于很多系统级的软件来说,为了解决一个领域的问题,往往都会有自己的一套脚本语言,可以由使用者按照自己想要的方式去使用它,这样就让这个系统的功能不再是限定在你所开发的功能上,因为作为系统的开发者来说,你开发的功能肯定是有限的,但是一旦有了DSL,普通用户也可以贡献自己的智慧,来开发功能了,有点类似UGC的赶脚。

普通人最常接触到的DSL,我觉得应该是office的VBA,刚工作的时候做的第一个项目是一个VBA的项目,一开始的感觉是VBA那就是小孩子,小白,菜鸟用的编程语言,我这种专业的开发人员搞这个?后来在实际使用的过程中,感叹微软的Office的强大,你需要在office软件里做什么,你都可以用脚本记录下来,可以按照你想要的方式让office去工作,每一个行,列,公式,操作,都有对应的函数来做,各种丰富的脚本论坛,你可以借用前人的智慧,这种劳动在Office的使用者之间可以交换。所以,如果没有VBA,我们只能用鼠标来操作,却不能记录和保持传播,不能跨越时空的传递这种智慧,所以一个DSL对于一个系统软件来说,就如同文字对于人类的发展,有些文明是有语言但是没有文字的,这种文明就只能口耳相传,跟有文字的文明根本就不是一个level的,所以WPS跟office,那就不是一个级别的。

分享到:
评论

相关推荐

    Simple-DSL:用Java编写简单的DSL的实用程序

    DSL的其余部分在很大程度上取决于被测系统,但是提供了许多模式,这些模式已被证明可以成功地构建经得起时间考验的DSL。 例子 一个简单的在交易所下订单的测试用例可能看起来像: package ...

    scala-swt-builder:Scala SWT 构建器 DSL

    Scala SWT 构建器 DSL 该项目试图为 SWT GUI 创建 DSL。 版本 该项目正在开发中(尚未准备好使用)。 它目前支持创建大多数 SWT 小部件。 我也想加入事件处理(目前只实现了onSelect )。 安装(SBT 0.13.6+) 在 ...

    awsdsl:用于在AWS上部署和运行应用程序的简单DSL

    就是说,您已经在使用OpsWorks,就可以轻松开始使用AWS DSL。安装目前,我建议使用Bundler安装和管理AWS DSL。 只需将其添加到您的Gemfile中即可使用开发版本gem 'awsdsl' , git : '...

    dsl4xml:通过镜像文档结构的DSL轻松快速地将XML和JSON编组为Java对象

    轻松快速地将XML(和JSON)解组到Java DOM解析倾向于使代码易于读取和编写,但是非常慢,占用大量内存并生成大量垃圾。 SAX和“拉”式解析往往非常快,内存需求显着降低,并且通常产生更少的垃圾,但是可能导致...

    ElasticsearchDSL:查询Elasticsearch的DSL库

    您可以轻松构建任何Elasticsearch查询并将其转换为数组。 如果您需要任何帮助,则是询问ONGR支持问题的首选和推荐方法。 如果您喜欢这个图书馆,请帮我买一杯咖啡来开发它版本矩阵Elasticsearch版本...

    DiagramDSL:方便的DSL构建图

    图DSL 允许您轻松创建图的DSL(现在仅是类图)。语法计划:: = [声明] * STATEMENT::= [CLASSDEC METHODDEC *] + CLASSDEC ::= [class | 抽象类| 界面]? CLASSNAME [RELATION]? 关系::= [扩展CLASSNAME | ...

    easy_search:提供了一个很好且简单的 DSL 来搜索 ActiveRecord 模型

    因为为一件简单的事情构建DSL接口很有趣。 这实际上很有趣。 另外,我认为这是开始创建更大的东西的一个合理的地方。 总的来说,这个插件或多或少是我玩弄 Ruby 活力的结果:-) 安装 您可以将其安装为 Rails 插件。 ...

    julia_builder:使用灵活的DSL轻松将查询导出到csv

    Julia可以帮助您创建灵活的构建器,以轻松地将您的查询导出到csv(目前)。 安装 将此行添加到您的应用程序的Gemfile中: gem 'julia_builder' 然后执行: $ bundle 或将其自己安装为: $ gem install julia_...

    mirage:Web DSL和命令行工具,可轻松编写简单的HTTP服务器

    Web DSL轻松创建简单的HTTP服务器 特征 DSL语法:人类可读的语法,让我们更加直观地编写我们需要提供的HTTP服务器。 Data Faker:添加来生成模拟数据,例如名称,地址和电话号码。 开箱即用:简单安装后,无需...

    prolly:用 DSL 来表达和查询代码中的概率

    Prolly 是一种领域特定语言 (DSL),用于在代码中表达概率。 就像数据库具有查询语言 (SQL) 一样,这是一种查询语言,专门用于根据您之前看到的样本回答有关事件概率的问题。 因此,您不必自己计算所有事件,而只需...

    bodybuilder:Elasticsearch查询主体构建器

    使用简单,可预测的api轻松构建用于Elasticsearch的复杂查询。文献资料查看以获取详细信息和示例。 使用来测试您的构造。Elasticsearch兼容性当前旨在支持所有版本的完整Elasticsearch查询DSL。 通过调用build函数...

    cfhighlander:Cloudformation DSL和组件库

    介绍 Cfhighlander是功能丰富的工具和DSL...必须手动完成将输出值从一个子堆栈传递到根堆栈中的另一个子堆栈的操作-如果您是手动构建JSON / YAML模板,或者使用Cfndsl 。 使用cfhighlander,将自动为您生成此代码 ## p

    angularjs-gsTimelines:创建动画 DSL 以使用动画时间线构建复杂的 UX 转换

    设计一个 AngularJS 动画 DSL概括目标是为 AngularJS 开发下一代动画层,具有轻松开发复杂、丰富的用户体验的功能和能力。 基于对现实世界动画设计样本的实验和探索,将衍生出新的动画时间线API 和易于使用的DSL ; ...

    GraphQLicious:具有DSL的快速组件,用于声明GraphQL查询并从中获取字符串表示形式

    GraphQLicious GraphQLicious是一个快速组件,它提供了一种直观且方便的方法来构建GraphQL查询并将其轻松转换为String表示形式。 [![iOS 8]( )]()内容安装迦太基GraphQLicious支持Carthage。 要安装它,只需将...

    什么是gradle,及其的作用.md

    它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置,主要面向Java应用。然而,Gradle并不局限于Java,当前其支持的语言还包括C++...

    poncho, 轻松创建 REST api.zip

    poncho, 轻松创建 REST api 披风Poncho是构建API的API,换句话说,就是一个构建REST接口的DSL 。它将验证输入和输出,强制值,并且易于扩展自定义数据类型。它与任何基于机架的框架兼容,如 Rails 或者 Sinatra 。...

    dagr:基于Scala的DSL和框架,用于将生物信息学管道作为有向非循环GRaph进行编写和执行

    一种用于有向无环图的任务和管道执行系统,以支持科学(尤其是基因组分析)工作流。 我们目前处于alpha开发阶段; 请参阅。 最新的API文档可在找到。 使用DAGR - DAGR中的功能和概念文档 目标 有许多工具包可用于...

    gradle-cmake-plugin:一个gradle插件,可以轻松地从gradle构建脚本调用CMake

    gradle-cmake-plugin 该插件允许使用CMake进行配置和构建。 该插件应按文档所述工作,但处于早期开发阶段。 如果您有要求或发现错误,请创建一个问题。先决条件CMake已安装在系统上。 可用。要应用插件: 插件DSL ...

    rumrunner:基于Rake的实用程序,用于构建多阶段Dockerfile

    rum可执行文件使用户可以轻松地调用构建,将外壳装入特定的调试阶段以及从构建的容器中导出工件。 Rum Runner具有以下功能: 与Rake完全兼容 类似于Rake的DSL / CLI,可对构建进行简单注释和执行 Rumfiles是完全...

    rubydns:用于构建有趣的高性能DNS服务器的DSL

    RubyDNS是一种高性能DNS服务器,可以轻松集成到其他项目中或用作独立的守护程序。 默认情况下,它使用基于规则的模式匹配。 可以根据需要对结果进行硬编码,计算,从远程DNS服务器获取或从本地缓存获取。 安装 将...

Global site tag (gtag.js) - Google Analytics