您的浏览历史

编程珠玑:第2版 (20余年畅销不衰,08年度畅销榜TOP50)

 电子书Web试读版:试读本书 全部品种


促销信息
图灵图书真情回馈读者,购买任意两本图书即可选择赠品图书一本,共万本图书免费大赠送.

精彩评论
市场价 : ¥39.00
会员价 : ¥29.25(75折)

基本信息
【评  价】 (共 27 条) 参与评论
【原 书 名】 Programming Pearls (2nd Edition)
【原出版社】 Addison-Wesley Professional
【作  者】(美)Jon Bentley [同作者作品] [作译者介绍]
【译  者】 黄倩;钱丽艳[同译者作品]
【丛 书 名】 图灵程序设计丛书
【出 版 社】 人民邮电出版社     【书 号】 9787115179289
【上架时间】 2008-9-24
【出版日期】 2008 年10月 【开 本】 16开 【页 码】 228     【版 次】2-1
【所属分类】 计算机 > 软件与程序设计 > 综合 > 程序(设计)理论
计算机 > 软件工程及软件方法学 > 综合
编辑推荐

历史上最伟大的计算机科学著作之一.
融深邃思想、实战技术与趣味轶事于一炉的奇书..
带你真正领略计算机科学之美...



推荐阅读

【内容简介】

本书是计算机科学方面的经典名著。书的内容围绕程序设计人员面对的一系列实际问题展开。作者Jon Bentley 以其独有的洞察力和创造力,引导读者理解这些问题并学会解决方法,而这些正是程序员实际编程生涯中至关重要的。本书的特色是通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程问题提供了清晰而完备的解决思路。本书对各个层次的程序员都具有很高的阅读价值。

【作译者介绍】

本书提供作译者介绍
Jon Bentley 世界著名计算机科学家,被誉为影响算法发展的十位大师之一。他先后任职于卡内基-梅隆大学(1976~1982)、贝尔实验室(1982~2001)和Avaya实验室(2001年至今)。在卡内基-梅隆大学担任教授期间,他培养了包括Tcl语言设计者John Ousterhout、Java语言设计者James Gosling、《算法导论》作者之一Charles Leiserson在内的许多计算机科学大家。2004年荣获Dr. Dobb's程序设计卓越奖。.
黄倩 中国科学院计算技术研究所博士研究生,毕业于南京大学,目前主要从事视频处理等方面的研究工作。..<.. << 查看详细

【目录信息】

第一部分 基础
 第1章 开篇 
  1.1 一次友好的对话 
  1.2 准确的问题描述 
  1.3 程序设计 
  1.4 实现概要 
  1.5 原理 
  1.6 习题 
  1.7 深入阅读 
 第2章 啊哈!算法 
  2.1 三个问题 
  2.2 无处不在的二分搜索 
  2.3 基本操作的威力 
  2.4 排序 
  2.5 原理 
  2.6 习题 
  2.7 深入阅读 
  2.8 变位词程序的实现(边栏) 
 第3章 数据决定程序结构 
<< 查看详细目录

【译者序】

本书作者Jon Bentley是美国著名的程序员和计算机科学家,他于20世纪70年代前后在很有影响力的《ACM通讯》(Communications of the ACM)上以专栏的形式连续发表了一系列短文,成功地总结和提炼了自己在长期的计算机程序设计实践中积累下来的宝贵经验。这些短文充满了真知灼见,而且文笔生动、可读性强,对于提高职业程序员的专业技能很有帮助,因此该专栏大受读者欢迎,成为当时该学术期刊的王牌栏目之一。可以想象当时的情形颇似早年金庸先生在《明报》上连载其武侠小说的盛况。后来在ACM的鼓励下,作者经过仔细修订和补充整理,对各篇文章的先后次序做了精心编排,分别在1986年和1988年结集出版了Programming .. << 查看译者序

【前言】

计算机编程有很多方面。Fred Brooks在《人月神话》一书中为我们描绘了全景,他的文章强调了管理在大型软件项目中所起的关键作用。而Steve McConnell在《代码大全》一书中更具体地传授了良好的编程风格。这两本书所讨论的是好软件的关键因素和专业程序员应有的特征。遗憾的是,仅仅熟练地运用这些可靠的工程原理,不见得一定能够如期完成软件并顺利运行。.
关于本书
本书描述了计算机编程更具魅力的一面:在可靠的工程之外,在洞察力和创造力范围内结晶而出的编程珠玑。正如自然界中的珍珠来自于磨砺牡蛎的细沙一样,这些编程珠玑来自于磨砺程序员的实际问题。书中的程序都很有趣,传授了重要的编程技.. << 查看前言

【媒体评论】

“《编程珠玑》第1版是对我职业生涯早期影响最大的书之一,其中的许多真知灼见多年之后仍然使我受益匪浅。Jon在第2版中对素材进行了大量更新,许多新内容让我耳目一新。”.
——Steve McConnell,软件工程大师,IEEE Software前主编,《代码大全》作者
“对每一位遇到的程序员,我都会毫不迟疑地建议他阅读并不断重读这部经典之作。”...
——Slashdot

【书摘】

第一部分 基础
 第1章 开篇   
  1.2 准确的问题描述
对程序员来说,这些需求加起来就是:“如何给磁盘文件排序?”在试图解决这个问题之前,先将已知条件组织成一种更客观、更易用的形式。
  输入:一个最多包含n个正整数的文件,每个数都小于n,其中n=107。如果在输入文件中有任何整数重复出现就是致命错误。没有其他数据与该整数相关联。
  输出:按升序排列的输入整数的列表。
  约束:最多有(大约)1MB的内存空间可用,有充足的磁盘存储空间可用。运行时间最多
几分钟,运行时间为10秒就不需要进一步优化了。
  请花上一分钟思考一下该问题的规范说明。现在你打算给程序员什么样的建议呢?
  1.3 程序设计
显而易见的方法是以一般的基于磁盘的归并排序程序为起点,但是要对其进行调整,因为我们是对整数进行排序。这样就可以将原来的200行程序减少为几十行,同时也使得程序运行得更快,但是完成程序并使之运行可能仍然需要几天的时间。
另一种解决方案更多地利用了该排序问题的特殊性。如果每个号码都使用7个字节来存储,那么在可用的1MB存储空间里大约可以存143 000个号码。如果每个号码都使用32位整数来表示的话,在1MB存储空间里就可以存储250000个号码。因此,可以使用遍历输入文件40趟的程序
来完成排序。在第一趟遍历中,将0至249999之间的任何整数都读入内存,并对这(最多)250000个整数进行排序,然后写到输出文件中。第二趟遍历排序250000至499999之间的整数,依此类推,到第40趟遍历的时候对9750000至9999999之问的整数进行排序。对内存中的排序来说,快速排序会相当高效,而且仅仅需要20行代码。于是,整个程序就可以通过一两页纸的代码实现。该程序拥有所期望的特性——不必考虑使用中间磁盘文件;不幸的是,为此所付出的代价是要读取输入文件40次。
  1.5 原理
那个程序员打电话把他的问题告诉我,然后我们花了大约一刻钟时问明确了问题所在,并找到了位图解决方案。他花了几个小时来实现这个几十行代码的程序。该程序远远优于我们在电话刚开始时所担心的需要花费一周时间编写的几百行代码的那个程序。而且程序执行得很快:磁盘上的归并排序可能需要许多分钟的时间,该程序所需的时间只比读取输入和写入输出所需的时间多一点点——大约10秒钟。答案3包含了对完成该任务的几种不同程序的计时细节。
从这些事实中可以总结出该实例研究所得到的第一个结论:对小问题的仔细分析有时可以得到明显的实际益处。在该实例中,几分钟的仔细研究可以大幅削减代码的长度、程序员时间和程序运行时间。Chuck Yeager将军(第一个超音速飞行的人)赞扬一架飞机的机械系统时用的词是“结构简单、部件很少、易于维护、非常坚固”,该程序拥有同样的属性。然而,当规范说明的某些因素发生改变时,该程序的特殊结构将很难修改。除了需要精巧的编程以外,该实例阐明了如下一般原理。
正确的问题。明确问题,这场战役就成功了90%——我很庆幸程序员没有满足于我给出的第一个程序。一旦正确理解了问题,习题10、习题11和习题12的答案都会很优雅。在查看提示和答案以前,请努力思考这些问题。
位图数据结构。该数据结构描述了一个有限定义域内的稠密集合,其中的每一个元素最多出现一次并且没有其他任何数据与该元素相关联。即使这些条件没有完全满足(例如,存在重复元素或额外的数据),也可以用有限定义域内的作为一个表项更复杂的表格的索引,见习题6和习题8。
  多趟算法。这些算法多趟读入其输入数据,每次完成一步。在1.3节已经见到了一个40趟算法,习题5鼓励读者去完成一个两趟算法。
时间一空间折中与双赢。编程文献和理论中充斥着时间一空间的折中:通过使用更多的时间,可以减少程序所需的空间。例如,答案5中的两趟算法让程序运行时间加倍从而使空间减半。但我的经验常常是这样的:减少程序的空间需求也会减少其运行时间。空间上高效的位图结构显著地减少了排序的运行时问。空间需求的减少之所以会导致运行时间的减少,有两个原因:需要处理的数据变少了,意味着处理这些数据所需的时间也变少了;同时将这些数据保存在内存中而不是磁盘上,进一步避免了磁盘访问的时间。当然了,只有在原始的设计远非最佳方案时,才有可能时空双赢。
简单的设计。Antoine de Saint—Exupery是法国作家兼飞机设计师,他曾经说过:“设计者确定其设计已经达到了完美的标准不是不能再增加任何东西,而是不能再减少任何东西。”更多的程序员应该使用该标准来检验自己完成的程序。简单的程序通常比具有相同功能的复杂程序更可靠、更安全、更健壮、更高效,而且易于实现和维护。
  ……

【免费试读】

 电子书Web试读版:试读本书 全部品种
免费试读 第7章..   免费试读 第1章..   免费试读 第5章..  
>>进入在线免费试读
>>51CTO在线试读
评论交流 共有27人开贴评论  42人参与评论  24人参与打分 查看
19人
 79%
用户平均打分
我要写评论 help如何参与评论和打分
2人
 8%
1人
 4%
1人
 4%
1人
 4%

fchnipj

一级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-4-9 9:01:00
个人感觉要看懂本书,需要具备一定的水平。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

linbirg

一级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-3-29 19:41:00
好书,刚买两天,已经快速的阅读了前面五章了,一口气读的。计算机能一口气读的书不多。好书
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

achiever

一级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2008-10-10 18:00:00
终于买到了,看了两章,觉得很不错。这本书原作经典,翻译得也非常地道,做到了信达雅。已经好几年没见过翻译得这么好的书了。希望出版社和译者再接再励,继续为我们奉献好书。
回复 ( 2条评论-- 点击查看讨论 )
您觉得呢? 送鲜花 (得5支)  扔鸡蛋 (得1个)

turingbook
出版商
评价等级:  
发表于:2008-9-30 2:31:00
说明一下,本书与此前电力版对应的原版是一个版本。电力版的版权已经过期,而且原来的翻译错误很多,总体质量不佳。为了不使这样堪称不朽的经典著作能在国内发挥更大影响,我们请北大老师主持翻译和审校了一个全新译本,再次出版。在重新翻译和编辑、审读中,我们花费了大量精力,逐字逐句琢磨,质量有了大幅提高,读者可以在阅读中轻松地发现这一点。最有意思的地方,是第3章标题的翻译,原文是Data Structures Programs。以前的翻译是“数据结构程序”。我们发现其中的大漏洞,予以纠正。这一章其实深刻阐述了计算机科学界多年来的一个深邃的思想。大家可以仔细研读一下。另外,我们还首次翻译了本书的姊妹篇More Programming Pearls,使两卷得以合璧。不足之处,还请大家指正。
回复 ( 6条评论-- 点击查看讨论 )
您觉得呢? 送鲜花 (得1支)  扔鸡蛋 (得5个)

fullsail

三级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2008-12-24 17:50:00
很喜欢这本书。我想每一个有些经验的程序员在阅读每一章前半部分时差不多应该都会有“嗯!”的认同感,在接近该章结束的时候,可能是以“哈!”的感受结束的。有些例子挺有意思,有不小的启发性,尤其是变位词操作和几个与有关优化的例子。看得出来,译者在翻译上是下了功夫的,比如指出了几则原作中不一致的地方。这是不多的几本值得重读的著作之一。
回复 ( 1条评论-- 点击查看讨论 )
您觉得呢? 送鲜花 (得1支)  扔鸡蛋 (得0个)
我要写评论
查看所有评论交流(共27条)