- 论坛徽章:
- 0
|
我前些日子花大价钱买了一本<C++程序设计语言 特别版>,就是Bjarne Stroustrup的那本.译者是裘宗燕.
开始就看不下,总觉得词句别扭,我也没想这么多,心想可能这本书定位就是手册吧,看不下是正常的.
可是今天看了几处,发现可能不是我的问题.
这本书的翻译很有问题.比如第8章<名字空间和异常>的8.1节.最后一段是
"理想情况下,程序里的每个实体都属于某个可以独立识别的逻辑单元("模块").所以,在理想情况下,一个非平凡的程序里的每个声明都应该位于某个名字空间里,以此指明它在程序中所扮演的逻辑角色.例外的是main(),它必须是特殊的,以便运行时环境能干特殊对待它(8.3.3节)"
原文是
Ideally,every entity in a program belongs to some recognizable logic unit("module"). Therefor, every declaration in a nontrivial program should ideally be in some namespace named to indicate its logic role in the program. the exception is main(), which must belong to global in order for the run-time environment to recognize it as special.
53个单词的小段落,这篇译文有几处bug,有的明显,有点隐蔽但是很有误导作用.
1)
nontrivial不是非平凡,trivial在这里作细小讲,trivial program指hello,world之类的小程序,nontrivial指软件行业普通的软件项目,由多个模块组成.
译者翻译成"非平凡",完全不通,金山词霸的智商才会这么翻译.
2)
be in some namespace named to indicate 的named to被译者故意忽略了.这句话的意思是每个声明都应该在某个namespace里,而该namespac的命名表明了它的逻辑角色.比如namespace TaskHandler表明了这是处理任务的模块. Named to indicate这个从句修饰的是some namespace而不是前面一整句话.
译者直接忽略named to,把这句话的意思完全扭曲了.中文读者看上去,会理解成,"之所以每个声明都应该位于某个名字空间里,是因为这样可以指明它在程序中所扮演的逻辑角色",这种理解和原文的意思相差太远,会让读者很困惑.
真正的意思应该是"每个声明都应该放在一个命名空间里,这个命名空间的名字暗示了它在程序中的逻辑角色."
its logic role的it指的是namespace而不是前面的every declaration.
3)
which must belong to global 翻译成"它必须是特殊的",这真是莫名其妙,global翻译成"全局的"完全是金山快译也会的.不会是译者故意把金山快译的作品改错了吧?
4)
其它不通的,拗口的,比如"例外的是main()"这个句子,就不再详细说了.
[ 本帖最后由 lipingtababa 于 2008-12-29 17:17 编辑 ] |
|