首先是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”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释...
一个简单的在交易所下订单的测试用例可能看起来像: 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...
scala-cypher-dsl:一种用于Scala的类型安全的密码查询语言DSL
ContextMapper是一个开放源代码工具,提供基于域驱动设计(DDD)模式的特定于域的语言,用于上下文映射和服务分解。 使用ContextMapper DSL语言,您可以表达DDD上下文映射。 使用该语言对系统建模之后,就可以使用...
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 ...
nim-html-dsl:Nim HTML 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 ...
用于构建自定义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)' ) ; 验证查询映射。 ...
compile ' com.github.babedev.dexter.dsl:dsl:1.0.3 ' .. } 样本 runtimePermission { permission( Manifest .permission. READ_EXTERNAL_STORAGE ) { granted { toast( " Permission granted " ) } denied ...
DSL-JSON库最快的JVM(Java / Android / Scala / Kotlin)JSON库,具有高级编译时数据绑定支持。 与DSL平台兼容。 专为提高性能而设计的Java JSON库。 使用DSL平台编译器为侵入式软件构建而构建。特色支持外部架构-...
Django Elasticsearch DSL Django Elasticsearch DSL是一个软件包,它允许在Elasticsearch中索引Django模型。 它是作为的薄包装而构建的,因此您可以使用elasticsearch-dsl-py团队开发的所有功能。 您可以在查看完整...
用于 graphql-java 的 Kotlin GraphQL 测试 DSL 这是一个 kotlin DSL,可轻松为您的应用程序编写(集成)测试。 它受到启发,让您可以使用从响应中快速检索结果。GradletestImplementation( " ...
WSDL-DSL是一种特定于域的语言,它重用了WSDL语法的基本部分,从而很容易将WSDL类型表示为QuickCheck生成器。 依存关系 为了使用wsdl_dsl您需要许可证。 编译中 编译过程委托,但它包装在Makefile中。 您需要访问...
family-tree-dsl:Kotlin DSL,用于建立家谱
Matsu 是一个用于构建 SPARQL 查询的 DSL: ( query ( select :person ) ( where :person a [ :foaf :Person ] \; [ :foaf :mbox ] ( URI. " mailto:me@me.com " ) \.)) 这将产生以下字符串: PREFIX foaf: ...
一个用于以功能方式验证通用数据的库。 基本思路 这个想法很简单。 一切都围绕以下界面 interface Validation { public function validate ( $ data ): ValidationResult ; } 在其中输入一些$data并显示...