先谈谈最近的两件时事。它们恰巧都与Java有关。首先是在Java开发界长期以来享有盛誉的JDJ(Java Developer’s Journal)杂志每年一度的读者选择奖揭晓了。这个奖项一贯受人重视,因为它是由杂志的读者投票选出来的,没有什么评委,比较能够反映普通程序员的意见。其中,在最受瞩目的图书一项,历久弥新的Think
Java的名字如何得来,历来众说纷纭。Wikipedia上列出了两种说法,一是开发小组开会讨论名字未果,于是一起去了一家咖啡店……二是Java是几个核心开发人员的名字缩写,其中的J当然就是Java之父James Gosling了。前一种说法流传较广,一般的教科书上都这么说。然而,最近Gosling接受Sys-con.com的采访时,却给出了另一种权威然而不太为人所知的起源。
当时已经到了产品发布之前的关键时刻,不料Gosling自己选择而且大家一直没有异议的Oak一名却被律师否决了――已经有另外一种语言命名为Oak。所以,重新取名成了头等大事。开发小组和市场营销人员只好一起头脑风暴,并有一个起名专家辅助,律师则随时查询提出的名字有无法律问题。起名专家启发大家:“你对这种技术的感觉是什么?”大家都回答:“Excited(令人兴奋)!”
一系列名字根据Excited的感觉取出来了。列表中第一个名字是Silk(丝绸),大家都喜欢,但Gosling除外。Gosling自己心仪的是列表中的第三个Lyric(抒情诗),但是这个名字却没有通过律师的查询。Java是列表中的第四个名字,Gosling不能完全肯定是谁最先提出的,但应该是Mark Opperman。总之,Java就这样在一片混乱中诞生了。有趣的是,Mark Opperman在加入Sun之前,曾经任教于北京大学,教授C和Unix,会说中文和日文。他早已不在Sun公司工作,而是创办了两个非盈利组织,致力于促进全世界学生之间的理解,以有助于世界和平。
言归正传,本月专栏我们来推荐一下今年新出的优秀高等学校计算机教材。总的来说,2007年的计算机教材市场总体上比较平稳,可以用波澜不惊来形容。Web2.0、搜索引擎等计算机技术的发展,似乎还远没有对计算机教材产生太大的影响。“十一五”规划的第二个年头,就计算机学科领域来说,入选“十一五”国家级规划教材的出版也处在比较平稳的阶段。其中高等学校教材的龙头机构高等教育出版社最具代表性,全年到目前为止只出版了为数不多的计算机类教材,与前几年数量上的突飞猛进形成鲜明对比。而清华大学出版社、电子工业出版社、机械工业出版社、人民邮电出版社等大社也大多把精力花在既有优势图书的改版修订、名牌系列的品种补充上。其结果,就是今年教材图书的平均质量有一定程度的提高,出现了不少值得推荐的好书。当然,其中很多都是旧有经典的新版本。其中,清华大学出版社的“清华大学计算机系列教材丛书”,电子工业出版社的“国外计算机科学教材系列”,机械工业出版社的“计算机科学丛书”,人民邮电出版社的“图灵计算机科学丛书”是最值得关注的重量级丛书。
计算机科学概论
计算机科学概论(第9版)Computer Science:An Overview(9th Edition)作者:(美)J.Glenn Brookshear译者:刘艺等出版社:人民邮电出版社定价:49.00元
近来,不少学校的计算机专业以及一些需要较全面地了解计算机科学知识的其他相关专业的课程设置中,开始出现全景式的导论课。在我看来,这是非常必要的。因为无论我们学习什么知识,首先在脑子中形成大局观,确定自己的努力方向,至关重要。我见过太多四年之后对所学专业仍然只是一知半解的学生了。
事实上,国外的高校对此类课程非常重视,而且往往是由最资深教授亲自授课。国内北大也有过这方面的尝试,取得了不错的效果。本书正是此类课程的上佳教材。多年来它一直深受世界各国高校师生的欢迎,是许多著名大学(包括美国哈佛大学、麻省理工学院、普林斯顿大学、加州大学伯克利分校等)的首选教材,对我国的高校教学也产生了广泛影响。它的特点是“广度优先”,涉及了计算机科学的方方面面。而且在力求广度的同时,还兼顾主题的深度,并把握了最新的技术趋势。
计算机理论
自动机理论、语言和计算导论(英文版第3版)Introduction to Automata Theory,Languages,and Computation(3rd Edition)作者:(美)John E.Hopcroft;Rajeev Motwani;Jeffrey D.Ullman出版社:机械工业出版社定价:59.00元
本书似乎无需多言了。计算机理论方面大牛书的新版。第一作者Hopcroft是1986年图灵奖得主,第三作者Ullman是美国国家工程院院士。要说此书唯一的缺点,可能是数学味道太浓,不是所有读者可以消受的。更易懂的同类图书,推荐Sipser的《计算理论导引》(机械工业出版社)。
形式语言与自动机理论(第2版)作者:蒋宗礼、姜守旭出版社:清华大学出版社定价:29.00元
这是比较优秀的本土原创教材,而且还有配套辅导书和教学指导书。
离散数学
离散数学及其应用(原书第5版)Discrete Mathematics and Its Applications,Fifth Edition作者:Kenneth H.Rosen译者:袁崇义等出版社:机械工业出版社定价:79.00元
本书是国外高校中使用最为广泛的离散数学教材,几乎没有同级别的竞争对手。它的优点在于与实际结合很紧,实例非常丰富而且贴近生活,比如离散数学在生物、互联网中的应用。习题有不少需要上机实现。另外,书中提供了许多与知识相关的数学家和计算机科学家的小传,有助于增加学习兴趣,也非常值得借鉴。
数据结构
本课程今年的最大新闻,当然是主流教材严蔚敏和吴伟民的《数据结构(C语言版)》一书(清华大学出版社)的更新。本书的销量非常惊人,在计算机基础课程教材中似乎仅次于谭浩强的C语言。此次改版似乎变化不大。平心而论,本书应该还有不少提高的空间,毕竟近年来已经出版了不少其他优秀的国外教材,可以借鉴,比如加强与开发实际的联系,引入比较新的例子等等。但相比国外经典名著的修订频率和幅度,我们国内的经典教材还有相当的差距。
算法
算法方面是近年来的出版热点,好书不断。去年有重量级的Corman等的《算法导论》(机械工业出版社)出版,今年则迎来了本专栏此前介绍过的今年奈望林纳奖得主Kleinberg的算法大作《算法设计》中文版(清华大学出版社)的出版。由于作者处于目前学科前沿,是新一代学者中的佼佼者,所以本书与最新的发展结合比较紧。此外,本书是围绕算法设计技术组织素材,偏重算法的设计而非分析。当然,70多元的价格使它很难进入国内的课堂了。清华大学出版社还出版了广受好评的Anany Levitin《算法设计与分析基础》的第2版。这本书我们以前曾经介绍过它的老版本,写作思路与前一本书类似,但更加通俗,比较适合初学者。
另一本值得一提的算法著作,是Alfred V.Aho、JohnE.Hopcroft和Jeffrey D.Ullman合著的《计算机算法的设计与分析》(机械工业出版社)。这是一部老经典,原书出版年代比较早(1974年),但影响很大,今年才有中译,好像让人有些唏嘘。与Kleinberg相比,此书的好处是分析比较严密,与上面介绍的计算理论书一脉相承。当然,其中有些具体细节肯定有过时的问题了(所用语言是Algol,译者增加了C/C++实现),这些年算法研究中的最新进展,也肯定无法反映。
这方面本土教材中,有电子工业出版社出版的王晓东《计算机算法设计与分析》值得推荐。今年出版了第3版,几乎是每3年修订一次,在国内是值得称赞的。此书用很多具体问题来讲算法,能够很快引发学生的兴趣,降低学习门槛,而且涵盖比较全面。缺点是代码不够理想,有拼凑的痕迹。
数据库
数据库方面教材虽然品种很多,但是总体精品较少。《数据库系统基础:初级篇(第5版)》(人民邮电出版社)是国外的主流教材,在国内也有较大影响。译者是中科院的教授,译文很认真。它具备优秀教材都有的优点,理论和实践很好地结合,论述清晰,实例丰富,而且内容新颖(包括基因、数字图书馆、GIS等应用,以及数据库领域最新的发展)。
今年还有一部数据库大作的新版出版,那就是数据库先驱Date的《数据库系统导论(原书第8版)》,但是75元的价格,也意味着它被视为教材有一定难度了。
程序设计语言
程序设计语言可以说是兵家必争之地。目前出版的热点,仍然还是集中在C、C++、Java、几种语言上。
C语言方面虽然谭浩强老师的书(清华大学出版社)早已树立了霸主地位,读者作评价时对其中的一些欠缺抱怨很多,而该书的优点(通俗易懂、深入浅出)则很少有人真正学习。令人遗憾的是,一些明显的技术性错误、代码风格不佳、与开发实战联系不紧、观点较老、不够深入等问题可以说是国内众多C语言教材的通病,前年修订的新版有所改进,然而仍然无法达到预期目标。这也为竞争者提供了机会。今年出版的C语言图书中,人民邮电出版社出版的K.N.King的著作《C语言程序设计:现代方法》是包括哈佛大学、麻省理工学院等在内的国外数百所高校的指定教材,在实战性、现代观点、标准化和全面性等方面正好与国内一般的主流教材形成鲜明对比,值得大家重视。另外,国内哈尔滨工业大学苏小红老师等编写的《C语言大学实用教程》今年出版了新版。它在国内编写的C语言图书中是比较突出的,很大程度上解决了过去一些同类教材的通病。
C++和Java方面仍然都是书多而不精的局面,尚未形成主流教材。今年的C++新书乏善可陈,而Java方面有人民邮电出版社前不久出版的《Java教程(第4版)》(Sharon Zakhour等著)是由Sun公司Java团队亲自执笔撰写的,而且经过多年的修订,吸取了大量读者反馈,作为Java教程,已经渐趋完美。非要挑毛病的话,就是其中专门用一章讲Applet似乎大可不必,毕竟Applet在实际开发中的应用已经不大。
计算机组成与体系结构
本领域的两大经典今年都有新版问世。两部著作都是斯坦福大学校长JohnL.Hermessy和前ACM主席David A.Patterson合著的。两人还同为美国院士,因为RISC架构(MIPS和SPARC)的先驱性贡献成为体系结构领域的执牛耳者。两部书的内容上联系较多,但各有侧重。顾名思义,第一部更多地从量化上着手,所以更加深入,有很多计算公式。第二部重点考察软件和硬件之间的接口,可以更好地满足软件工作者改进性能的需要。新版本当然很好地反映了本领域的新进展,比如多处理器带来的各种并行问题,再如Google的PC集群等大家关心的实例。
计算机系统结构――量化研究方法(第四版)Computer Architecture:A Quantitative Approach,Fourth Edition:作者:(美)JohnL.Hennessy;David A.Patterson译者:白跃彬出版社:电子工业出版社定价:69.80元
计算机组成与设计硬件/软件接口(原书第3版附光盘)Computer Organization and Design:The Hardware/Software Interface,Third Edition作者:David A.Patterson;John L.Hennessy译者:郑纬民等出版社:机械工业出版社定价:75.00元
操作系统
操作系统是经典云集的地方。但今年有新版出炉的是Tannenbaum的大作《操作系统设计与实现(第三版)》(电子工业出版社)。本书最好的广告是,Linux正是Torvalds读大学在书中MINIX操作系统源码的启发下开发出来的。此外,本书中的源代码还曾经成为许多高手成功的秘籍。Tannenbaum是ACM会士、IEEE会士以及荷兰皇家科学艺术院院士。除MINIX之外,他还参与或者领导设计开发了Amoeba和Globe等操作系统,是一个不折不扣的实践派。国内的主流教材汤子瀛编著的《计算机操作系统》(西安电子科技大学出版社)今年出版了第3版。有些令人遗憾的是,新版改动似乎看不出明显的时代色彩。
计算机网络
计算机网络也拥有众多的经典,与操作系统相比毫不逊色。除了Tanenbaum的老经典《计算机网络》(清华大学出版社),凭借自顶向下的方法而有青出于蓝趋势的Kurose《计算机网络:自顶向下的方法》(机械工业出版社)之外,还有今年出版了中文版新版的DouglasE.Comer《用TCP/IP进行网际互连第一卷》(第五版)(电子工业出版社)。当然,这本书是按TCP/IP模型而非ISO模型讲述的。Peterson和Davie的《计算机网络:系统方法》今年出版了第4版英文影印版(机械工业出版社)。这本书有一定难度,在美国主要是一些顶尖名校使用。国内的优秀教材中南开大学吴功宜编著的《计算机网络》出版了第2版(清华大学出版社),此书对新知识的更新很及时(无线网、SAN等),而且层次清楚,并配有实验书,受到了广泛好评。
计算机图形学
计算机图形学(第2版)Fundamentals Of Computer Graphics作者:(美)Peter Shirley译者:高春晓等出版社:人民邮电出版社定价:49.00元
由于三维应用需求驱动,计算机图形学也是近年来发展较快的领域。此前,国内已经引进了不少本领域主要的经典,包括Foley等人的《计算机图形学:原理及实践》(机械工业出版社)、Hearn的《计算机图形学》(电子工业出版社)、Angel的《交互式计算机图形学》(今年电子工业出版社和清华大学出版社分别出版了第4版的英文和中文版)等。唯一遗漏的一本,今年也已经出版,这就是《计算机图形学》(第2版)。本书可以称得上是计算机图形学方面的后起之秀,出自世界图形学学术重镇――犹他大学,计算机图形学的发展史上刻满了犹他大学师生的名字,包括本领域的图灵奖得主Ivan Sutherland和Alan Kay。本书采用了专注于基础理论的方法,这样不至于过早地纠缠于具体的、变化很快的各种图形API的细节,影响读者对学科内在脉络的理解。因此出版未久就成为众多名校的指定教材,包括加州大学伯克利分校、哥伦比亚大学、斯坦福大学等名校。当然,本书最大的优势,还在于定价比其他经典更加符合国情。
软件工程
软件工程方面由于软件学院的教材需求,仍然是出版的热点。今年三大软件工程经典中,有Pfleeger的《软件工程》(人民邮电出版社)和Ian Sommerville的《软件工程》(机械工业出版社)出版了新版的中文版(分别为第3版和第8版),可见本领域的发展还是很快的。最新的关注点当然是极限编程为首的敏捷方法。此外,软件架构方面的经典之作Mary Shaw与David Garlan的《软件体系结构》一书中译也终于由清华大学出版社出版。这本书年代虽然有些久远,但其中精髓仍然属于必读。国内新出教材中,机械工业出版社出版的由韩万江编著的《软件工程案例教程》以案例方式组织,有一定特点。
其他
计算机科学发展日新月异,由于需求推动,热点不断。但总体而言,国内目前前沿主题的出版还不够令人满意,这对于整体科研大环境的构建是不利的。其中,值得一提的是清华大学出版社的《蚁群优化》,是这个时下非常热门的算法发明人MarcoDorigo的权威著作,所以得到了学界的广泛欢迎。这证明了前沿主题并非没有市场。另外,数据挖掘方面的经典韩家炜所著《数据挖掘:概念与技术》第2版的中译本也已由机械工业出版社由加拿大引进出版。新版增添了许多新的反映现实需求的重要课题,包括流数据、社会网络、多媒体等复杂数据的挖掘,这些正是Web2.0网站、GIS应用领域的急需。这种与现实紧密结合的方式,值得国内教材多多借鉴。