《计算机程序设计艺术》读后感(2)

发布时间 2023-12-28 11:52:45作者: 想不起来好名字

继续阅读下去,感觉这本书的文字叙述也相当优美,而且往往是以第一人称“我们”来描述,就像是作者和读者以朋友的身份一起在探讨问题,拉近了作者和读者的距离。此外,得力于TeX排版系统(后文后详细叙述),本书的印刷排版也十分优美,特别是对数学公式的排版,简直就像艺术品一般。

当然,一本书最重要的还是它能不能把问题讲明白。在这点上,这本书依然相当优秀。比如书中提到的第一个算法:欧几里得算法,这是一个用于求两个正整数最大公因数的算法。书中对这个描述如下:

算法E ( 欧几里得算法 ). 给定两个正整数m mm和n nn,求它们的最大公因数,即同时整除m mm和n nn的最大正整数.
E1. [ 求余数. ] 用 n nn 除 m mm ,令 r rr 为余数. ( 我们将有 0 ⩽ r &lt; n 0\leqslant r&lt; n0⩽r<n. )
E2. [ 余数为0?] 如果 r = 0 r=0r=0 ,算法终止. n nn 是答案.
E3. [ 减少. ] 置 m ← n m\gets nm←n,$ n\gets r$,然后返回步骤E1.

5行文字将这个算法解释的清清楚楚,就算只有小学数学水平都能理解。对比一下某度百科词条对欧几里得算法的描述:

欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)

说实话,我第一眼看到gcd都懵了,gcd是啥,我只知道gkd啊(哈哈,开个玩笑)。后来一查才知道gcd就是最大公因数。而且这句话语法都有问题,“是指用于计算两个正整数a,b的最大公约数”这是个病句啊,要么在最后加上“的算法”,要么去掉开头的“是指”。两者一对比,高下立判。

另外,在每章的开头和结尾都有和章节内容相关的名著选段和名人名言,起到了锦上添花的作用。