中译本的好和不好

(发布于 2012 年 5 月 29 日)

本文是对《Ruby元编程》一书的评论,原文载于豆瓣。

这本书之前看过英文版,再读中文版时轻松很多,大多数知识是掌握了的,不过这次阅读却也收获了之前忽略的内容。其实技术类书籍是写不出什么读后感的,本文只是针对 literal 层面的东西做个评论。

外观

和同时买的另一本技术书译本相比,这本书的外观简直就是精品。无瑕疵是必须的,能够使用英文原版的封面更是让我喜出望外。熟悉 Ruby/Rails 的人,大都对 Pragmatic 的书有很深的感情,所以看到这个封面我觉得异常的高兴。

翻一下内页,白白的纸也给我一种纯粹感,技术类书籍就是应该如此毫无多余的装饰,白白净净。

排版

我对中译本的内容排版还是有点微词的。

翻了几页后,我发现很多页下方都有大片的空白,开始我有些不解,再往后翻,底部有空白的页还有很多,所以我打开英文版电子书做了一下对照,这才发现,原来是为了和原书保持一致。我自己曾经也翻译过一些技术书籍,知道大多数情况下一页英文翻译到中文基本上都会少于一页。所以我知道了这些空白是为了“完全”和英文原书保持一致。

我一开始把这种处理方式理解为“好的”,毕竟是译本,和原书保持一致也无可厚非,但是当发现另一处排版问题时,我改变的想法,这种处理方式是“不好的”,完全可以理解为偷懒行为

这个想法的改变发生在 P66 代码片段的第五行:

data_source.methods.grep(/^get_(.*)_info$/) { Computer.define_component $

这行代码就这样戛然而止了,很明显这行代码并不完整,后面应该补上:1 }。仅此一例,似乎说明不了问题,而后我又发现了其他两处这种代码截断的排版。

遇到这种情况很难让我不联想到“偷懒”二字:大片的空白是为了偷懒,照搬原书的排版就行了,没必要二次排版,省下不少工夫;代码的截断是偷懒,因为录入人员连换行都没必要用,还可以和原版保持一致,因为原版在这个地方没有换行啊。

说完排版的不好,然后说一个好的。

中译本的行间代码终于使用了 monospace 字体族,再也不是中文字体默认的渲染效果了,这一点很值得称赞。

代码的行文错误

这本书的译者之前翻译过 Ruby 方面的书,我推测他应该是一个懂 Ruby 的技术人员,或者至少懂得其他的编程语言,很可惜,我没有搜索到译者的相关介绍或是个人网站。

而且这本书还特意标明了“审校”人员,我不知道这名审校是否为技术人员,但更有可能是出版社的编辑。

所以这本书出现的一些代码错误就有些让人不可原谅了。

这些错误基本上只有一种:空格的错用,要不多了,要不少了。最常见的错误是将类似 attr_accessor 的代码写成 attr_ accessor,这种错误不下数十处。

P214 的一处错误更是让我啼笑皆非:

class String
  includeActiveSupport::CoreExtensions::String::Access
  includeActiveSupport....
  includeActiveSupport....
  includeActiveSupport....
  includeActiveSupport....
  includeActiveSupport....
  includeActiveSupport....
  includeActiveSupport....
end

不过由此也从侧面证实,这些代码片段并不是直接从原书 copy 的,而是经过了二次加工。

还有一处错误发生在 P115 底部代码片段的倒数第五行和倒数第三行,将 *args 写成了 ×args,难不成相关人员在输入大量英文时还在使用中文输入法?

其他的小错误还有很多,在此不一一列举了。听说这本书会再印,希望下次印刷前能把这些错误更正。

总结

这本书的内容自不必说,很好,看后绝对会有很大的收获,虽然书名是元编程,但大很多内容都在讲对象模型,可以结合 Dave 的一个视频来深入理解这部分的内容。

这本中译本本想给5星,可毕竟出现了一些让我不可原谅的错误,所以扣1星。

~~~ EoF. 感谢阅读!~~~