首先是MartinFowler的一则blog(
http://martinfowler.com/bliki/): 元编程系统(MetaProgrammingSystem)SergeyDmitriev是JetBrains的领导之一,JetBrains给我们提供了诸如IntelliJIdea和ReSharper等众多优秀的工具。Sergey在最近发表的一篇文章中提到了他在元编程系统上的探索。他认为这是范围更广的面向语言编程(LanguageOrientedProgramming)的一个例子。
Martin的blog中DomainSpecificLanguage是有关DSL的他的blog。
其实DSL的兴起一点都不意外。个人觉得这时MDA迅速发展的一个必然产物。MDA发展的一个基础是OMG意外地发现了UML的兴隆,想当年OMG可是一心扑在CORBA上的,结果这个亲生儿子不争气,从Rational过来的UML这个遗腹子反而受欢迎得不得了。因此OMG要基于UML作为建模的基础,来作为和中间技术平台无关的建模语言。
但OMG很快明智地发现,任何一个试图大而全的举动都是危险的。CORBA如是,UML也如是,因此OMG开始协调UML和MOF之间的关系,MOF起初是以UML和CORBA之间的桥梁身份出现的,但这个身份很快过时了。现在的MOF是MDA的基础,是所有元模型的定义语言。什么是元模型呢?就是基于MOF为各个领域的特定建模需求所定义的领域建模语言,就是DSL。
其实说来,目前流行的意图编程(IntentionalProgramming)、软件生产线等都有DSL的思想。微软雄心勃勃的白马计划更是如此。看看VSTS的KeithShort的blog就知道了。
分享到:
相关推荐
intelliJ IntelliJ中DSL的可视编辑器/执行器plugin-netbeans Netbeans中DSL的可视编辑器/执行器参考DSL: : 图: : Scala: : Intellij插件: ://bjorn.tipling.com/how-to-make-an-intellij-idea-plugin-in-30...
Maven坐标:cn.tenmg:dsl:1.2.7; 标签:tenmg、dsl、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释...
Splunk-SPL-to-ElasticSearch-DSL 基于 Splunk 的 SPL 查询语言转换成 ElasticSearch 的 DSL。 转换结果和 对齐。 可以配置 进行表达式搜索。 Usage const converter = require("./lib/converter") try { const { ...
ContextMapper是一个开放源代码工具,提供基于域驱动设计(DDD)模式的特定于域的语言,用于上下文映射和服务分解。 使用ContextMapper DSL语言,您可以表达DDD上下文映射。 使用该语言对系统建模之后,就可以使用...
- **标题**: "groovy 一个不错的文档 实现dsl" - **描述**: "groovy 一个不错的文档 实现dsl" 标题与描述均指向了一个关于如何使用Groovy语言实现领域特定语言(Domain-Specific Language, DSL)的文档。这表明文档...
一个简单的在交易所下订单的测试用例可能看起来像: package com.lmax.exchange.acceptance.test.api; import com.lmax.exchange.acceptance.dsl.DslTestCase; import org.junit.Before; import o
一个提供DSL来构建SSML的kotlin库。 支持对Google元素的操作。 开始吧 这进入到build.gradle 。 dependencies { compile ' com.mirego.dsl:ssml:1.1 ' } 用法 val ssml = speak { + " Here are " ; sayAs...
在这个项目中,我们聚焦于一个使用Java实现的DSL解释器的设计与实现,这是一份面向北京邮电大学(BUPU)学生的期末课程设计。 首先,我们要理解DSL的概念。DSL可以分为内部DSL和外部DSL。内部DSL通常嵌入到一个更大...
例如,一个构建XML的DSL可能允许你这样写: ```groovy xml { element1 'value1' element2 { subElement 'value2' } } ``` 这样的DSL清晰易读,而且与XML结构对应。 2. **使用方法名映射**: Groovy支持...
css-dsl :用于CSS框架的DSL 而不是像这样的字符串式,嘈杂的代码, < .div( ^.cls : = ( " panel hidden-xs panel- " + ( if (success) " success " else " default " )), < .div( ^.cls : = " panel-...
DSL 可以从一个目录中的单个文件或多个文件加载; OptionsDSL 类需要以下内容 config = { :directory => '/my/directory/of/rules', # the full path to the directory, :extensions => '*.ddl' # the regex to ...
标题"scala-cypher-dsl:一种用于Scala的类型安全的密码查询语言DSL"表明我们正在讨论一个项目或库,它允许使用Scala编程语言编写类型安全的Cypher查询。Cypher是一种专门用于Neo4j图形数据库的查询语言,用于处理...
在本案例中,"dsl:用于构建验证的DSL"指的是一个专为构建验证逻辑定制的语言。通常,DSL可以简化复杂操作,使得非程序员或者领域专家也能理解和使用。 DSLs分为内部DSL和外部DSL。内部DSL是嵌入在一种通用编程语言...
#### 一、DSL技术简介 DSL(Digital Subscriber Line,数字用户线路)是一种通过传统电话线提供高速数据传输的技术。它利用现有的铜线电话网络,在不干扰普通电话服务的情况下,实现宽带互联网接入。DSL技术在世界...
Neo4j Cypher-DSL 当前形式的Neo4j Cypher-DSL是Spring Data Neo4j的衍生产品 :high_voltage: RX,用于生成所有...入门添加必要的依赖关系首先,在以下坐标下包含对Neo4j Cypher-DSL的依赖关系: org.neo4j:neo4j-cyp
休息-测试-dsl 它是一个基于 moco 和 dispatch 的用于 restful 客户端和服务器的测试 DSL。 (从 scala2.10.4 开始) 它还支持actor模式(稍后将支持Akka actor)使scalacheck风格的测试用例更快使用 DSL 测试 REST ...
《Glagol DSL:借助领域驱动设计的力量》 在IT行业中,领域驱动设计(Domain-Driven Design,简称DDD)是一种先进的软件开发方法论,旨在通过深入理解业务领域,以领域模型为核心来指导软件的设计和开发。Glagol ...
用于构建自定义DSL。 设置 $ npm install --save linear-dsl 用法 解析自定义DSL查询。 const dsl = require ( 'linear-dsl' ) ; let data = dsl . parse ( 'a(foo) AND b(2 bars) OR c(4)' ) ; 验证查询映射。 ...
《Android-Gradle-DSL:Gradle Android 插件的领域特定语言详解》 在现代Android开发中,Gradle已成为构建、编译和管理项目的主要工具。Gradle的灵活性和强大的功能,很大程度上得益于它的领域特定语言(DSL),即...
compile ' com.github.babedev.dexter.dsl:dsl:1.0.3 ' .. } 样本 runtimePermission { permission( Manifest .permission. READ_EXTERNAL_STORAGE ) { granted { toast( " Permission granted " ) } denied ...