DSL(Domain Specific language)

DSL(Domain Specific language)
在真正了解领域模型(领域内的概念类或现实世界中对象的可视化表示的模型)前对DSL还不太了解。
最近正好在支持一个项目做领域建模,正好写点我对DSL的理解。
DSL如果按照机器翻译多半叫做:领域定义语言....
我理解DSL就是一种描述现实问题的语言,用这种语言去实现现实业务和代码逻辑的桥梁。
我理解的DSL的位置在业务模型和软件模型之间。
实际业务---领域建模(DSL)---软件模型(UML)----程序代码(C# , VB.NET , Java ...)
下面用一个实际例子来描述DSL的作用
(1) 业务场景:
如果某销售的销售业绩超过1800K,那么该员工就可以获得晋升。
(2) DSL来定义这样一个业务:

foreach [Sales]
if (total [Amount] of [The Sale] > 1800K)
   [The Sale] do a [Promotion] .
end if
end foreach

(3) 对象模型:

Sale
|--Name(String)
|--Amount(Int)
HRInterface
|--IDoPromotion(Sale theSale);
|--List<Sale> GetAllSales();

(4) 程序代码:
.....函数部分代码略

.......................
List<Sale> sales = GetAllSales();
foreach(Sale sale in  sales){
   if(sale.amount > 1800){
       DoPromotion();
   }
} 

所以我理解DSL本身不是一个新的语言,也没有具体规则。

仅仅是为了方便我们理解业务模型的辅助工具而已。


转自:http://8376eric.blog.163.com/blog/static/9301693200810239166461/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
高清英文PDF版。 DSL领域的丰碑之作,软件开发“教父”Martin Fowler历时多年的心血结晶,ThoughtWorks中国翻译。    全面详尽地讲解各种DSL及其构造方式,揭示与编程语言无关的通用原则和模式,阐释如何通过DSL有效提高开发人员的生产力以及增进与领域专家的有效沟通。 《领域特定语言》是dsl领域的丰碑之作,由世界级软件开发大师和软件开发“教父”martin fowler历时多年写作而成,thoughtworks中国翻译。全面详尽地讲解了各种dsl及其构造方式,揭示了与编程语言无关的通用原则和模式,阐释了如何通过dsl有效提高开发人员的生产力以及增进与领域专家的有效沟通,能为开发人员选择和使用dsl提供有效的决策依据和指导方法。    全书共57章,分为六个部分:第一部分介绍了什么是dsldsl的用途,如何实现外部ds和内部dsl,如何生成代码,语言工作台的使用方法;第二部分介绍了各种dsl,分别讲述了语义模型、符号表、语境变量、构造型生成器、宏和通知的工作原理和使用场景;第三部分分别揭示分隔符指导翻译、语法指导翻译、bnf、易于正则表达式表的词法分析器、递归下降法词法分析器、解析器组合子、解析器生成器、树的构建、嵌入式语法翻译、内嵌解释器、外加代码等;第四部分介绍了表达式生成器、函数序列、嵌套函数、方法级联、对象范围、闭包、嵌套闭包、标注、解析数操作、类符号表、文本润色、字面量扩展的工作原理和使用场景;第五部分介绍了适应性模型、决策表、依赖网络、产生式规则系统、状态机等计算模型的工作原理和使用场景;第六部分介绍了基于转换器的代码生成、模板化的生成器、嵌入助手、基于模型的代码生成、无视模型的代码生成和代沟等内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值