- 在线时间
- 4 小时
- 最后登录
- 2015-5-5
- 注册时间
- 2015-4-8
- 听众数
- 9
- 收听数
- 0
- 能力
- 0 分
- 体力
- 86 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 38
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 22
- 主题
- 12
- 精华
- 0
- 分享
- 0
- 好友
- 3
升级   34.74% TA的每日心情 | 慵懒 2015-5-5 09:35 |
---|
签到天数: 10 天 [LV.3]偶尔看看II
- 自我介绍
- sdc
 |
注:此文绝非标题党,望耐心看完。
$ n4 V5 Z1 V% ]" a+ I引子:思量好久,觉得有必要说说这本书《算法心得:高效算法的奥秘》(英文书名Hacker's Delight, 2nd Edition)。
8 l6 r% P& H/ ]. {1 A% H本书讲解的题材,可以说市面上仅此一本(如果不算第一版的话),可以说是唯一一本讲解计算机算法的图书——而其他的算法书,则基本上全部是讲解数学算法的图书。虽然说数学算法也主要是为计算机科学服务的,但是数学算法基本上不关心计算机体系结构的细节:CPU的字长是多少?字节序是大端还是小端?带符号数和无符号数如何区分?浮点数格式采用什么标准?可以这样说:运行着数学算法的计算机,其实是图灵机——一种抽象的、在真实世界中并不存在的机器。
1 ]8 v* e1 w8 |8 ?然而真正在实现一台计算机的过程中,计算机体系结构的细节则是极端重要的了:它们提供了数学算法中被忽略掉,但却可以用于优化的结构信息。如果说,在数学算法中,四则运算已经属于“原子”操作,那末在计算机算法中就有必要打碎这些“原子”,进入“亚原子粒子”的世界。加减法和乘除法,那肯定是要分开来讨论的,因为后者绝对要复杂得多,特别是除法。本书极其重视区分逻辑上的(数学的)数,和物理上的(真正计算机中的)数,甚至将前者用普通字体表示,后者用粗体表示。本书花了极大的篇幅,来细致地讨论数的物理表示,以及每一种基本的计算操作——计数、定位、四则运算、初等函数,等等——真正在比特这个层级上,将这些基本操作的全部细节条分缕析地展现出来,尽可能地利用任何可能的体系结构特征,来尽可能充分地利用高速存储、简化哪怕一条计算机指令,并且如数家珍地列举出每一条优化建议背后的原理。这些内容,展示了极其高超的匠艺,读来却没有丝毫的匠气。真正是亲手设计过计算机体系结构、在底层浸淫多年的经验总结,整理出来的心得和资料。8 V, A+ C- I2 E
如果对计算机体系结构有兴趣,以及需要从早期阶段设计计算系统(比如嵌入式系统)的工程师,或是参与语言的低级库设计的程序员,这本书就是无价之宝。
0 c6 N+ Z/ D: Q. e( |想知道你每天使用的C语言的数学运算编译成的机器指令是怎么生成的吗?想知道库函数为什么执行起来那么高效吗?这本书里就是这些问题的答案,它荟萃着的是计算机工程的骄傲。正好比尽管所有普通人都习惯于生活在原子的世界,但亚原子粒子世界才是前者存在的根本理由。
2 c o+ @4 p" O3 H把这本书放在书架上吧,可能它并不是你天天都要翻阅的图书,但如果你有朝一日真需要本书中的内容,别的地方可是找不到的。. X7 R }7 U- G6 O
9 e# }/ a5 b( i1 C& d
|
zan
|