领域特定语言 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
领域特定语言电子书下载地址
内容简介:
《领域特定语言》是领域特定语言(Domain-Specific Language,DSL)领域的丰碑之作,由世界级软件开发大师马丁·福勒(Martin Fowler)历时多年写作而成。
全书共57章,分为6个部分,全面介绍了DSL概念、DSL常见主题、外部DSL主题、内部DSL主题、备选计算模型以及代码生成等内容,揭示了与编程语言无关的通用原则和模式,阐释了如何通过DSL有效提高开发人员的生产力以及增进与领域专家的有效沟通,能为开发人员选择和使用DSL提供有效的决策依据和指导方法。
本书适合想要了解各种DSL及其构造方式,理解其通用原则、模式和适用场景,以提高开发生产力和沟通能力的软件开发人员阅读。
书籍目录:
第一部分 叙述
第1章 入门示例 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
第二部分 常见主题
第10章 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
第11章 语义模型(Semantic Model) 123
11.1 运行机制 123
11.2 使用时机 125
11.3 入门示例(Java) 126
第12章 符号表(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
第13章 上下文变量(Context Variable) 135
13.1 运行机制 135
13.2 使用时机 136
13.3 读取INI文件(C#) 136
第14章 构造型构建器(Construction Builder) 139
14.1 运行机制 139
14.2 使用时机 140
14.3 构建简单的航班数据(C#) 140
第15章 宏(Macro) 142
15.1 运行机制 142
15.1.1 文本宏 143
15.1.2 语法宏 146
15.2 使用时机 149
第16章 通知(Notification) 150
16.1 运行机制 150
16.2 使用时机 151
16.3 非常简单的通知(C#) 151
16.4 对通知进行语法分析(Java) 152
第三部分 外部DSL主题
第17章 分隔符制导翻译(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
第18章 语法制导翻译(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
第19章 巴克斯-诺尔范式(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
作者介绍:
马丁·福勒(Martin Fowler),世界级软件开发大师,ThoughtWorks首席科学家。他是一位作家、演说者、咨询师和泛软件开发领域的意见领袖。他致力于改善企业级的软件设计,对优秀的设计以及支撑优秀设计的工程实践孜孜以求。他在重构、面向对象分析设计、模式、XP和UML等领域都有卓越贡献,著有《重构:改善既有代码的设计》《分析模式:可复用的对象模型》《领域特定语言》《企业应用架构模式》等经典著作。
出版社信息:
暂无出版社相关信息,正在全力查找中!
书籍摘录:
暂无相关书籍摘录,正在全力查找中!
在线阅读/听书/购买/PDF下载地址:
原文赏析:
DSL由来已久,但直到近些年,人们对它的兴趣才有了显著的提升。与之同时,我决定用几年的时间写这本书。为什么呢?虽然我不知道自己是否可以给这一现象提供一个权威的解释,但我可以分享一下自己的观点。
在千禧年到来的时候,编程语言世界中(至少在我的企业软件世界中)出现了一种势不可挡的标准化的观念。先是Java,它在几年的时间里风光无限。即使后来微软推出的C#挑战了Java的统治地位,这个新生者依然是一门与Java很相似的语言。新时代的软件开发被编译型的、静态的、面向对象的、语法格式与C类似的语言统治着。(甚至连Visual Basic都被弄得尽可能地看起来接近这些性质。)
但人们很快发现,并不是所有的事情都能在Java/C#的霸权下良好运作。有些重要的逻辑用这些语言不能很好地实现,于是XML配置文件兴起了。不久之后,程序员就开玩笑说,他们写的XML代码比Java/C#代码都多。这固然有一部分原因是想在运行时改变系统行为,但也体现了另一种用更容易定制的方式来表达系统行为的各个方面的想法。XML的语法虽然十分烦琐,但确实可以让你定义自己的词汇,而目提供了非常强大的层次结构。
不过后来人们实在忍受不了XML的烦琐了。人们抱怨尖括号刺伤了他们的双眼。他们希望既能够享受 XML配置文件带来的好处,又不用承受XML的代价。
到了21世纪的头十年,Ruby on Rails横空出世。不管Rails这个实用平台在历史上会占据什么样的位置(我觉得Rails确实是一个优秀的平台),它都已经给人们对框架和库的认识造成了深远的影响。Ruby社区有一种很重要的做事方式:让一切显得更加连贯。换句话说,在调用库的时候,就像用一种专门的语言进行编程一样,这不禁让我们想起一门古老的编程语言——Lisp,这种方式也让人看到了在Java/C#这片坚硬的土地上绽开的花朵:在这两门语言中,连贯接口(fluent i...
其它内容:
书籍介绍
《领域特定语言》是领域特定语言(Domain-Specific Language,DSL)领域的丰碑之作,由世界级软件开发大师马丁·福勒(Martin Fowler)历时多年写作而成。
全书共57章,分为6个部分,全面介绍了DSL概念、DSL常见主题、外部DSL主题、内部DSL主题、备选计算模型以及代码生成等内容,揭示了与编程语言无关的通用原则和模式,阐释了如何通过DSL有效提高开发人员的生产力以及增进与领域专家的有效沟通,能为开发人员选择和使用DSL提供有效的决策依据和指导方法。
本书适合想要了解各种DSL及其构造方式,理解其通用原则、模式和适用场景,以提高开发生产力和沟通能力的软件开发人员阅读。
网站评分
书籍多样性:3分
书籍信息完全性:9分
网站更新速度:8分
使用便利性:5分
书籍清晰度:7分
书籍格式兼容性:4分
是否包含广告:7分
加载速度:4分
安全性:5分
稳定性:8分
搜索功能:3分
下载便捷性:8分
下载点评
- 盗版少(558+)
- 速度慢(466+)
- pdf(217+)
- 图书多(102+)
- 二星好评(321+)
- 排版满分(565+)
- 格式多(621+)
- 体验满分(612+)
- 情节曲折(212+)
- 少量广告(286+)
- epub(423+)
- 种类多(173+)
- txt(628+)
下载评价
- 网友 冯***丽: ( 2025-01-06 06:49:47 )
卡的不行啊
- 网友 权***波: ( 2024-12-21 22:03:20 )
收费就是好,还可以多种搜索,实在不行直接留言,24小时没发到你邮箱自动退款的!
- 网友 潘***丽: ( 2025-01-09 15:05:11 )
这里能在线转化,直接选择一款就可以了,用他这个转很方便的
- 网友 寇***音: ( 2025-01-04 15:17:42 )
好,真的挺使用的!
- 网友 訾***晴: ( 2025-01-13 04:44:35 )
挺好的,书籍丰富
- 网友 仰***兰: ( 2025-01-01 20:24:31 )
喜欢!很棒!!超级推荐!
- 网友 冷***洁: ( 2025-01-04 15:59:20 )
不错,用着很方便
- 网友 后***之: ( 2025-01-12 16:53:15 )
强烈推荐!无论下载速度还是书籍内容都没话说 真的很良心!
- 网友 瞿***香: ( 2024-12-27 01:21:20 )
非常好就是加载有点儿慢。
- 网友 冯***卉: ( 2024-12-28 21:58:21 )
听说内置一千多万的书籍,不知道真假的
- 网友 车***波: ( 2024-12-24 00:25:00 )
很好,下载出来的内容没有乱码。
- 数据库系统工程师考试大纲 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 出访英伦 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 高考日语橙宝书.阅读 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 语文(2024新高考)/学霸高考组合训练 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 口算题卡专项训练+同步作文名师视频讲解(五年级上册) 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 全新正版图书 第三极(汉)(附赠DVD)(大型电视纪录片《第三极》同名图郭新 五洲传播出版社9787508531632人天图书专营店 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 建筑识图与制图(住房和城乡建设领域关键岗位技术人员培训教材全国高等院校土建类应用 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 男生贾里+女生贾梅(全2册) 秦文君作品集8-15岁青少年儿童文学三四五六年级课外书小学生课外阅读书籍男生女生青少年校园系列青春小说书 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 怪杰佐罗力之大恐龙 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 国际结算实务案例精析(2016) 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
书籍真实打分
故事情节:6分
人物塑造:4分
主题深度:8分
文字风格:3分
语言运用:5分
文笔流畅:8分
思想传递:8分
知识深度:8分
知识广度:4分
实用性:4分
章节划分:7分
结构布局:6分
新颖与独特:5分
情感共鸣:6分
引人入胜:7分
现实相关:5分
沉浸感:6分
事实准确性:6分
文化贡献:8分