有网友哪我的文章当做侯捷的文章,把侯捷骂了一通,真是驴唇不对马嘴。

zhc 2003-09-01 10:48:19
我在两年前曾经翻译过more effective C++ 的大部分文章,由于时间、功力都有限,也因为版权的问题(国内出版社要公开出版),我没有翻译完。不过说实话我现在再看这些翻译的文章,自己都觉得翻译得太差了。

今天在侯捷的网站了看到一封读者来信( http://jjhou.csdn.net/article03-13.htm ),引用了我翻译的一段文章( http://www.csdn.net/develop/read_article.asp?id=10998 ),然后以为是侯捷翻译的,就把侯捷的翻译能力大骂了一通,看得我真是哭笑不得,不过侯捷倒是夸奖我的翻译文章是“确实不通顺” ,嘻嘻。
...全文
106 25 打赏 收藏 举报
写回复
25 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wjg19811001 2003-09-01
误会
  • 打赏
  • 举报
回复
jxlucy 2003-09-01
up
  • 打赏
  • 举报
回复
jkit 2003-09-01
哈哈。
  • 打赏
  • 举报
回复
sadjulius 2003-09-01
upup
  • 打赏
  • 举报
回复
David1289 2003-09-01
一场误会啊,不过不管怎样骂人都是不应该的
  • 打赏
  • 举报
回复
listshyp 2003-09-01
估计是误会,呵呵
  • 打赏
  • 举报
回复
cqtcqtcqt 2003-09-01
骂人能缓解情绪。
  • 打赏
  • 举报
回复
紫郢剑侠 2003-09-01
一场误会啊,不过不管怎样骂人都是不应该的
  • 打赏
  • 举报
回复
zhc 2003-09-01
我把侯捷网站上的文章贴过来,大家参考,我在前文已经附了网址,估计大家都懒得打开它。

--------------------------------------------------------------------------------

恶紫之夺朱
侯捷
2003/08/31


--------------------------------------------------------------------------------

■传送日期: 2003年8月14日 PM 03:26
侯捷先生,看了这个您有什麽感想 :)


主 题: 狂骂侯捷
作 者: bigwhiteshark (大白鲨:专业程序员)
所属论坛: 扩充话题 技术书评
发表时间: 2003-08-13 00:24:17

狂骂侯捷

侯捷何许人也? 他乃是台湾人,中华民国人.
侯捷的近段时间在中国名气很大,有些傻瓜还把他捧为神明.
其实他自己说是个书商而已啦.
他之所以成名在于所翻译的书都是好书,加上自己的职业道德,普通计算机软件技术,和台湾方便的与国外出版社勾通的商业环境.
中国很多作者和译者在今天的社会环境中,职业道德早忘记了,计算机软件技术水平不合格, 没有良好的与国外出版社勾通的商业环境,在不停地追逐金钱下产生了很多垃圾书.
当侯捷进入了中国市场后就带来了很多精品的技术书籍.
<<深入浅出MFC2>>
<<C++设计新思维>>
<<More Effective C++>>
<<深度探索C++对象模型>>
<<C++标准程序库>>
等等┅.
我骂他并不是没有采用中文术语┅.而是在于他的风格,这 风格使人要多看几遍才能懂得一二,每一遍的阅读速度很慢.
他的风格是采用大量的英文,小 号( ),中 号[ ] 翻译原作是逐句翻译,上下文不通┅..
他的风格我没有权利去评价,但是他翻译成简体中文并在中国范围内发行.就不得不狂骂牛句.

More Effective C++ 侯捷翻译
1.1 Item M18:分期摊还期望的计算

在条款M17中,我 力称赞懒惰的优点,尽可能地拖延时间,并且我解释说懒惰如何提高程序的运行效率。在这个条款里我将采用一 不同的态度。这里将不存在懒惰。我鼓励你让程序做的事情比被要求的还要多,通过这 方式来提高软件的性能。这个条款的核心就是over-eager evaluation(过度热情计算法):在要求你做某些事情以前就完成它们。例如下面这个模板类,用来表示放有大量数字型数据的一个集合:...

假设min,max和avg函数分别返回现在这个集合的最小值,最大值和平均值,有三 方法实现这三 函数。使用eager evaluation(热情计算法),当min,max和avg函数被调用时,我们检测集合内所有的数值,然后返回一个合 的值。使用lazy evaluation(懒惰计算法),只有确实需要函数的返回值时我们才要求函数返回能用来确定准确数值的数据结 。使用 over-eager evaluation(过度热情计算法),我们随时跟踪目前集合的最小值,最大值和平均值,这样当min,max或avg被调用时,我们可以不用计算就立刻返回正确的数值。如果频繁调用min,max和avg,我们把跟踪集合最小值、最大值和平均值的开销分摊到所有这些函数的调用上,每次函数调用所分摊的开销比eager evaluation或lazy evaluation要小。

隐藏在over-eager evaluation后面的思想是如果你认为一个计算需要频繁进行,你就可以设计一个数据结 高效地处理这些计算需求,这样可以降低每次计算需求时的开销。

采用over-eager最简单的方法就是caching(缓存)那些已经被计算出来而以后还有可能需要的值。例如你编写了一个程序,用来提供有关雇员的信息,这些信息中的经常被需要的部分是雇员的办公隔间号码。而假设雇员信息存储在数据库里,但是对于大多数应用程序来说,雇员隔间号都是不相关的,所以数据库不对查抄它们进行优化。为了避免你的程序给数据库造成沉重的负担,可以编写一个函数findCubicleNumber,用来缓存查找到的数据。以后需要已经被获取的隔间号时,可以在cache里找到,而不用向数据库查询。

以下是实现findCubicleNumber的一 方法:它使用了标准模板库(STL)里的map对象。


<<深度探索C++对象模型>>;更为严重,给人以滥竽充数感觉┅.

*** 侯捷注:接下来是一些激烈的政治言论,此处略 ***

...反过来你们也不要强奸我们,不要以中国的名义翻译海外优秀技术书籍,垄断翻译权.使得我国作家没有权利翻译同样的书籍,我们这些读者没有选择的权利,从而我们不得不忍受你们该死的风格.


■侯捷回覆

针对侯捷而发的激烈言论,三年来我看过不少,不复有太大涟漪。此文虽口出恶言,但毕竟「举证历历」,还是应该端正心情仔细检讨。

文中所引的是《More Effective C++》简体版,这是很被大家称赞的一个译本,怎麽会得此恶评?难道读者的口味差异这麽大?於是我正襟危坐,仔细阅读一遍。

嗯,确实不通顺,但┅为什麽身为译者的我对这些文字和其文风如此陌生呢?是农历七月灵异事件吗?於是我拿出我的电子档,摊开手边的简体版纸本。下面是侯捷简体版译本的对应内容:

条款18:分期摊还预期的计算成本
在条款17中,我赞扬了拖延战术(laziness)─ 也就是尽可能把事情延後执行 ─ 的价值。我也解释了拖延战术如何改善程序性能。本条款中我将站在一个不同的位置,在这里拖延战术无着力点。现在我鼓励你改善软件性能的方法是,令它超前进度地做「要求以外」的更多工作。此条款背後的哲学可称为超急评估(over-eager evaluation):在被要求之前就先把事情做下去。

举个例子,考虑一个 class template,用来表现数值数据的大型收集中心:...
假设 min, max 和 avg 三个函数分别返回该数据群当时的最小值、最大值和平均值。这些函数的实现法有三种。第一种是使用 eager evaluation,於是我们在 min, max 或 avg 被调用时才检查所有数据,然後返回检查结果。第二种是使用 lazy evaluation,於是我们令这些函数返回某些数据结构,用来在「这些函数的返回值真正需要被派上用场」时,决定其适当数值。第三种是使用 over-eager evaluation,也就是随时记录程序执行过程中数据集的最小值、最大值和平均值,一旦 min, max 或 avg 被调用,我们便能立刻返回正确的值,无需再计算。如果 min, max 和 avg 常被调用,我们便能够分期(逐次)摊还「随时记录数据群之最小、最大、平均值」的成本,而每次调用所需付出的(摊还後的)成本,将比 eager evaluation 或 lazy evaluation 低。

Over-eager evaluation 背後的观念是,如果你预期程序常常会用到某个计算,你可以降低每次计算的平均成本,办法就是设计一份数据结构以便能够极有效率地处理需求。

其中最简单的一个作法就是将「已经计算好而有可能再被需要」的数值保留下来(所谓caching)。例如,假设你写一个程序用来提供职员信息,而你预期职员的房间号码在此程序中常常会被使用。更深一层假设职员相关信息存储在一个数据库中。由於大部分应用程序并不需要职员的房间号码,所以这个数据库并没有特别针对此字段做优化。为避免这个有着特殊应用的程序重复不断地寻找职员房间号码而造成数据库的不当压力,你可以写一个 findCubicleNumber 函数,其中会将它所找到的房间号码记录下来。後继再有房间号码的查询需求时,如果该号码已取出,就可藉由高速缓存(cache)而完成任务,不必再查询数据库。

下面是 findCubicleNumber 的一种实现法,其中使用 Standard Template Library("STL" - 见条款35)提供的 map object 做为一个局部缓存:


署名「专业程序员」的网友,不知哪儿弄来那麽一份文字,大喇喇说是侯捷译本,然後大加挞伐。如果说到点子上,骂到正主儿,值得尊敬,可这却┅。

我缺乏兴致去设想这是怎麽回事。真的,我厌倦了这些奇奇怪怪的事情 :)

恶紫之夺朱,恶郑声之乱雅乐,恶利口之覆邦家。

-- the end
  • 打赏
  • 举报
回复
jack_wq 2003-09-01
佩服楼主!
  • 打赏
  • 举报
回复
hisi 2003-09-01
楼主牛B
  • 打赏
  • 举报
回复
hehaorome 2003-09-01
up
  • 打赏
  • 举报
回复
hellion 2003-09-01
这么说zhc是驴唇还是马嘴?
  • 打赏
  • 举报
回复
starssky 2003-09-01
不骂白不骂
  • 打赏
  • 举报
回复
starssky 2003-09-01
不骂白不骂
  • 打赏
  • 举报
回复
TiCrystaler 2003-09-01
这个大白鲨又摆乌龙,真丢大陆程序员的脸。
  • 打赏
  • 举报
回复
huylghost 2003-09-01
楼主的翻译风格会不会和jjhou差不多呢?
  • 打赏
  • 举报
回复
whyNotHere 2003-09-01
接分
  • 打赏
  • 举报
回复
fmy008 2003-09-01
up
  • 打赏
  • 举报
回复
TopCat 2003-09-01
shockjoy(无聊死了):

你看错了,不是楼主被jjhou骂,而是jjhou因为楼主的文章被别人骂……
  • 打赏
  • 举报
回复
加载更多回复
发帖
community_281
加入

446

社区成员

社区管理员
  • community_281
申请成为版主
帖子事件
创建了帖子
2003-09-01 10:48
社区公告
暂无公告