• 领域特定语言
21年品牌 40万+商家 超1.5亿件商品

领域特定语言

全新正版 极速发货

96.11 6.4折 149.9 全新

库存4件

广东广州
认证卖家担保交易快速发货售后保障

作者(美)马丁·福勒

出版社人民邮电出版社

ISBN9787115563163

出版时间2021-07

装帧平装

开本16开

定价149.9元

货号1202402215

上书时间2024-09-04

谢岳书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介
马丁·福勒(Martin Fowler),重量软件开发大师,ThoughtWorks首席科学家。他是一位作家、演说者、咨询师和泛软件开发领域的意见。他致力于改善企业级的软件设计,对很好的设计以及支撑很好设计的工程实践孜孜以求。他在重构、面向对象分析设计、模式、XP和UML等领域都有很好贡献,著有《重构:改善既有代码的设计》《分析模式:可复用的对象模型》《领域特定语言》《企业应用架构模式》等经典著作。

目录
部分 叙述

章 入门示例 2

1.1 古堡安全系统 2

1.2 状态机模型 4

1.3 为格兰特女士的控制器编程 7

1.4 语言和语义模型 13

1.5 使用代码生成 15

1.6 使用语言工作台 17

1.7 可视化 19

第2章 使用DSL 21

2.1 定义DSL 21

2.1.1 DSL的边界 22

2.1.2 片段DSL和独立DSL 25

2.2 为何使用DSL 25

2.2.1 提高开发效率 26

2.2.2 与领域专家沟通 26

2.2.3 改变执行环境 27

2.2.4 备选计算模型 28

2.3 DSL的问题 28

2.3.1 语言噪声 29

2.3.2 构建成本 29

2.3.3 集中营语言 30

2.3.4 狭隘的抽象 30

2.4 广义的语言处理 31

2.5 DSL的生命周期 31

2.6 设计优良的DSL从何而来 33

第3章 实现DSL 34

3.1 DSL处理的架构 34

3.2 语法分析器的工作方式 37

3.3 文法、语法和语义 39

3.4 语法分析中的数据 39

3.5 宏 41

3.6 DSL的测试 42

3.6.1 语义模型的测试 42

3.6.2 语法分析器的测试 46

3.6.3 脚本的测试 49

3.7 错误处理 50

3.8 DSL的迁移 51

第4章 实现内部DSL 53

4.1 连贯API和命令查询API 53

4.2 对语法分析层的需要 56

4.3 使用函数 57

4.4 字面量集合 61

4.5 基于文法选择内部元素 62

4.6 闭包 63

4.7 语法分析树操作 65

4.8 注解 66

4.9 字面量扩展 67

4.10 降低语法噪声 68

4.11 动态接收 68

4.12 提供类型检查 69

第5章 实现外部DSL 71

5.1 语法分析策略 71

5.2 输出生成策略 74

5.3 解析中的概念 75

5.3.1 单独的词法分析 75

5.3.2 文法和语言 76

5.3.3 正则文法、上下文无关文法和上下文相关文法 77

5.3.4 自顶向下解析和自底向上解析 78

5.4 混入另一种语言 80

5.5 XML DSL 81

第6章 在内部DSL和外部DSL之间做选择 83

6.1 学习曲线 83

6.2 构建成本 84

6.3 程序员的熟悉度 85

6.4 与领域专家沟通 85

6.5 与宿主语言混合 85

6.6 表达性强边界 86

6.7 运行时配置 86

6.8 趋于通用 87

6.9 组合多种DSL 87

6.10 小结 88

第7章 备选计算模型 89

7.1 决策表 91

7.2 产生式规则系统 92

7.3 状态机 93

7.4 依赖网络 94

7.5 选择模型 94

第8章 代码生成 95

8.1 选择生成什么 96

8.2 如何生成 98

8.3 混合生成的代码和手写代码 99

8.4 生成可读的代码 100

8.5 语法分析前的代码生成 100

8.6 延伸阅读 101

第9章 语言工作台 102

9.1 语言工作台的要素 102

9.2 模式定义语言和元模型 103

9.3 源编辑和投射编辑 107

9.4 说明性编程 109

9.5 工具之旅 110

9.6 语言工作台和CASE工具 111

9.7 是否应该使用语言工作台 112

第二部分 常见主题

0章 DSL集锦 114

10.1 Graphviz 114

10.2 JMock 115

10.3 CSS 116

10.4 HQL 118

10.5 XAML 118

10.6 FIT 120

10.7 Make等 121

1章 语义模型(Semantic Model) 123

11.1 运行机制 123

11.2 使用时机 125

11.3 入门示例(Java) 126

2章 符号表(Symbol Table) 127

12.1 运行机制 127

12.2 使用时机 129

12.3 延伸阅读 129

12.4 以外部DSL实现的依赖网络(Java和ANTLR) 130

12.5 在内部DSL中使用符号键(Ruby) 131

12.6 以枚举作为静态类型符号(Java) 132

3章 上下文变量(Context Variable) 135

13.1 运行机制 135

13.2 使用时机 136

13.3 读取INI文件(C#) 136

4章 构造型构建器(Construction Builder) 139

14.1 运行机制 139

14.2 使用时机 140

14.3 构建简单的航班数据(C#) 140

5章 宏(Macro) 142

15.1 运行机制 142

15.1.1 文本宏 143

15.1.2 语法宏 146

15.2 使用时机 149

6章 通知(Notification) 150

16.1 运行机制 150

16.2 使用时机 151

16.3 非常简单的通知(C#) 151

16.4 对通知进行语法分析(Java) 152

第三部分 外部DSL主题

7章 分隔符制导翻译(Delimiter-Directed Translation) 156

17.1 运行机制 156

17.2 使用时机 159

17.3 常客记分(C#) 159

17.3.1 语义模型 159

17.3.2 语法分析器 161

17.4 使用格兰特女士的控制器对非自治语句进行语法分析(Java) 164

8章 语法制导翻译(Syntax-Directed Translation) 171

18.1 运行机制 172

18.1.1 词法分析器 172

18.1.2 语法分析器 175

18.1.3 产生输出 177

18.1.4 语义谓词 177

18.2 使用时机 178

18.3 延伸阅读 178

9章 巴克斯-诺尔范式(BNF) 179

19.1 运行机制 179

19.1.1 多重性符号(克林运算符) 181

19.1.2 其他有用的运算符 182

19.1.3 解析表达式文法 182

19.1.4 将EBNF转换为基础BNF 183

19.1.5 行为代码 185

19.2 使用时机 187

第20章 基于正则表达式表的词法分析器(Regex Table Lexer) 188

20.1 运行机制 189

20.2 使用时机 190

20.3 对格兰特女士的控制器进行词法分析(Java) 190

第21章 递归下降语法分析器(Recursive Descent Parser) 193

21.1 运行机制 194

21.2 使用时机 196

21.3 延伸阅读 197

21.4 递归下降和格兰特女士的控制器(Java) 197

第22章 语法分析器组合子(Parser Combinator) 202

22.1 运行机制 203

22.1.1 处理动作 205

22.1.2 函数式风格的组合子 206

22.2 使用时机 207

22.3 语法分析器组合子和格兰特女士的控制器(Java) 207

第23章 语法分析器生成器(Parser Generator) 214

23.1 运行机制 214

23.2 使用时机 216

23.3 Hello World(Java和ANTLR) 216

23.3.1 编写基本的文法 217

23.3.2 构建语法分析器 218

23.3.3 为文法添加行为代码 220

23.3.4 使用代沟 221

第24章 树构造(Tree Construction) 224

24.1 运行机制 224

24.2 使用时机 226

24.3 使用ANTLR的树构造语法(Java和ANTLR) 227

24.3.1 分词 228

24.3.2 语法分析 228

24.3.3 组装语义模型 230

24.4 使用行为代码进行树构造(Java和ANTLR) 233

第25章 内嵌翻译(Embedded Translation) 239

25.1 运行机制 239

25.2 使用时机 240

25.3 格兰特女士的控制器(Java和ANTLR) 240

第26章 内嵌解释(Embedded Interpretation) 244

26.1 运行机制 244

26.2 使用时机 244

26.3 计算器(ANTLR和Java) 245

第27章 外来代码(Foreign Code) 247

27.1 运行机制 247

27.2 使用时机 248

27.3 嵌入动态代码(ANTLR、Java和JavaScript) 249

27.3.1 语义模型 249

27.3.2 语法分析器 251

第28章 可变分词方式(Alternative Tokenization) 255

28.1 运行机制 255

28.1.1 引用 256

28.1.2 词法状态 258

28.1.3 修改记号类型 259

28.1.4 忽略记号类型 260

28.2 使用时机 261

第29章 嵌套运算符表达式(Nested Operator Expression) 262

29.1 运行机制 262

29.1.1 自底向上的语法分析器 262

29.1.2 自顶向下的语法分析器 264

29.2 使用时机 266

第30章 换行分隔符(Newline Separator) 267

30.1 运行机制 267

30.2 使用时机 269

第31章 外部DSL拾遗 271

31.1 语法缩进 271

31.2 模块化文法 273

第四部分 内部DSL主题

第32章 表达式构建器(Expression Builder) 276

32.1 运行机制 277

32.2 使用时机 277

32.3 用构建器和不用构建器的连贯接口日程表(Java) 278

32.4 对日程表使用多个构建器(Java) 280

第33章 函数序列(Function Sequence) 283

33.1 运行机制 283

33.2 使用时机 284

33.3 简单的计算机配置范例(Java) 284

第34章 嵌套函数(Nested Function) 287

34.1 运行机制 287

34.2 使用时机 289

34.3 简单的计算机配置示例(Java) 289

34.4 用记号处理多个不同的参数(C#) 291

34.5 针对IDE支持使用子类型记号(Java) 292

34.6 使用对象初始化器(C#) 294

34.7 重复事件(C#) 295

34.7.1 语义模型 295

34.7.2 DSL 298

第35章 方法级联(Method Chaining) 300

35.1 运行机制 300

35.1.1 使用构建器还是值 301

35.1.2 收尾问题 302

35.1.3 分层结构 303

35.1.4 渐进式接口 303

35.2 使用时机 304

35.3 简单的计算机配置示例(Java) 304

35.4 带有属性的方法级联(C#) 307

35.5 渐进式接口(C#) 308

第36章 对象作用域(Object Scoping) 310

36.1 运行机制 310

36.2 使用时机 311

36.3 安全代码(C#) 312

36.3.1 语义模型 312

36.3.2 DSL 314

36.4 使用实例求值(Ruby) 316

36.5 使用实例初始化程序(Java) 318

第37章 闭包(Closure) 320

37.1 运行机制 320

37.2 使用时机 324

第38章 嵌套闭包(Nested Closure) 325

38.1 运行机制 325

38.2 使用时机 326

38.3 用嵌套闭包来包装函数序列(Ruby) 327

38.4 简单的C#范例(C#) 329

38.5 使用方法级联(Ruby) 330

38.6 带有显式闭包参数的函数序列(Ruby) 331

38.7 使用实例求值(Ruby) 333

第39章 字面量列表(Literal List) 336

39.1 运行机制 336

39.2 使用时机 336

第40章 字面量映射(Literal Map) 338

40.1 运行机制 338

40.2 使用时机 339

40.3 使用列表和映射表达计算机的配置信息(Ruby) 339

40.4 演化为格林斯潘式(Ruby) 340

第41章 动态接收(Dynamic Reception) 344

41.1 运行机制 344

41.2 使用时机 345

41.3 积分—使用经过语法分析的方法名(Ruby) 347

41.3.1 模型 347

41.3.2 构建器 349

41.4 积分—使用方法级联(Ruby) 350

41.4.1 模型 351

41.4.2 构建器 351

41.5 去除密室控制器中的引用(JRuby) 354

第42章 注解(Annotation) 359

42.1 运行机制 359

42.1.1 定义注解 360

42.1.2 处理注解 361

42.2 使用时机 362

42.3 用于运行时处理的自定义语法(Java) 362

42.4 使用类方法(Ruby) 364

42.5 动态代码生成(Ruby) 365

第43章 语法分析树操作(Parse Tree Manipulation) 367

43.1 运行机制 367

43.2 使用时机 368

43.3 由C#条件生成IMAP查询(C#) 369

43.3.1 语义模型 369

43.3.2 使用C#构建 371

43.3.3 退后一步 375

第44章 类符号表(Class Symbol Table) 377

44.1 运行机制 377

44.2 使用时机 378

44.3 静态类型的类符号表(Java) 379

第45章 文本打磨(Textual Polishing) 385

45.1 运行机制 385

45.2 使用时机 386

45.3 打磨后的折扣规则(Ruby) 386

第46章 字面量扩展(Literal Extension) 389

46.1 运行机制 389

46.2 使用时机 390

46.3 食谱配料(C#) 390

第五部分 备选计算模型

第47章 适应性模型(Adaptive Model) 394

47.1 运行机制 395

47.1.1 在适应性模型中纳入命令式代码 396

47.1.2 工具 397

47.2 使用时机 398

第48章 决策表(Decision Table) 400

48.1 运行机制 400

48.2 使用时机 401

48.3 订单费用计算(C#) 402

48.3.1 模型 402

48.3.2 语法分析器 405

第49章 依赖网络(Dependency Network) 408

49.1 运行机制 408

49.2 使用时机 410

49.3 分析药剂(C#) 411

49.3.1 语义模型 411

49.3.2 语法分析器 413

第50章 产生式规则系统(Production Rule System) 414

50.1 运行机制 415

50.1.1 规则链 415

50.1.2 矛盾的推理 416

50.1.3 规则结构里的模式 417

50.2 使用时机 417

50.3 俱乐部会员验证(C#) 418

50.3.1 模型 418

50.3.2 语法分析器 419

50.3.3 演进DSL 420

50.4 适任资格的规则:扩展俱乐部成员(C#) 421

50.4.1 模型 422

50.4.2 语法分析器 425

第51章 状态机(State Machine) 426

51.1 运行机制 426

51.2 使用时机 428

51.3 密室控制器(Java) 428

第六部分 代码生成

第52章 基于转换器的代码生成(Transformer Generation) 430

52.1 运行机制 430

52.2 使用时机 431

52.3 密室控制器(Java生成C) 432

第53章 基于模板的代码生成(Templated Generation) 435

53.1 运行机制 435

53.2 使用时机 436

53.3 使用嵌套条件生成密室状态机(Velocity和Java生成C) 437

第54章 嵌入助手(Embedment Helper) 442

54.1 运行机制 443

54.2 使用时机 443

54.3 密室状态(Java和ANTLR) 444

54.4 辅助类是否应该生成HTML(Java和Velocity) 446

第55章 基于模型的代码生成(Model-Aware Generation) 448

55.1 运行机制 448

55.2 使用时机 449

55.3 密室状态机(C) 449

55.4 动态加载状态机(C) 455

第56章 无视模型的代码生成(Model Ignorant Generation) 458

56.1 运行机制 458

56.2 使用时机 459

56.3 使用嵌套条件的密室状态机(C) 459

第57章 代沟(Generation Gap) 461

57.1 运行机制 461

57.2 使用时机 462

57.3 根据数据模式生成类(Java和一些Ruby) 463

参考文献 467

模式清单 468

速查表 470

内容摘要
《领域特定语言》是领域特定语言(Domain-Specific Language,DSL)领域的丰碑之作,由重量软件开发大师马丁·福勒(Martin Fowler)历时多年写作而成。全书共57章,分为6个部分,全面介绍了DSL概念、DSL常见主题、外部DSL主题、内部DSL主题、备选计算模型以及代码生成等内容,揭示了与编程语言无关的通用原则和模式,阐释了如何通过DSL有效提高开发人员的生产力以及增进与领域专家的有效沟通,能为开发人员选择和使用DSL提供有效的决策依据和指导方法。本书适合想要了解各种DSL及其构造方式,理解其通用原则、模式和适用场景

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP