[ShiningRay @ Blogger] 一份关于JavaScript高级程序设计的评论

3 views
Skip to first unread message

ShiningRay

unread,
Oct 30, 2006, 9:22:45 AM10/30/06
to nirvan...@groups.google.com
来自Chinapub,一位Renart 的评论
书看完了,现在再来啰嗦几句吧。

一. 关于原著。
总的来说,是本好书。与犀牛书相比,应用方面讲得更多,对语言本身的讲解不如后者深入细致,当然,如果这本书的定位并不是“第一本JS书”,那就没有什么不妥。例外的是,对象的构造和继承部分,这本书比犀牛书细致得多,值得一看。至于网友kavenyan在论坛说的“《JavaScript权威指南》(第四版)中介绍比较混乱的变量的作用域问题,在《JavaScript高级程序设计》用“闭包”等来解释要清晰明白的多”,我不能赞同。本书中在56页用了半页的篇幅来讲了一下闭包的概念,对于不知道闭包的读者来说,是不远远不够的;而且,JS中作用域的特点,也并非用闭包就能完全解释。另外,书中有一些小错误,其中两个:
1.
392页的“4.解析错误”部分,作者试图通过用正则表达式来提取DOMParser对象的parseFromString函数的返回结果中的错误信息,并将其输出。这本身没有什么问题。作者的错误出在此后,他试图在此基础上、以模拟IE平台上的parseError对象的方式来提供一个跨浏览器平台的获取解析错误的方案。因为DOMParser对象的parseFromString函数的返回结果中的错误信息中,诸如“Location”、“Line”等信息实际上会使用本地化字符串(也即,在中文平台上,它们就是汉字),所以作者提供的那个解决方案是行不通的。
2. 429页下方有这样一段代码:
if (typeof XMLHttpRequest == "undefined" &&
window.ActiveXObject) {
function XMLHttpRequest() {
...
}
}
作者的意图,是提供一个跨浏览器平台的构造XMLHttpRequest对象的方案。但问题在于:ECMAScript标准中是不允许在if语句中用这种方式定义函数的(用函数直接量语法或者new
Function语法倒是可以的,参见犀牛书)。尽管许多浏览器对此较为宽容,不一定会把它作为语法错误来报告,但它们对此用法的解释是各不相同的,因此这个“跨平台方案”并不能真正地跨平台。实际上,作者在后面提供的基于这一“跨平台”方案的例子,在IE和Firefox上可以正常运行,但在Opera
8上面却会出错,而且那个错误让人觉得有点荒唐,诸位可以自行实验一下。

二. 关于翻译。
总的来说,还算可以接受,比老邱、老康之流强许多。但也有不少错误。例如:
1.
前言中“JavaScript是一种基于Java的面向对象程序设计语言,它因为能够以嵌入式applet的形式用于Web而流行起来”的问题,网友们早已指出。出版方也作了一点修改,而且在此作了一些解释。但是,出版方的修改和解释并不到位。这句话,大家的意见有两个方面:其一,JavaScript与Java无关;其二,后面的子句修饰的是Java而不是JavaScript(参见网友caiyi0903提供的英文原文“JavaScript
is very loosely based on Java, an object-oriented programming language
popularized for use on the Web by way of embedded
applets.”)。关于第一点,有许多人,包括犀牛书的作者认为JavaScript与Java毫无关系,但也有一些人,包括本书作者认为二者有一小点关系(从本书第一章中的相关叙述可以看出)。OK,既然作者本人认为有点关系,那么作为译者,也只能按他的意思来译。但是,译者和出版方对于第二点所涉及的错误——一个很浅显的错误——至今仍然死不认账的态度,令人遗憾。
2.
15页8行,“如果不用typeof运算符,就对oTemp2使用其它运算符,这将引起错误”,这句话是明显的错译,让人误以为对oTemp2使用任何别的运算符之前必须先对它来个typeof。从译文不难猜出英文原文、以及为何有此错译,无须我多言。
3.
17页倒5行,“与Java不同的是,双引号用于声明字符串,单引号用于声明字符”,这句话也是明显的错译。同样,从译文不难猜出英文原文、以及为何有此错译,也无须我多言。
4.
431页倒4行,“几乎所有现在的浏览器(除IE这个大首部外)都支持LiveConnect”。我的翻译大哥,能不能劳您大驾出来给大伙解释一下“大首部”是个什么东东?是不是big-head?您老不认识这个词不打紧,但作为翻译,您就没想到去查一下字典么?
此类错误在书中还有不少。好在一些错误好歹还能让人猜出英文原文来,至于那些让人猜不透的,读者也只能干瞪眼了。



--
Posted By ShiningRay to ShiningRay @ Blogger at 10/30/2006 05:55:00 下午

ShiningRay

unread,
Oct 30, 2006, 3:13:33 PM10/30/06
to nirvan...@groups.google.com
昨天贴了一份从Chinapub上看到的评论,说实在话,我很心痛,并不在于该网友Renart在技术方面的评论,而在于他最后几句“不中听的话”:
我的翻译大哥,能不能劳您大驾出来给大伙解释一下“大首部”是个什么东东?是不是big-head?您老不认识这个词不打紧,但作为翻译,您就没想到去查一下字典么?
此类错误在书中还有不少。好在一些错误好歹还能让人猜出英文原文来,至于那些让人猜不透的,读者也只能干瞪眼了。我认为这些错误的原因不在于专业水平,而在于职业态度。说到水平,我想给几位译者提个不中听的建议:如果以后不只是写代码,还要做点文字工作的话,请三位务必努力提高自己的汉语水平。
想必Renart并不了解情况。所以我必须向您这位“读者大爷”解释一下:
第一、为什么让我来翻译这本书:本来这本书是打算由张欣一个人翻译的,但是因为数量较多,而且她比较忙,所以需要另找一位帮手。而我从高中就开始翻译一些技术文章,后来因为翻译了几篇JavaScript的文章碰巧正好被出版社的编辑看到了,觉得我还具备一些翻译基础和相应的JavaScript实力,所以才会找到我这个从来没有正规翻译经验的技术人员来翻译。
第二、为什么我要来翻译这本书。其实对于我个人来说,我学习JavaScript根本没有看过纸质的书,电子版的都没有,大名鼎鼎的犀牛书我也没有翻过,其实对于我学其他的东西也是一样。为什么不看这些书,因为以前看那些翻译的书,觉得很多实在看不下去,很多译者只不过是应付了事或者混口饭吃,自己还不懂书中讲的那些东西,翻译出来的更让人云里雾里。所以我觉得与其找其他人,不如让我来翻译,我相信我能带来一部较好的翻译作品。
那不看书我有什么资格说我了解JavaScript呢,那是因为,我自己学习JavaScript的时候,都是去翻阅JScript参考手册、Spidermonkey的参考手册,并自己一点点写代码尝试出来的,甚至为了解决一些概念性问题,我也翻阅了很多网站找了很多资料。
我是搞开发的技术人员,不是全职的翻译人员,利用空余时间尽可能地翻译书也不是为了赚那一点钱。交稿是今年5、6月份的事情,而到现在都11月份快半年过去了,我还没有拿到钱,要靠这个吃饭,岂不是要饿死。而凭技术实力,有翻译这本书的时间做点啥别的项目,也比这个赚钱哪。而之前我翻译了几十篇个方面技术文章,现在都放在NirvanaStudio网站上,免费供网友参考,难道我是傻子么?为什么要花这么多时间去翻译那些资料?都是因为我在学习的过程中发现它们有价值,希望将它们翻译成中文能给其他网友带来方便,能把一些先进的知识分享给其他网友,而最终呢,看得人挺多,转得人挺多,也没个人出来讨论讨论,连顶的人都很少。
Renart您是否需要考虑一下什么才是职业的态度呢?其实这本身就是一个悖论!专业的翻译人员不可能具备专业知识,如果他具备专业知识,那么他就可以不用专职进行翻译而利用专业知识搞开发!如果他不搞开发,那他也不可能具备专业知识!职业的态度就是技术人员为了传播、分享知识而进行翻译、创作,而不是专业译者为了完成翻译工作而去翻译!
所以Renart说我有职业态度问题,我实在很心痛,要知道我在翻译这本书的时候还没毕业,当时正是实习期间,后来又要进行毕业设计、答辩,紧接着离校,然后去公司上班,大家都知道那段时间会有多忙,我要坚持每天翻译。一本书这么多内容,错误再所难免啊。其实您所不知道的是,原书有一些错误我已经在译文中进行了修改——连软件都不可能没有Bug呢——我确实承认自己比较粗心,但像您这样的态度,能不能理解一下我们的情况?如果你是和平地讨论技术问题也很好,为什么非要上纲上线呢。国内还有很多自由译者,技术人员,他们不收利益,去翻译国外各种技术资料,给大家分享,谁能保证自己的东西没有错误?您还能对他们也说有“职业态度问题”吗?不知道您是否也会尝试翻译一些技术资料或者原创一些给别人看看。光靠专业翻译人员翻译的书中的资料是远远不够的,我希望是有更多的技术人员和即将成为技术人员的同学能参与进来,因为只有技术人员才能了解书中的内容,本身那些书也都是技术人员撰写的。知识要靠大家分享,靠大家创造!

不过话要说回来,我也只是为出版社打工,手里并没有这本书的中文版权,书翻译的好了,卖得多了我也不会多赚点,卖差了我也不亏。如果我抱着这样的态度去翻译,也许我就用用金山快译之类的东西搪塞过去了。所以,作为一名技术人员,我也希望和各位读者交流JavaScript技术,翻译错的、原书错误的,可以修正,原书本身解释的不当或没有说清楚的,我们可以告诉大家看什么其他资料继续学习,而不是这样被指着鼻子骂“职业态度问题”!——说我汉语没学好也就算了,这倒是事实。

另外,还有一点,翻译书并非译者的工作,出版社的各方面也有很多参与,甚至会在没有通知我的情况下就修改一些东西。其实当我拿到书一读,有些地方我自己都傻眼了,比如原本我和统稿的人说好attribute是属性、property是特性,结果印出来的都是attribute是特性、property是属性,都反的!而我因为笔记本曾经系统崩溃导致文档丢失,现在也无从考证那个“大首部”是不是我写的,印象中,英文原文是“except IE this major”,为了好理解,我用汉语说得口语化一些,翻译成了“除了IE这个大头”,我不清楚是不是有人改动过。


PS: 昨天我生日

--
Posted By ShiningRay to ShiningRay @ Blogger at 10/31/2006 02:46:00 上午
Reply all
Reply to author
Forward
0 new messages