有感于《游戏脚本高级编程》的劣质翻译_游戏脚本高级编程书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 游戏脚本高级编程 > 有感于《游戏脚本高级编程》的劣质翻译
Lei 游戏脚本高级编程 的书评 发表时间:2008-07-01 12:07:46

有感于《游戏脚本高级编程》的劣质翻译

  Alex Varanese的《Game Scripting Mastery》是本不可多得的好书,我在网上试读几章后就决定买一本,看了下有中文翻译版的,于是花了70多块钱在网上订购了一本,从此,噩梦开始了。

    以前基本没买过清华大学出版社翻译的书,我学C/C++时看的基本都是侯捷老师的作品,不管是亲自撰写还是翻译,侯捷老师都能做到认真二字,每一行代码,每一句翻译稿都经过仔细推敲,甚至还能发现原书的不妥之处,把自己的修改意见放在译文边上做为参考。后来还有买了些李建忠翻译的.Net书籍,着实不错。这让我对市面上的书籍估计的过于乐观,闲话少说,来说这本书吧:

    《游戏脚本高级编程》拿到手的第一感觉还是不错的,重新设计了封面,封面上绘有中国气息的龙图案,写着清华大学出版社,北京递归开元教育有限公司审校。我看还有专门的审校公司,质量应该有保证。可是一翻开书,粗粗看了下,就发现有点不对:

本书目录结构就有明显错误,第8章和第10章都叫“汇编语言入门”,而实际上第10章是讲虚拟机的。这个错误可以很容易在卓越网的目录结构上看到。
英文原版的每页都有精美的图形页脚页尾,中文版的只是白纸黑字。
英文原版对应的每个关键字都有特殊字体(斜体)表示,而中文版的正文就一个字体过去,并且没有关键词翻译对照表。
原文中的备注用的是一个精美的方框,黑底白字写上注释,而中文版的就一个简单的注释跟在正文后面。
做为一本标价99元人民币的书籍,中文版并没有将原文中的图片重新绘制,导致图片显示失真现象很严重,在英文版很清楚的图片,经过了第二次印刷后效果大大不如从前。
本书的CD-ROM不包括微软提供的DirectX,而是要读者自己去下。
以上是中文版的书给我的第一感觉,不过我们毕竟是看内容,只要内容好,对于书的包装和排版就别做过多苛求了,因为我对汇编语言比较感兴趣,所以我就先读了第8章,读着读着,实在是读不下去了,很多翻译感觉就像机器翻译出来的,虽然每个汉字都认得,但连在一起就不想到到底是个什么意思,没办法,重新买了本英文的,一对比,恍然大悟,不是我理解能力不行,实在是翻译的太不负责任!我只举8.36这一小节(中文版299页开始,英文版389页开始)做为说明:

中文版:由于堆栈固有的增长和压缩能力,以及严格和顺序的命令用来压入和弹出数据,堆栈已经成为管理顺序变化数据(也就是函数调用的剧烈行为)的典型数据结构。 不知道各位看到上面这段翻译是什么感受,我反正是一头雾水。什么叫“顺序变化数据?”什么叫“函数调用的剧烈行为?”看原文吧:The stack, due to its inherent ability to grow and shrink, as well as the rigid and predictable order in which data is pushed on and popped off,make it the ideal data structure for managing frequently changing data—namely, the turbulent behavior of function calls. 于是一切都清楚了,所谓的“顺序变化数据”正确意思应该是“经常变化的数据”,再具体一点,指的是函数调用时,需要传递给堆栈的返回地址,参数,返回值等等,你也许还需要处理函数中的局部变量,所以数据是frequently changing 的。而不是什么“顺序变化”!
如果上面这个例子让你一头雾水的话,下面这个例子就让你觉得莫名其妙。这个例子是介绍堆栈的两个基本操作PUSH和POP,我们先看英文版吧:Push accepts a single value and pushes it onto the stack. Pop accepts a single memory reference and pops the top stack value into it.这段话在中文版被翻译成:压入操作接收一个值并把它压入堆栈。弹出操作会弹出堆栈顶部的值并把它赋给一个内存引用作为自己的返回值。 这时候容易让人疑惑的是,翻译最后的“作为自己的返回值”这句话是从哪来的?大家都该清楚Pop语句只是将栈顶元素赋值给那个接收的参数,并没有什么返回值!。此外这种Push和Pop这种单词,一般正规的默认不翻译,保持英文更让人容易理解。而返回值(return value)这个单词在本章中特指函数的返回值,估计被人翻混了。
好了,上面两个翻译如果你说我强词夺理的话,这次看的这个错误也许是个人都不能容忍了:英文原版:Call is a lot like Jmp in the sense that it causes the flow of execution to branch to another instruction.However, in addition to simply making an unconditional jump, it also pushes the current instruction index (which is its own index, as well as the return address) plus one onto the stack. It adds one to its own address to make sure the function returns to the following instruction, not itself;otherwise you’d have an infinite loop on your hands.,在中文版中被翻译成:Call使得执行流分支到另外一个指令,从这个意义上来说很想Jmp。然而,除了做了一个简单的非条件跳转之外,同时还把当前指令的索引(是它自己的索引,也是返回地址)压入堆栈。它把自己的地址压入堆栈来确保函数返回到下一条指令,而不是自己,否则的话就造成了一个无穷循环。问题来了,英文原版红色的plus one在中文版的翻译中哪去了?英文原版的意思是当发生函数调用时,Call指令会把“当前指令的索引+1”做为函数返回值压入堆栈,这样函数退出时,就执行堆栈中的“当前指令的索引+1”的指令。可翻译中却把+1漏掉了,这不正是造成死循环的原因吗?
其他的翻译晦涩,翻译错误还很多,比如书中后来提到了堆栈对返回地址(return address)的处理,以及堆栈对函数返回值(return value)的处理。对照英文原版可以看到,中文版至少有两处把return value 和return address翻译混淆,本该是“返回地址”的地方翻译成了“返回值”。
    基于以上原因,我决定再买一本英文原版(因为这本书的确值得买,值得细看),同时奉劝各位还是打开金山词霸看英文原版吧,最多也就是单词不认识。看中文版只会让你一头雾水。另外,开始怀念看侯捷老师书的日子,怀念那种和作者一起交流,一起学习人类智慧结晶的喜悦。而不是面对一堆翻译出来像机器翻译的,毫无生气的文字。对于本书的翻译,我只能用一句话形容--用google翻译吧,也许效果还好点!

展开全文
有用 18 无用 0

您对该书评有什么想说的?

发 表

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

对“有感于《游戏脚本高级编程》的劣质翻译”的回应

遥远天空下 2013-01-30 23:25:13

多谢,不然就买了

秦鹿 2012-03-15 12:55:42

翻译确实一般,最好中英文对照看吧,觉得书本身还是很赞的

BPS1945 2011-07-17 11:29:25

我现在只要一看到 清华大学出版社 出版的书就不敢买,清华出版社貌似是给钱就印,,,比机工和人邮的书差远了

非常理想 2009-04-20 10:03:57

现在有些人急功近利,拿个机器翻译的东西改改就出版,极度不负责任。我看了电子版的,觉得很有收获,正想去买一本回来再仔细看看。感谢你的评论!

goldenfire 2009-03-23 11:13:17

差点买了 幸好看到你这个评论。。

Render 2009-03-21 23:33:11

翻译大概不懂编程 哈哈

Gohan 2008-07-14 08:57:07

本来今天想去买一本的,看来还是看英文电子版算了。。

Lei 2008-07-04 11:10:03

很无语的是我把评论发到当当和卓越,都被河蟹掉了。
以后买书真的不能听这种门户网站的评论了,都是利益相关,只许说好,不能说差。不过话说回来,这本书还是很经典的。

蝴蝶来过这世界 2008-07-04 10:12:29

还在看中,清华的 给我最好印象的就是c的那本 不过不是翻译的 翻译的感觉看上去都是会看死我的 象过几天要考试的体系结构- -

jackyyvan 2008-07-01 14:00:59

同感,大部分翻译过来的经典著作都有点让人猜不忍睹的感觉!!!