内容简介
本书是《图灵程序设计丛书》中的一本,由美国软件工程师Debasish Ghosh撰写,专注于领域专用语言(Domain-Specific Language,简称DSL)的实战设计与开发。DSL是一种针对特定问题领域而设计的计算机语言,与通用编程语言(如Java、C++)不同,它更专注于某一业务或技术领域,能够显著提高开发效率和代码可读性。
书中从DSL的基本概念入手,系统讲解了DSL的分类、设计原则以及在实际项目中的应用场景。作者通过丰富的代码示例和案例分析,展示了如何使用主流编程语言(如Java、Scala、Ruby等)构建内部DSL和外部DSL,并探讨了DSL的解析、编译和执行机制。内容涵盖了DSL与框架的集成、与领域驱动设计(DDD)的结合、以及如何通过DSL简化复杂业务逻辑的表达。
本书适合软件工程师、架构师以及对语言设计和编程范式感兴趣的开发者阅读,旨在帮助读者掌握DSL的设计思想,提升代码的抽象层次和可维护性。通过本书的学习,读者将能够根据业务需求定制专属的领域语言,从而更高效地解决实际问题。
目录
序
关于本书
第一部分 领域专用语言入门
第1章 初识DSL
1.1 问题域与解答域
1.2 领域建模:确立共通的语汇
1.3 初窥DSL
1.4 DSL的执行模型
1.5 DSL的分类
1.6 何时需要DSL
1.7 DSL与抽象设计
1.8 小结
1.9 参考文献
第2章 现实中的DSL
2.1 打造首个Java DSL
2.2 创造更友好的DSL
2.3 DSL实现模式
2.4 选择DSL的实现方式
2.5 小结
2.6 参考文献
第3章 DSL驱动的应用程序开发
3.1 探索DSL集成
3.2 内部DSL的集成模式
3.3 外部DSL集成模式
3.4 处理错误和异常
3.5 管理性能表现
3.6 小结
3.7 参考文献
第二部分 实现DSL
第4章 内部DSL实现模式
4.1 充实DSL“工具箱”
4.2 内嵌式DSL:元编程模式
4.3 内嵌式DSL:类型化抽象模式
4.4 生成式DSL:通过模板进行运行时代码生成
4.5 生成式DSL:通过宏进行编译时代码生成
4.6 小结
4.7 参考文献
第5章 Ruby、Groovy、Clojure 语言中的内部DSL设计
5.1 动态类型成就简洁的DSL
5.2 Ruby语言实现的交易处理DSL
5.3 指令处理DSL:精益求精的Groovy实现
5.4 思路迥异的Clojure实现
5.5 告诫
5.6 小结
5.7 参考文献
第6章 Scala语言中的内部DSL设计
6.1 为何选择Scala
6.2 迈向Scala DSL的第一步
6.3 正式启程
6.4 制作一种创建交易的DSL
6.5 用DSL建模业务规则
6.6 把组件装配起来
6.7 组合多种DSL
6.8 DSL中的Monad化结构
6.9 小结
6.10 参考文献
第7章 外部DSL的实现载体
7.1 解剖外部DSL
7.2 语法分析器在外部DSL设计中的作用
7.3 语法分析器的分类
7.4 工具支持下的DSL开发——Xtext
7.5 小结
7.6 参考文献
第8章 用Scala语法分析器组合子设计外部DSL
8.1 分析器组合子
8.2 Scala的分析器组合子库
8.3 用分析器组合子设计DSL的步骤
8.4 一个需要packrat分析器的DSL实例
8.5 小结
8.6 参考文献
第三部分 DSL开发的未来趋势
第9章 展望DSL设计的未来
9.1 语言层面对DSL设计的支持越来越充分
9.2 DSL工作台
9.3 其他方面的工具支持
9.4 DSL的成长和演化
9.5 小结
9.6 参考文献
附录A 抽象在领域建模中的角色
A.1 设计得当的抽象应具备的特质
A.2 极简,只公开对外承诺的
A.3 精炼,只保留自身需要的
A.4 扩展性提供成长的空间
A.5 组合性,源自纯粹
A.6 参考文献
附录B 元编程与DSL设计
B.1 DSL中的元编程
B.2 作为DSL载体的Lisp
B.3 参考文献
附录C Ruby语言的DSL相关特性
C.1 Ruby语言的DSL相关特性
C.2 参考文献
附录D Scala语言的DSL相关特性
D.1 Scala语言的DSL相关特性
D.2 参考文献
附录E Groovy语言的DSL相关特性
E.1 Groovy语言的DSL相关特性
E.2 参考文献
附录F Clojure语言的DSL相关特性
F.1 Clojure语言的DSL相关特性
F.2 参考文献
附录G 多语言开发
G.1 对IDE的特性要求
G.2 搭建Java和Groovy的混合开发环境
G.3 搭建Java和Scala的混合开发环境
G.4 常见的多语言开发IDE
您当前的等级为
登录后免费下载登录
小黑屋反思中,不准下载!
评论后刷新页面下载评论
支付¥以后下载
请先登录
您今天的下载次数(次)用完了,请明天再来
支付积分以后下载立即支付
支付以后下载立即支付
您当前的用户组不允许下载升级会员
您已获得下载权限
您可以每天下载资源次,今日剩余次
免责申明:
1. 本站分享的所有书籍均来源于自互联网,我们只进行收集整理,并不对书籍内容进行更改。
2. 部分书籍中可能有书籍压制者放置的广告,这并不是本站所为,请注意甄别。
3. 我们分享这些书籍,纯粹是出于知识分享的热情,以及对互联网分享精神的高度认同和践行,不以盈利为目的。
4. 本站分享的所有书籍,仅供个人学习研究使用,请勿用于任何商业用途,否则产生的一切法律纠纷与本站无关。
5. 如果这些书籍让你有所收获,在条件允许的情况下,请一定购买正版书籍,这是对创作者最好的支持。
6. 如果您是此书籍的版权所有者,且您不希望此作品出现在本站,请联系我们,我们将在收到您的请求后48小时内予以删除。