图书介绍

领域专用语言实战2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

领域专用语言实战
  • DebasishGhosh著;郭晓刚译 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115331748
  • 出版时间:2013
  • 标注页数:292页
  • 文件大小:75MB
  • 文件页数:310页
  • 主题词:

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

领域专用语言实战PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第一部分 领域专用语言入门2

第1章 初识DSL2

1.1 问题域与解答域2

1.1.1 问题域3

1.1.2 解答域3

1.2 领域建模:确立共通的语汇4

1.3 初窥DSL6

1.3.1 何为DSL7

1.3.2 流行的几种DSL8

1.3.3 DSL的结构10

1.4 DSL的执行模型11

1.5 DSL的分类13

1.5.1 内部DSL13

1.5.2 外部DSL14

1.5.3 非文本DSL15

1.6 何时需要DSL15

1.6.1 优点16

1.6.2 缺点16

1.7 DSL与抽象设计17

1.8 小结18

1.9 参考文献18

第2章 现实中的DSL19

2.1 打造首个Java DSL20

2.1.1 确立共通语汇21

2.1.2 用Java完成的首个实现21

2.2 创造更友好的DSL24

2.2.1 用XML实现领域的外部化25

2.2.2 Groovy:更具表现力的实现语言25

2.2.3 执行Groovy DSL27

2.3 DSL实现模式28

2.3.1 内部DSL模式:共性与差异性29

2.3.2 外部DSL模式:共性与差异性35

2.4 选择DSL的实现方式39

2.5 小结41

2.6 参考文献42

第3章 DSL驱动的应用程序开发43

3.1 探索DSL集成44

3.2 内部DSL的集成模式47

3.2.1 通过Java 6的脚本引擎进行集成48

3.2.2 通过DSL包装器集成52

3.2.3 语言特有的集成功能59

3.2.4 基于Spring的集成61

3.3 外部DSL集成模式62

3.4 处理错误和异常64

3.4.1 给异常命名64

3.4.2 处理输入错误65

3.4.3 处理异常的业务状态66

3.5 管理性能表现67

3.6 小结68

3.7 参考文献68

第二部分 实现DSL70

第4章 内部DSL实现模式70

4.1 充实DSL“工具箱”71

4.2 内嵌式DSL:元编程模式72

4.2.1 隐式上下文和灵巧API73

4.2.2 利用动态装饰器的反射式元编程78

4.2.3 利用buider的反射式元编程83

4.2.4 经验总结:元编程模式85

4.3 内嵌式DSL:类型化抽象模式86

4.3.1 运用高阶函数使抽象泛化86

4.3.2 运用显式类型约束建模领域逻辑93

4.3.3 经验总结:类型思维95

4.4 生成式DSL:通过模板进行运行时代码生成96

4.4.1 生成式DSL的工作原理97

4.4.2 利用Ruby元编程实现简洁的DSL设计97

4.5 生成式DSL:通过宏进行编译时代码生成100

4.5.1 开展Clojure元编程100

4.5.2 实现领域模型102

4.5.3 Cloiure宏之美103

4.6 小结104

4.7 参考文献105

第5章 Ruby、Groovy、Clojure语言中的内部DSL设计106

5.1 动态类型成就简洁的DSL107

5.1.1 易读107

5.1.2 鸭子类型108

5.1.3 元编程——又碰面了110

5.1.4 为何选择Ruby、Groovy、Cloiure111

5.2 Ruby语言实现的交易处理DSL112

5.2.1 从API开始113

5.2.2 来点猴子补丁115

5.2.3 设立DSL解释器116

5.2.4 以装饰器的形式添加领域规则119

5.3 指令处理DSL:精益求精的Groovy实现123

5.3.1 指令处理DSL的现状123

5.3.2 控制元编程的作用域124

5.3.3 收尾工作127

5.4 思路迥异的Clojure实现128

5.4.1 建立领域对象129

5.4.2 通过装饰器充实领域对象130

5.4.3 通过REPL进行的DSL会话134

5.5 告诫135

5.5.1 遵从最低复杂度原则135

5.5.2 追求适度的表现力135

5.5.3 坚持优秀抽象设计的各项原则136

5.5.4 避免语言间的摩擦136

5.6 小结137

5.7 参考文献138

第6章 Scala语言中的内部DSL设计139

6.1 为何选择Scala140

6.2 迈向Scala DSL的第一步141

6.2.1 通过Scala DSL测试Java对象142

6.2.2 用Scala DSL作为对Java对象的包装142

6.2.3 将非关键功能建模为Scala DSL142

6.3 正式启程142

6.3.1 语法层面的表现力143

6.3.2 建立领域抽象144

6.4 制作一种创建交易的DSL147

6.4.1 实现细节148

6.4.2 DSL实现模式的变化152

6.5 用DSL建模业务规则153

6.5.1 模式匹配如同可扩展的Visitor模式153

6.5.2 充实领域模型155

6.5.3 用DSL表达税费计算的业务规则157

6.6 把组件装配起来160

6.6.1 用trait和类型组合出更多的抽象160

6.6.2 使领域组件具体化161

6.7 组合多种DSL162

6.7.1 扩展关系的组合方式163

6.7.2 层级关系的组合方式167

6.8 DSL中的Monad化结构171

6.9 小结175

6.10 参考文献176

第7章 外部DSL的实现载体178

7.1 解剖外部DSL179

7.1.1 最简单的实现形式179

7.1.2 对领域模型进行抽象179

7.2 语法分析器在外部DSL设计中的作用182

7.2.1 语法分析器、语法分析器生成器183

7.2.2 语法制导翻译184

7.3 语法分析器的分类190

7.3.1 简单的自顶向下语法分析器191

7.3.2 高级的自顶向下语法分析器192

7.3.3 自底向上语法分析器193

7.4 工具支持下的DSL开发——Xtext194

7.4.1 文法规则和大纲视图195

7.4.2 文法的元模型197

7.4.3 为语义模型生成代码198

7.5 小结201

7.6 参考文献202

第8章 用Scala语法分析器组合子设计外部DSL203

8.1 分析器组合子204

8.1.1 什么是分析器组合子205

8.1.2 按照分析器组合子的方式设计DSL206

8.2 Scala的分析器组合子库207

8.2.1 分析器组合子库中的基本抽象208

8.2.2 把分析器连接起来的组合子209

8.2.3 用Monad组合DSL分析器213

8.2.4 左递归DSL语法的packrat分析214

8.3 用分析器组合子设计DSL的步骤217

8.3.1 第一步:执行文法218

8.3.2 第二步:建立DSL的语义模型219

8.3.3 第三步:设计Order抽象220

8.3.4 第四步:通过函数施用组合子生成AST221

8.4 一个需要packrat分析器的DSL实例223

8.4.1 待解决的领域问题223

8.4.2 定义文法225

8.4.3 设计语义模型227

8.4.4 通过分析器的组合来扩展DSL语义229

8.5 小结231

8.6 参考文献231

第三部分 DSL开发的未来趋势234

第9章 展望DSL设计的未来234

9.1 语言层面对DSL设计的支持越来越充分235

9.1.1 对表现力的不懈追求235

9.1.2 元编程的能力越来越强237

9.1.3 S表达式取代XML充当载体237

9.1.4 分析器组合子越来越流行238

9.2 DSL工作台238

9.2.1 DSL工作台的原理239

9.2.2 使用DSL工作台的好处240

9.3 其他方面的工具支持241

9.4 DSL的成长和演化242

9.4.1 DSL的版本化242

9.4.2 DSL平稳演化的最佳实践242

9.5 小结244

9.6 参考文献244

附录A 抽象在领域建模中的角色246

A.1 设计得当的抽象应具备的特质246

A.1.1 极简247

A.1.2 精炼247

A.1.3 扩展性和组合性247

A.2 极简,只公开对外承诺的247

A.2.1 用泛化来保留演化余地248

A.2.2 用子类型化防止实现的泄露248

A.2.3 正确实施实现继承249

A.3 精炼,只保留自身需要的250

A.3.1 什么是非本质的250

A.3.2 非本质复杂性250

A.3.3 撇除杂质251

A.3.4 用DI隐藏实现细节252

A.4 扩展性提供成长的空间253

A.4.1 什么是扩展性253

A.4.2 mixin:满足扩展性的一种设计模式254

A.4.3 用mixin扩展Map255

A.4.4 函数式的扩展性256

A.4.5 扩展性也可以临时抱佛脚256

A.5 组合性,源自纯粹257

A.5.1 用设计模式满足组合性257

A.5.2 回归语言259

A.5.3 副作用和组合性260

A.5.4 组合性与并发262

A.6 参考文献262

附录B 元编程与DSL设计263

B.1 DSL 中的元编程263

B.1.1 DSL实现中的运行时元编程264

B.1.2 DSL实现中的编译时元编程265

B.2 作为DSL载体的Lisp268

B.2.1 Lisp的特殊之处268

B.2.2 代码等同于数据269

B.2.3 数据等同于代码269

B.2.4 简单到只分析列表结构的语法分析器270

B.3 参考文献271

附录C Ruby语言的DSL相关特性272

C.1 Ruby语言的DSL相关特性272

C.2 参考文献275

附录D Scala语言的DSL相关特性276

D.1 Scala语言的DSL相关特性276

D.2 参考文献279

附录E Groovy语言的DSL相关特性280

E.1 Groovy语言的DSL相关特性280

E.2 参考文献282

附录F Clojure语言的DSL相关特性283

F.1 Clojure语言的DSL相关特性283

F.2 参考文献285

附录G 多语言开发286

G.1 对IDE的特性要求287

G.2 搭建Java和Groovy的混合开发环境287

G.3 搭建Java和Scala的混合开发环境288

G.4 常见的多语言开发IDE288

索引290

热门推荐