《C程序设计语言》翻译挑错,不断更新中

《The C Programming Language》的中译本《C程序设计语言》由机械工业出版社出版,徐宝文、李志翻译,尤晋元审校,K&R甚至为它专门写了个中文版序,可惜经典又被翻译糟蹋了。我手头的是2008年4月第二版第19次印刷,依然有着翻译错误甚至印刷错误(不可原谅!),香港虚拟主机,也许大名鼎鼎的尤晋元教授审校时忘记带眼镜了。

有错误不可怕,但缺乏错机制就让人恼火了。遍寻网络也找不到官方勘误表,甚至交流方式都没有,只能说出版社和译者没把后续服务当回儿事。有些作译者通过个人主页、博客或邮件组同读者进行交流,在此表示敬佩。但整体而言,IT图书的出版以图灵运做的最好,有和读者交流的专门网站,图书勘误也在上面发放,这样大大降低了双方交流的成本,必须夸奖!

回到正题上来,我正在阅读K&R的英文版(提高英语和C语言水平),但信心不足,辅以中文版一册,发现许多错误,不爽,决定在这里记下来(果然IT技术书籍有原版就不要读翻译本,唉~~~),这篇blog会写很长时间,因为我的英语水平一般般(现在,只是现在一般般)。2012.07.23

阅读第一章,发现一些小错误让人十分恼火,因为直接读中文就能看得出来。说实话一边读原版一边对比蹩脚的翻译实在太不爽了。接下来我打算采用先英文,后中文的方式看剩下的内容,那么只有那些大的错误(类似引言1)或者火星中国人才能读懂的句子才会发现。所以,为了自己好,一定要学好英语呵!K&R不适合初学者,如果你头次接触C语言,我推荐宋劲杉老师的《Linux C 编程一站式学习》,或者你英语好就直接读英文的入门材料,比如《Learn C The Hard Way》这种;至于老手,看原版吧。我把其他人的错误总结记在后面,大家看一下。  2012.07.27

——————————————————————–

引言

1.pXIII第5段,“函数定义可以不是嵌套的,香港服务器,”

你妹啊,幸好我之前学过C,不然就被忽悠了!原文是”Function definitions may not be nested”,may not在这里是“不可以”的意思啊老师!就算你英语不好,美国服务器,C语言总该用过吧,这也太坑爹了!

正确翻译:“函数定义不可以嵌套”。

2. pXIII第10段,“这就意味着必须通过调用函数来比较两个字符串吗”

这句不算错误,只是作者在这里吐槽一下自己,很幽默的一句被翻译得索然无味,原文是:

“You mean I have to call a function to compare two character strings?”

3. pXV第2段,“所采用的方式将比第1章更加形式化一些”

原文是formlly,这里用”正式“更易懂些:

“所采用的方式将比第1章更加正式一些”

2012.07.23

——————————————————————–

第一章导言

1. p25,练习 1-20,“……使空格充满到下一个制表符终止位的地方”

原文next应该翻译成“靠着,紧挨”的意思,不是下一个!

“……使空格充满到挨着制表符终止位的地方”

2012.08.22

——————————————————————–

第三章控制流

1. p54,3.7节最后一段, “当循环的后面部分比较复杂……则可能需要把测试条件颠倒过来或者缩进另一层循环,这样做会使程序的嵌套更深。”

这一整段我个人以为都错了。

“The continue statement is often used when the part of the loop that follows is complicated, so that reversing a test and indenting another level would nest the program too deeply.”

当循环体很复杂,逆转测试条件下再缩进一层执行会让程序会嵌套得太深时,就需要continue语句出场表现了。

结合上上面的例子看,如果不用continue,就要写成这个样子:

for (i = 0; i < n; i++) {if (a[i] >= 0) {…}}这几年大多是昆明空运来的,

《C程序设计语言》翻译挑错,不断更新中

相关文章:

你感兴趣的文章:

标签云: