忍不住要吐槽,这破翻译书籍:程序设计语言:实践之路(第3版)

fzyz_sb 发布于 2015/06/16 19:48
阅读 2K+
收藏 3

    最近想了解一下语言设计方面(我2015年的计划是把Python源代码过一遍),所以上网看了一点资料,然后就看到一本出名的书:程序设计语言:实践之路.

    特意去了解了一下这本书,作为CMU的教材,这本书的质量绝对有保证.但是由于对于程序设计来说我是门外汉,所以准备先买中文版学习一下,第二次复习就直接看英文版.

    但是我看到第二章的时候,果断把这本书扔掉了.我想用亚马逊上面关于这本书的差评来表达我的想法:

看了这个书,我的中文水平有了很大提高,因为每页都有错别字。BTW,译者用的是拼音输入法,这个信息对读者自动纠错会很有帮助。

   最坑爹的是:当我看不懂的时候我还特意打开英文版对照了一下,我才明白中文说的是什么意思.

    我突然想到两位我比较尊敬的程序员:耗子哥和侯捷.耗子哥直接说:

另外,我在至少45岁前不会出书,因为我觉得在那之前,我是不会沉淀足够的学识,没有资格出书。所以,请各种出版社的编辑们不要再来找我商谈出书的事。与其花精力来找我谈出书,不如想想怎么少出那么多的烂书。

    侯捷先生所翻译的书籍算是精品中的精品,人家把不确定的英文翻译都会以"中-英文"方式整理出来,这本书的两位翻译者有什么勇气直接将:

front end翻译为前端,而back end翻译成后端呢?

    还是鞭策自己把英文能力提高一点......

题外话1:

    在写程序的时候我往往要求自己编写注释,我的程序注释和代码的比例往往是1:3~1:4(Python),因为我不仅仅要对自己所编写的代码负责,还要对以后可能维护我模块的程序员负责.每次我看到同事写以下的代码:

if (p == NULL)
时候就特别着急,总是想让他改为:NULL == p,是因为之前碰到过将p = NULL这样的程序BUG,害得我找这个BUG找了几天(部门重构的一个大项目)

题外话2:

    之前看过侯捷先生写的一本书,好像是Effective C++系列还是C++什么系列,里面他直接用英文术语而非中文,并在注解中坦白说自己不知道如何翻译,或者说找不到一个合适的中文来代替英文.关于front end翻译成前端,我想这是翻译员最经常且直接使用的直译吧.但是英文书籍上特定用斜体字注释这是术语,而术语往往不能直译的(即是两个单词和在一起才有意义,绝对不能分开进行理解).

    其实如果问我front end如何翻译,我想我会翻译成:

you can you up!

加载中
1
d
dbtest
老实说, 你有没有稍微了解过编译原理的内容啊?那么激动愤慨,表明自己态度吗? 不翻译成前端后端翻译成什么呢?你以为前端后端就只能是指web开发那些了?IC设计还有分前端后端呢。

要不你就去看英文原版的, 不批评你吐槽这件事, 但你起码要有一定了解, 吐槽到点上啊。 不说其他的, 这前端后端的翻译完全没问题, 业界都是这样翻译的, 并且从事编译器工作的人也是称谓的。 

在编译技术中, 词法分析,语法分析,语义分析, 中间表示IR, 都属于前端内容, 而代码生成, 代码优化则属于后端的过程。这样区分是为了更好分工, 增强移植性以及专注前后端优化,其中IR即可划入前端亦可属于后端。 实际上, 有很多人说过GCC后端, LLVM后端。    

龙书中文版6章开篇就介绍了这,我也没见人来吐槽这个啊。耗子哥耗子哥水平确实比一般人好, 不过你论出书这件事当他权威也不合适吧,他之前又不是没写过书,如果他45岁之前写过书,那么我觉得他实在不应该就出来就这事发声。事实上很多没到45岁的写了很多不错的书。 

年轻人,带上情绪与不理智不利于讨论问题, 屁大点事还这么激动愤慨。只会说“you can you up ” , 那些心平气和, 认真和你讨论的人都被你吓跑了。呵呵! 
0
K
Kepp

。。。。。你写的好象也是乱七八糟的不知所云吧。

不要打我,打也别打脸

hi_tp
hi_tp
回复 @fzyz_sb : 打他。
fzyz_sb
fzyz_sb
当初学习编程时候第一本书就是谭浩强的那本C,直接断送了我想学习编程的热情,后来参加工作听从朋友的意见,从外国大学的教材学习编程,才慢慢入行. 而国内的一流大学计算机,完全以英文作为教材也是有原因的.我纯粹只是吐槽,那本书已经被我扔了.而且你长得这么帅,怎么忍心打脸呢?毕竟同道中人.
0
PYPlus
PYPlus
lz认为front-end 该怎么翻译呢
fzyz_sb
fzyz_sb
我想我会翻译成:you can you up.
0
北上广深
北上广深
受益匪浅啊,front end 原来不是前端,而是you can you up!
fzyz_sb
fzyz_sb
是啊是啊,所以back end应该要翻译成:you can you down.
0
PYPlus
PYPlus

还有哦 if(p == NULL) 要写成if(NULL == p)
我觉得这是没必要的,现在的编译器做的很好了。对if(p=NULL)这类手误就算没-Wall 也会警告, 除非你编译代码无视编译器警告。编译项目不把全部的警告处理了敢上线? 甚至有些IDE 发现你if(p=NULL) 就会在下面画波浪线提示。

况且if(p == NULL) 更符合人的思考模式(if(p is NULL)), 所以更多的人会写p==NULL而不是NULL==p

0
fzyz_sb
fzyz_sb

引用来自“PYPlus”的评论

还有哦 if(p == NULL) 要写成if(NULL == p)
我觉得这是没必要的,现在的编译器做的很好了。对if(p=NULL)这类手误就算没-Wall 也会警告, 除非你编译代码无视编译器警告。编译项目不把全部的警告处理了敢上线? 甚至有些IDE 发现你if(p=NULL) 就会在下面画波浪线提示。

况且if(p == NULL) 更符合人的思考模式(if(p is NULL)), 所以更多的人会写p==NULL而不是NULL==p

    个人编码风格的问题,主要是以前的部门花了近3个月的时间重构了一个大项目,但是我运行的时候发现有时候会出现BUG,然后不断的调试跟踪才定位到这个问题(编译器是VS2008那时候),然后我告诉自己一定要写成NULL == p.
    身边的一个同事弄安卓的,他说看以前同事(已离职)的代码看的蛋疼.我看了一下,没有一行注释,没有进行任何指针是否为空的判断(他跟我说不知道加了多少个指针判断是否为空的代码了).
    所以我个人希望自己能成为:生活上不会让家人担心,不让朋友担心,工作上不让同事烦的人.
    谁愿意帮你找BUG,而且还没有任何注释的代码!
0
中山野鬼
中山野鬼

引用来自“PYPlus”的评论

还有哦 if(p == NULL) 要写成if(NULL == p)
我觉得这是没必要的,现在的编译器做的很好了。对if(p=NULL)这类手误就算没-Wall 也会警告, 除非你编译代码无视编译器警告。编译项目不把全部的警告处理了敢上线? 甚至有些IDE 发现你if(p=NULL) 就会在下面画波浪线提示。

况且if(p == NULL) 更符合人的思考模式(if(p is NULL)), 所以更多的人会写p==NULL而不是NULL==p

引用来自“fzyz_sb”的评论

    个人编码风格的问题,主要是以前的部门花了近3个月的时间重构了一个大项目,但是我运行的时候发现有时候会出现BUG,然后不断的调试跟踪才定位到这个问题(编译器是VS2008那时候),然后我告诉自己一定要写成NULL == p.
    身边的一个同事弄安卓的,他说看以前同事(已离职)的代码看的蛋疼.我看了一下,没有一行注释,没有进行任何指针是否为空的判断(他跟我说不知道加了多少个指针判断是否为空的代码了).
    所以我个人希望自己能成为:生活上不会让家人担心,不让朋友担心,工作上不让同事烦的人.
    谁愿意帮你找BUG,而且还没有任何注释的代码!
代码的风格,通常都是踩到屎,跌倒坑里,才会慢慢固化下来的。哈。冷暖自知。可能有些人,永远不会遇到这个坑,坑过的人,才理解这是坑。哈。
fzyz_sb
fzyz_sb
哈哈,原本评论翻译书籍有多差劲,但似乎跑题了......实际上我的代码风格很大程度上是受到K&R这本书的影响的,它上面明确要求说要写成NULL == p而非p == NULL.......当然我不懂Java......
0
Brin想写程序
Brin想写程序

引用来自“PYPlus”的评论

还有哦 if(p == NULL) 要写成if(NULL == p)
我觉得这是没必要的,现在的编译器做的很好了。对if(p=NULL)这类手误就算没-Wall 也会警告, 除非你编译代码无视编译器警告。编译项目不把全部的警告处理了敢上线? 甚至有些IDE 发现你if(p=NULL) 就会在下面画波浪线提示。

况且if(p == NULL) 更符合人的思考模式(if(p is NULL)), 所以更多的人会写p==NULL而不是NULL==p

引用来自“fzyz_sb”的评论

    个人编码风格的问题,主要是以前的部门花了近3个月的时间重构了一个大项目,但是我运行的时候发现有时候会出现BUG,然后不断的调试跟踪才定位到这个问题(编译器是VS2008那时候),然后我告诉自己一定要写成NULL == p.
    身边的一个同事弄安卓的,他说看以前同事(已离职)的代码看的蛋疼.我看了一下,没有一行注释,没有进行任何指针是否为空的判断(他跟我说不知道加了多少个指针判断是否为空的代码了).
    所以我个人希望自己能成为:生活上不会让家人担心,不让朋友担心,工作上不让同事烦的人.
    谁愿意帮你找BUG,而且还没有任何注释的代码!

代码没有任何注释这件事比NULL==p严重多了。。

你让别人写NULL==p,还不如让别人加注释有效果。

0
Brin想写程序
Brin想写程序

引用来自“PYPlus”的评论

还有哦 if(p == NULL) 要写成if(NULL == p)
我觉得这是没必要的,现在的编译器做的很好了。对if(p=NULL)这类手误就算没-Wall 也会警告, 除非你编译代码无视编译器警告。编译项目不把全部的警告处理了敢上线? 甚至有些IDE 发现你if(p=NULL) 就会在下面画波浪线提示。

况且if(p == NULL) 更符合人的思考模式(if(p is NULL)), 所以更多的人会写p==NULL而不是NULL==p

引用来自“fzyz_sb”的评论

    个人编码风格的问题,主要是以前的部门花了近3个月的时间重构了一个大项目,但是我运行的时候发现有时候会出现BUG,然后不断的调试跟踪才定位到这个问题(编译器是VS2008那时候),然后我告诉自己一定要写成NULL == p.
    身边的一个同事弄安卓的,他说看以前同事(已离职)的代码看的蛋疼.我看了一下,没有一行注释,没有进行任何指针是否为空的判断(他跟我说不知道加了多少个指针判断是否为空的代码了).
    所以我个人希望自己能成为:生活上不会让家人担心,不让朋友担心,工作上不让同事烦的人.
    谁愿意帮你找BUG,而且还没有任何注释的代码!

而且你说的弄android的,要知道java是有 public和protected,private之分的。

只需要在public方法里面加传入参数的非空判断。

私有方法默认自己控制。 

能不public,不要public,如果是public的方法,一定要装好门面。

0
我不叫大脸猫
我不叫大脸猫
从一个英语专业待了三年后来转行做了程序猿的开发者角度来说, front end这个是要分语境的, 在服务器端, 负责模板渲染并直接呈现给用户的层级就可以叫做前端, 负责数据运算的可以叫做后端; 在客户端, 负责页面布局, 样式, 交互的可以叫做前端, 服务器端统称后端.
fzyz_sb
fzyz_sb
谢谢你的评论,我只是纯粹吐槽,所以信息不完全...... 这本书是关于程序语言设计的书,谈的是词法分析,语法分析等,无关web技术. 因为本身我现在的工作就是前后端工程师,所以让我觉得这样翻译很有歧义......
返回顶部
顶部