# 说明

本文是关于《编程珠玑》这本书籍的相关文章的说明。接下来的时间内我将会用一系列文章记录阅读《编程珠玑》这本书时的相关笔记,如果按照保守估计,一个章节一篇博客来计算的话,至少也是十五篇文章的内容了。当然,实际上可能会更多就是了。

这本书买了也有一段时间了,只是一直没能找到比较好的时间进行仔细地阅读。想了想今后的安排,还是决定慢慢地开始,一点一点地记录相关的内容吧,否则反倒是一直不能开始,也就辜负了书中的内容了。

# 关于本书

# 前言

本书作者 Jon Bentley 是美国著名的程序员和计算机科学家,他于 20 世纪 70 年代前后在很有影响力的《ACM 通讯》(Communications of the ACM)上以专栏的形式发表了一系列的短文,这些文章大受读者欢迎。后来在 ACM 的鼓励之下,作者对这些文章进行了整理和修订,并精心安排了各个章节的内容,最终汇集成了 Programming Pearls 以及 More Programming Pearls 这两本书。

我自己购买的这本中文版是作者在 2000 年修订的《编程珠玑(第 2 版)》,书中的代码示例均改用 C 进行编写。另一本《编程珠玑・续》打算在本书读完之后再购买阅读。

# 内容

本书的每一章节都独立成篇,但是各章节之间又有着逻辑分组。

  • 第一部分(1~5):回顾了编程的基本原理,包括问题定义、算法、数据结构以及程序验证和测试;
  • 第二部分(6~10):围绕效率这一主题展开;
  • 第三部分(11~15):使用前两个部分介绍的技术来解决排序、搜索和字符串等重要问题。

在每一章节的末尾,作者会给出一定数量的习题。作者本人提倡放慢阅读本书的速度,每次最好阅读一个章节,并尝试解答每个章节提出的问题 —— 有些问题可能需要集中精力思考一两个小时才会变得容易。在书籍的末尾会又一些习题的提示和答案。

# 代码

书中的程序采用简洁的代码风格:

  • 短变量名
  • 很少空行
  • 很少或没有错误检测

这种风格虽然不适合于大型软件项目开发,但是有助于表达算法的核心思想。

本书中的大多数函数均使用伪代码表示。记号 fori=[0,n)for i = [0,n) 表示从 00n-1n\text{-}1 的范围内对 ii 进行迭代。表达式 function(i,j)\text{function}(i,j) 表示用参数 iijj 调用函数,array[i,j]\text{array}[i,j] 表示访问数组元素。

# 相关文章导航

此处将会放上本系列文章内容的相关链接。