致谢

首先,这可能有点儿不同寻常,我想感谢一下自己。我完全没料到自己能把注意力集中在一个兴趣点上这么久。编写本书的过程中,我真正意识到了毅力、决心和信念的价值。

感谢Anshinsoft的同事们创造了能够培育想法并让想法腾飞的工作环境。夜半之时的头脑风暴帮助我雕琢出了许多复杂的领域模型,也引发了我对DSL的热爱。

感谢我们的客户代表渡边桑(Tohru Watanabe先生),我从他那里学到了证券交易业务的领域模型。这本书里满是他多年来教给我的例子。

感谢以下审阅者帮助我提高书稿的质量:Sivakumar Thyagarajan、Darren Neimke、Philipp K. Janert、James Hatheway、Kenneth DeLong、Edmon Begolli、Celso Gonzalez、Jason Jung、Andrew Cooke、Boris Lenzinger、David Dossot、Federico Tomassetti、Greg Donald、John S. Griffin、Sumit Pal、Rick Wagner。特别感谢审阅者Guillaume Laforge和John Wilson指正Groovy DSL的编写细节,感谢Michael Fogus对第5章和第6章内容的建言,感谢Sven Efftinge对第7章中Xtext和外部DSL的意见。我还要感谢Franco Lombardo在本书付印前的紧迫时间里对文稿的最后技术审读。

Twitter网友在本书的写作过程中贡献了许多真知灼见,给了我无可估量的帮助和启发。

Manning出版社有一支优秀的团队,感谢他们的实心协助。项目编辑Cynthia Kane在文法和写作风格上不知疲倦地给出了指点,还站在读者的角度与我探讨了本书每一章的内容。如果读者觉得本书文字简单易懂,那要归功于Cynthia一遍又一遍的审读,是她敦促我一遍又一遍地修改行文。感谢Karen Tegtmeyer组织同行评议,感谢Maureen Spencer在本书撰写的全过程给予的帮助,感谢Joan Celmer在编辑过程中的积极响应,感谢Manning出版社对本书制作提供了大力支持的所有工作人员。我还要感谢出版人Marjan Bace对我的信任。

向我的夫人Mou致以特别的谢意,她在我写书的日子里一直激励我。这段漫长而辛劳的旅程因为她不同时期的鼓舞而有了非凡的意义和累累硕果。

目录

  • 版权声明
  • 献词
  • 前言
  • 致谢
  • 关于本书
  • 关于封面图片
  • 第一部分 领域专用语言入门
  • 第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 多语言开发