本文的上半部分发表以后,引起了一些读者的爱好。有读者对我所说的“许多普通读者面对书海,仍然无所适从”大有同感,并且询问到具体如何选书买书的问题。其实,同样的问题在各种场合包括论坛、技术讲座上,我曾经无数次被问到,所以在继续介绍Java好书之前,我先花一点篇 幅说明一下。
关于选书的经验之谈
以我个人的经验来看,选中适用图书的要害,在于“知己知彼”。知己,当然就是对自己有正确的定位。拿Java来说,你在购买第一本Java图书之前,需要确定自己处于什么层次。假如编程经验较少,对基本的程序设计语言概念都知之甚少的话,《Java核心技术》或者《Java编程思想》就不太合适了,这一层次的巨著都在书的最前面明确说明读者需要“一定的编程经验”,而《Java语言导学》、《21天学通Java2》可能是你的正确选择。假如你学习过其他程序设计语言,了解“要害字”、“函数”、“数据类型”等等基本概念,但是对面向对象完全是门外汉,那么《Java编程思想》是一个很好的起点,它是典型的对象优先(ObjectFirst)教学法的代表。假如你已经是有一定经验的C/C 程序员,《Ja鄄va核心技术》显然最适合你,因为书中有许多专门针对C/C 程序员的提示,而且循着“环境·语言结构·面向对象”顺序讲解。其余类别的图书也可以按照这种思路选择。
此外,我有一个非凡的建议:假如你的英文不错,建议入门的时候以英文版为主,辅以一本中文基础教材,尤其是面向对象的概念方面,英文直接阅读理解,往往比中文更加轻易。因为面向对象概念其实涉及语言和知识表示中较深层次,恰恰是不同语言区别较大,不轻易移译的地方。加之国内早期翻译不够审慎,而且统一性不足,使用中文术语体系理解,有时候反而事倍功半。就以“面向对象”一词来说,新手对此是很难望文而生义的,这是典型的不良翻译范例。曾经有一个比较夸张的笑话,说有人将《面向对象方法》当成谈恋爱技巧书买了回去,其实正说中了此译的弊病。相对而言,海外译为“物件导向”,要更接近原意。这里的对象=object,就是中文的物体、事物乃至事情,所以《Ja鄄va编程思想》有“万事万物皆对象”(ev鄄erthingisanobject)的说法。而这里的面向=oriented,其实是“以……为重点/中心”、“(此方法/领域中)……很重要”的意思。所以面向对象=object oriented的英文原意,其实是“以事物表示为中心”之义。时至今日,专业人士当然不再可能有出上述笑话的可能,大家反而已经习惯这一术语体系,并且母语化了。但是学习面向对象技术的新手呢,他们仍然免不了在“类”、“类型”、“接口”、“实例”、“成员”、“方法”、“实现”、“协定”、“字段”、“属性”、“服务”、“消息”……构成的语词森林中筚路蓝缕。从这一点来说,国内高等院校开始双语教学,是有其益处的。
正确选书的第二个重要环节就是知彼了,也即尽量多地了解相关图书信息。遗憾的是,目前国内客观而且有内容的书评类资料非常缺乏,出版社提供的信息又往往公信力不够。本专栏的目的之一,就是尝试对此情况有所补益。当然,普通读者的获知手段并非没有。第一手的信息,包括出版社、作译者的情况,出版前言、作译序、图书外装帧的介绍文字和设计水平都能透露制作者在此书上花费的功夫几何。前言和序纯属八股文字的图书,作译者专心程度就非常值得怀疑。此外,国内各主要专业网上书店(china pub.com,第二书店,华储等等)都有类似Amazon的自由书评以及各种销售排行榜(不少实体书店也会提供销售排行榜),虽然成色远较Amazon为逊色,但还是很值得参考的,究竟这些都反映着客观因素。尤其是china pub上外版书有直接到Amazon该书原文版的链接,可以很方便地了解原版的评价,然后考虑翻译质量,即可八九不离十了。本报定期刊登的各出版社“销售热点”、“书店经理荐书榜”等等栏目也是图书情况的重要参考。至少,你可以了解到某种、某类书市场上哪些销售良好,哪些是出版社的重点产品。
老实说,目前选书买书的确不是易事。撰写本文过程中,我所查询到的Java图书不下六七百种,但是真正值得评论的却在30种以内。看来,国内出版界离正确的方向还有不小的差距。
继续我们的Java图书盛宴。在综合和入门层次图书之后,我们已经更上一层楼,可以看到更广阔的Java世界图景。首先进入我们视野的是语言编程经验和深入层次图书,面向中级读者。正如闻名程序设计专家Sun公司杰出工程师GuySteele所说:“对于一门程序设计语言,你需要了解三样东西:一是语言核心,即语法结构;二是语言的词汇,包括所提供的数据结构和功能设施;三是语言的习惯用法。”一般的程序设计图书只会涉及到前面两点,而要讨论第三点,往往需要作者有大量的代码开发和阅读经验,难度极大,所以,这一层次目前国内市场上所见图书,基本上都是国外翻译作品。