刘静

刘静的博客

她的个人主页  她的博客

算法心得:高效算法的奥秘

刘静  2014年03月12日 星期三 10:23 | 1101次浏览 | 3条评论

写代码总会遇到难题,时而苦于乘法操作频繁溢出,时而苦于开方算法太过笨拙,于是,程序员之间口耳相传的那些代码秘籍,这些时候就该大显身手了。

写代码总会遇到难题,时而苦于乘法操作频繁溢出,时而苦于开方算法太过笨拙,于是,程序员之间口耳相传的那些代码秘籍,这些时候就该大显身手了。有些小程序,仅两三行代码即能解决平常数十行代码方能实现的功能;还有些小程序,只用0x24924925这般神奇的数字,即能成倍提升运算速度。读者若对此感兴趣,则《算法心得:高效算法的奥秘(原书第2版)》定能令你开怀畅读。

作者从事计算机研发工作数十年,他将期间所得之大量技巧融于书中。本书不但讲授算法技巧,而且还会剖析背后的数学原理,令你在学会某个奇妙算法后,可举一反三,推出很多类似技巧,以运用于不同场合。

在研究这些高效而优雅的算法时,作者还会如数家珍地列出许多变体,并旁征博引地讲述可以解决同一问题的其他思路,铺陈完毕后,更会将各自优劣娓娓道来。实际应用中,经常需要权衡各算法之轻重,嵌入式开发、硬件编程、图形渲染、游戏智能等领域尤其如此,若是平素能像作者这样勤于总结、善于对比,那么在需要用到相关技巧时必能信手拈来,左右逢源。

从培养兴趣、锻炼思维、付诸实践三个角度观之,本书皆为精彩而思辨的智慧书。既可静心品读代码之诗意,又能细致体味数学之美感,何其乐哉!

作者乃业界翘楚,学识渊博而思维开阔,文中部分词句与日常用语及数学、计算机等领域一般用法不甚相同,故译文或加注释或添引号,以强调其特殊含义。

——摘自《《算法心得:高效算法的奥秘(原书第2版)》》译者序

==============================================================

出版书名:算法心得:高效算法的奥秘(原书第2版)

原文书名:Hacker's Delight (Second Edition)

作者:(美)Henry S. Warren, Jr. 著 

译者:爱飞翔 译 

书号:978-7-111-45356-7

定价:89.00元

编辑推荐

  • 由在IBM工作50余年的资深计算机专家撰写,Amazon全五星评价,算法领域最有影响力的著作之一

  • Google公司首席架构师、Jolt大奖得主Joshua Bloch和Emacs合作创始人、C语言畅销书作者Guy Steele倾情推荐

  • 算法的艺术和数学的智慧在本书中得到了完美体现,书中总结了大量高效、优雅和奇妙的算法,并从数学角度剖析了其背后的原理

读者评价

“这是第一本宣称能讲解计算机算法隐晦细节的书,而且讲得还真不错。我知道的每一条技巧书里都提到了,而且还讲了好多好多我不知道的。不论是在开发程序库或编译器,还是在极力搜求优雅算法,此书都可谓天赐良册,应放在高德纳所著《计算机程序设计艺术》那套书旁边。本书第一版刊印后的10年间,它对我在Sun和Google的工作大有裨益,而第二版所添加新内容亦令我惊羡不已。”

——Joshua Bloch

 “初看本书书名时,我想,这是教人怎么入侵计算机系统的书吗?不太可能吧。嗯,那就肯定是一本编程小技巧的集锦。看了之后发现,没错,这就是一本编程秘籍,然而却是一本包罗万象的秘籍。第二版新增了两个大主题,并用数十个小技巧丰富了本书内容,其中有个小绝招是如何在不溢出的情况下求两数均值,我写二分查找算法时直接就把这条拿来用了。这真是本令算法爱好者开怀畅读的书啊!”

—— GuySteele

内容简介

在本书中,作者给我们带来了一大批极为诱人的知识,其中包括各种节省程序运行时间的技巧、算法与窍门。学习了这些技术,程序员就可写出优雅高效的软件,同时还能洞悉其中原理。这些技术极为实用,而且其问题本身又非常有趣,有时甚至像猜谜解谜一般,需要奇思妙想才行。简而言之,软件开发者看到这些改进程序效率的妙计之后,定然大喜。

本书较第1版增补了大量内容

  • 新增了循环冗余校验(CRC)一章,其中讲解了常用的CRC-32校验码

  • 新增了纠错码(ECC)一章,其中讲解了汉明码

  • 详解了除数为常数的整数除法,增补了仅含移位操作和加法操作的算法

  • 不计算商而直接求余数

  • 扩充了与种群计数和前导0计数有关的知识

  • 数组种群计数

  • 执行压缩与扩展操作的新算法

  • LRU算法

  • 浮点数与整数互化

  • 估算浮点数的平方根倒数

  • 一系列离散函数图像

  • 各章均配有习题与参考答案

作者简介

HenryS. Warren, Jr.  计算机科学家,在IBM供职50余年,经历了IBM704时代、PowerPC时代及其后种种更迭。曾参与多个军事指挥与控制系统工程,并且参加了由Jack Schwarz领衔的“SET语言”项目。自1973年起,Henry就职于IBM研发部,努力探索编译器和计算机架构。当前正研究一种旨在每秒执行百亿亿次运算的超级计算机。他拥有纽约大学柯朗数学科学研究所计算机科学博士学位。

译者简介

爱飞翔  资深软件开发工程师,擅长Web开发、移动开发和游戏开发,有10余年开发经验,曾主导和参与了多个手机游戏和手机软件项目的开发,经验十分丰富。业余爱好文学和历史,有一定的文学造诣。翻译并出版了多本计算机著作,如《NoSQL精粹》、《Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法》、《测试驱动的iOS开发》和《JavaScript应用开发实践指南》等。

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
ydjx

回复 ydjx  2014年03月22日 星期六 21:54

a-(a-b)/2?

0条回复

孟光

回复 孟光  2014年03月12日 星期三 15:09

汉明码 -- 我记得大学课本上叫做海明码。我觉得这些专有名词可以不翻译,直接就叫Hamming code就挺好的。

1条回复

  • 徐继哲

    回复 徐继哲  2014年03月12日 星期三 19:15

    同意,即使要翻译的话,也要在后面加上括号,给出英文原文。

    0条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号