分享到: QQ空间 新浪微博 腾讯微博 人人网 豆瓣网 开心网
  • 折后价:¥66.75(75折)
  • 发表本书评论
  • 原书名:Domain-Specific Languages
  • 出版社:机械工业出版社
  • ISBN:9787111413059
  • 开本:16开
  • 页数: 488
  • 定价: ¥89.00
译者序

2008年,老马(Martin Fowler)在Agile China上做主旨发言,题目就是领域特定语言(Domain Specific Language, DSL)。老马提携后辈,愿意跟我合作完成这个演讲。而我呢,一方面,年少轻狂认为这个领域我也算个中好手,另一方面,也感激老马的信任和厚爱,就答应了。当时我已经知道老马在写一本关于这个主题的书,便跟他讨要原文来看。当时还没有成型的稿子,只有非常简略的草稿和博客片段。

2010年年底,ThoughtWorks技术战略委员会(ThoughtWorks Technology Advisor Board)在芝加哥开会。那时候,这本书的英文原版已然出版。晚上聚餐的时候,我心血来潮,跟老马说如果有机会,希望能将这本书翻译成中文,介绍给中国的开发者。老马听了很高兴,把最终定稿的电子版访问权限授予了我。

几个月后,同事刀哥(李剑)问我有没有兴趣参加这本书的翻译,我说当然有。后来回想起来,我还是上了刀哥的当,因为突然之间我就从参与翻译变成负责翻译了。

由于我手里已经有原稿的缘故,因此我们没有采用出版社提供的Word版本,而是在英文原稿上直接翻译。原稿除了文字部分之外,还有几千行代码。其中包括XSTL、Ruby、C++、Java、图像处理脚本,甚至还有用于构建样书的rake脚本。惊讶之余, 作为程序员的求知欲也被激发出来了。在动手翻译之前,我们花了两天彻底了解这些代码的作用。然后就发现了这个惊人的秘密:

这是一本用领域特定语言写就的关于领域特定语言的书。

原文的文字部分是老马在docbook基础上定义的领域特定语言。这种语言除了在docbook的基础结构上定义了章节模板之外,还有两个专用结构:patternRef和codeRef 。

patternRef用于处理模式名称在不同章节中的引用。本书分为两部分,前面的概念讲述部分和后面的模式部分。它耗时3年写就,在草稿阶段模式名称都未确定,各章节之间交叉引用很多。一旦出现模式名称改变,更新同步成本就很高。为此,老马定义了专有的语言结构,patternRef。所有对于模式的引用,都通过patternRef实现。由patternRef解析处理应该使用那个具体的名称。

这个巧妙的做法在后来的翻译中给我们带来了很大的困扰。因为patternRef会处理英语中的单复数,而中文不会有这样的情况。翻译稿中出现了大量的s和es。最后还是通过修改DSL解析器里才解决了这个问题。

 codeRef则表示代码引用。这本书属于技术领域,其中会有大量代码示例;同一份代码示例会在不同章节中引用,一旦写法变化,就需要同步检查它在上下文内是否还能起到示范作用。老马先在示范代码的源代码中通过注释加入XML标注,把代码分解成一段段可引用的例子。因为是代码注释,所以不会影响源代码的编译、调试和重构。然后,再通过codeRef,表明是哪个例子的哪段示例。最后,再通过Ruby和XSLT,摘取对应的代码段,生成相应的文本。

我一直认为在澄清概念和发现模式上老马是有超能力的。通常会忘记他也是个ThoughtWorker,而让做事情变得有趣,则是每个ThoughtWorker都有的超能力。

翻译这本书并不轻松,其中很多概念中文并无定译。为了呈现最好的结果,我们成立了一个翻译小组,包括熊节、郑烨、李剑、张凯峰、金明等有较多翻译经验的ThoughtWorker悉数在内。虽然如此,仍然难免疏漏 ,望读者不吝斧正。

徐昊

ThoughtWorks中国

  • 译者序
  • 前言
  • 写书初衷
  • 为什么现在写这本书
  • 为什么DSL很重要
  • 别畏惧这本大厚书
  • 本书主要内容
  • 本书读者对象
  • 这是本Java书或者C#书吗
  • 本书缺少什么
  • 章节引用
  • 模式结构
  • 致谢
软件开发“教父”Martin Fowler
Martin fowler简介

ThoughtWorks 的首席科学家,当今世界软件开发领域最具影响力的五位大师之一。作为一位敏捷软件开发方法的早期开拓者,Martin Fowler对IT 业的影响是不可估量的。从80年代开始,他就一直从事软件开发的工作。在80年代中期,他对面向对象开发这个新领域发生了兴趣。他擅长在商业信息系统中加入面向对象的思想。时至21世纪,他又在UML推广普及、领域建模、企业应用开发和敏捷方法等方面建树卓著,被称为软件开发的教父。Martin Fowler的著作精品包括《重构-改善既有代码的设计》(Refactoring: Improving the Design of Exist ing Code) ,荣获多个奖项的《UML精粹:标准对象建模语言简明指南》(UML Distilled:A Brief Guide to the Standard Object Modeling) 第二版、《分析模式:可重用的对象模型》(Analysis Patterns:Reusable Object Models) 、《规划极限编程》(Planning Extreme Programming)、 和《企业应用架构模式》(Patterns of Enterprise Application Architecture)。

Martin其他著作
华章新品推荐