我很喜欢摆弄编译器,只要是亲手打造自己的语言,无论动手还是动脑都是一种享受。编程语言,尤其是DSL(Domain Specific Language,领域专用语言),能激起我极大的热情。

DSL这一概念并不是最近才发明的,Lisp开发者们早就在开发和使用所谓的“小语言”了。不过近年来,DSL确实在整个行业范围内被更广泛地使用和接受,相关工具和技术也日渐成熟。如果开发者想探索语言设计这一精彩世界,可以说现在的条件是前所未有的。

如同大多数语言,DSL的要旨在于沟通。精心设计的DSL可以以一种从外观到内在都极为自然的方式,传达出其所表示领域的本质和真意。DSL能帮助消除业务与技术的隔阂,促进项目干系人与程序员的沟通。这种能力比以往任何时候都更重要,更值得我们去追求。

Debasish在Scala和开源社区里都是受人尊敬的专家。他的博客既给人以学识上的启发,又充满阅读乐趣,多年来我一直在关注。Debasish一年前开始为Akka项目贡献力量,我这个长年的读者因而与他有了进一步的接触。往来言行一下子就表露出来,他不仅是一位深刻的思考者,还是一位有行动力的实干家。从那以后,与他讨论编程语言、设计成了我乐在其中的爱好。

这是一本令人激动的书。书中内容的涵盖面很广,而在此基础上又有相当的深度,除了带领读者穿梭于DSL发展的最前沿,它还将带领大家思考如何设计灵活而自然的DSL。此外,读者还将领略Scala、Groovy、Clojure、Ruby等各具特色的语言,掌握每一种语言解决问题的思路和手段。开卷有益,诚哉斯言。

Jonas Bonér
Akka项目、AOP框架AspectWerkz创建人
http://jonasboner.com

目录

  • 版权声明
  • 献词
  • 前言
  • 致谢
  • 关于本书
  • 关于封面图片
  • 第一部分 领域专用语言入门
  • 第1章 初识DSL
  • 第2章 现实中的DSL
  • 第3章 DSL驱动的应用程序开发
  • 第二部分 实现DSL
  • 第4章 内部DSL实现模式
  • 第5章 Ruby、Groovy、Clojure 语言中的内部DSL设计
  • 第6章 Scala语言中的内部DSL设计
  • 第7章 外部DSL的实现载体
  • 第8章 用Scala语法分析器组合子设计外部DSL
  • 第三部分 DSL开发的未来趋势
  • 第9章 展望DSL设计的未来
  • 附录A 抽象在领域建模中的角色
  • 附录B 元编程与DSL设计
  • 附录C Ruby语言的DSL相关特性
  • 附录D Scala语言的DSL相关特性
  • 附录E Groovy语言的DSL相关特性
  • 附录F Clojure语言的DSL相关特性
  • 附录G 多语言开发