传奇

在计算机领域里,有这么一本神作:作者从20多岁还在读博士时就开始写,一直写到80多岁,写到现在这本书还没完结;为了排版这本书而顺便开发的排版系统推动了整个西文印刷行业的变革;比尔盖茨说:“如果你能够看懂这本书的所有内容,那么欢迎给我发来简历”;《美国科学家》杂志列为20世纪最重要的12本物理科学类专著之一……或许关于这本书的赞誉就能写一本书。

这本书就是《计算机程序设计艺术》,作者是高德纳(Donald Ervin Knuth)。高德纳本身就是一个传奇,他获得的著名奖项如下:

ACM授予:

  1. 图灵奖(计算机科学界最负盛名的奖项,被誉为计算机界的诺贝尔奖)
  2. 软件系统奖(授予对技术概念、商业接受度方面产生了持久影响的软件系统的开发者或者机构)
  3. 格蕾丝·默里·霍波奖(授予取得独立的、意义非凡的或服务贡献的年轻专业研究人员)

美国前总统卡特授予:

  • 全国科学奖章

IEEE授予:

  1. McDowell奖(1980)
  2. 计算机先驱奖(1982)

(以上奖项只是选出了一些较为知名的奖项,如果把所有奖项都列出来,恐怕这篇文章都写不完)
高德纳一生获奖无数,但他十分淡泊名利,有传闻说图灵奖的奖杯(如图)被高德纳拿来放水果

而《计算机程序设计艺术》则是他这传奇的一生中最璀璨的篇章,按照高德纳本人最开始的计划,这本书的主要内容分为5卷,每卷包含两章,分别为

  • 卷1. 基本算法

    • 第1章:基本概念
    • 第2章:信息结构
  • 卷2. 半数值算法
    • 第3章:随机数
    • 第4章:算术
  • 卷3. 排序与查找
    • 第5章:排序
    • 第6章:查找
  • 卷4. 组合算法
    • 第7章:组合查找
    • 第8章:递归
  • 卷5. 语法算法
    • 第9章:语法扫描
    • 第10章:语法分析

其中第4卷设计的范围很大,实际上包含三本书(卷4A、4B和4C)。

目前最新一部应该是卷4A,至少网上能买到的最新一部就是它。作者自己预计还要用20年才能写完整套书。

个人初读感受

本人有幸从学校图书馆中借到了本书中文版的第一卷(人民邮电出版社2016年出版),准备细细品读一下。

翻开这本书,第一页是高德纳专门为中国读者写的序,里面写到了高德纳这个名字是他1977年访问中国前夕姚期智的夫人姚储枫给他起的中文名。他也希望中国读者能记住他的这个中文名。最后还写了一段激励读者钻研计算机程序设计的话。这个序言一下子就拉近让我感受到高德纳的人格魅力,尽管拥有数不清的荣誉,但他依然如此平易近人,实在是难能可贵。

本书还有一个非常有特色的地方,就是专门用一页内容写了阅读本套书的步骤,还在旁边列出了相对应的流程图,在增加趣味性的同时也在不知不觉中培养起了读者的算法思维。继续读下去会发现之后书中的很多内容都在潜移默化地培养读者的算法思维。

另外,本书中所有习题都给出了难度等级,让读者可以根据自己的能力选择适合自己的题目练习。而且这个难度等级分的非常细也非常有意思。从0到50每个整数都是一个难度等级,难度依次增长。而等级编号除以5得到的余数表示完成这道习题的具体工作,比如求解一道等级为24的习题比求解一道等级为25的习题可能花更长的时间,不过做后一种习题需要更多的创造性。而所有等级为46及以上的习题都是开放式问题,有待于进一步研究。

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

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

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

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

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

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

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

TeX\TeXTE​X

前文说过为了排版这本书而顺便开发的排版系统推动了整个西文印刷行业的变革,这个排版系统的名字叫做TeX\TeXTE​X。最初是因为出版商将这本书中的数学公式排版做的非常难看,所以高德纳就自己写了一套排版系统,特别专注于数学公式的美观性,这就是TeX\TeXTE​X。

TeX\TeXTE​X目前广泛应用于科研机构及出版行业中,很多专业领域的杂志都要求以TeX\TeXTE​X格式提交论文。各种基于TeX\TeXTE​X的宏包极大地丰富了TeX\TeXTE​X的生态。而TeX\TeXTE​X的数学公式表示方法则基本上成为了目前在网上输入数学公式的标准,被众多文本编辑器使用,包括本博客的编辑器。TeX\TeXTE​X这三个字母的这种格式(E稍微下沉)是官方认定的表示方法,如果使用的文本工具不支持这种格式,则写成TeX,e必须小写。

计算机程序设计艺术初读感相关推荐

  1. 计算机界最大“追书坑”,82岁大神高德纳仍在写《计算机程序设计艺术》4B卷...

    本文经AI新媒体量子位(ID:QbitAI)授权转载,转载请联系出处 晓查 编译整理 Donald Knuth,中文名高德纳,是他创造了"算法分析"这一新的计算机科学研究领域. 对 ...

  2. 82岁高龄的高德纳仍在写《计算机程序设计艺术》,那是他未完成的人生目标...

    本文转载自:程序员书库 编译:猿妹 链接: https://www.quantamagazine.org/computer-scientist-donald-knuth-cant-stop-telli ...

  3. 36 岁捧走图灵碗!80 岁算法大师高德纳要在 105 岁完结《计算机程序设计艺术》...

    编译:CSDN - 弯月(ID:CSDNnews):英文: Siobhan Roberts 号称计算机领域经典必读的著作你都读过哪些,例如<计算机程序设计艺术>系列?近日,这套书的作者高德 ...

  4. 编程语言进化史《禅与计算机程序设计艺术》 / 陈光剑

    编程语言概述 计算机编程语言是程序设计的最重要的工具,它是指计算机能够接受和处理的.具有一定语法规则的语言. 编程语言处在不断的发展和变化中,从最初的机器语言发展到如今的2500种以上的高级语言,每种 ...

  5. 高德纳谈计算机程序设计艺术(上)

    2019独角兽企业重金招聘Python工程师标准>>> 高德纳谈计算机程序设计艺术(上) http://blog.jobbole.com/8397/ 在您看来,您在计算机科学领域最大 ...

  6. 《计算机程序设计艺术》pdf

    下载地址:网盘下载 内容简介 编辑 本书作者D. E. Knuth是在计算机学界十分著名的学者,在本领域享有很高权威和盛名,他的这部著作是无数计算机专业人员的学习教材和参考读物,也是许多专业研究工作者 ...

  7. 敏感性分析算法 程序_计算机程序设计艺术(TAOCP)精读笔记1 - 算法分析真正应该有的样子 Part 1...

    系列文章的导航链接: 张浩驰:<趣味算法>专栏所有文章分类 - 导航​zhuanlan.zhihu.com 下篇文章Part 2导航: 张浩驰:计算机程序设计艺术(TAOCP)精读笔记1 ...

  8. Medium - 《计算机程序设计艺术》发展史

    来自 计算机程序设计艺术 一些在书架上的书看着如此美丽,不仅仅是因为装帧美,而且书脊上表达了关于主人的话.Donald Knuth 的四精装卷的"计算机程序设计艺术" - 四个很贴 ...

  9. 计算机程序设计艺术读后感,计算机程序设计艺术(第1卷)读后感1000字

    <计算机程序设计艺术(第1卷)>是一本由[美] Donald E. Knuth著作,清华大学出版社出版的精装图书,本书定价:80.00元,页数:650,特精心从网络上整理的一些读者的读后感 ...

  10. 《计算机程序设计艺术》作者高德纳

    原文作者:Siobhan Roberts 译者:UC 国际研发 Jothy 写在最前:欢迎你来到"UC国际技术"公众号,我们将为大家提供与客户端.服务端.算法.测试.数据.前端等相 ...

最新文章

  1. Javascript MVC架构之旅
  2. URAL 1014 Product of Digits
  3. gj4 深入类和对象
  4. Change Fiori launchpad logo
  5. 2020蓝桥杯省赛---java---C---1(约数个数)
  6. 为什么Spring的健康状况会再次下降,下降,上升,上升,上升和下降?
  7. 万年历c语言大作业实验,用C语言写的一个万年历
  8. C/C++混淆点-左移右移操作符
  9. docker 安装 与 卸载 centos
  10. 微信公众号对接PHP电影网站,wxapi 微信公众号平台与电影类网站对接源码 wxapi 联合开发网 - pudn.com...
  11. Cookie字符串转Map集合方法
  12. SqlServer中将某列的值拼接成字符串
  13. 【渝粤题库】陕西师范大学163213 景区管理 作业(专升本)
  14. iOS 使用CocoaPods
  15. [Other]规范的邮件签名格式及HTML代码
  16. 相濡以沫,何能相忘于江湖
  17. 小程序接入微信视频号配置指南
  18. C/C++语言100题练习计划 97——素数对
  19. gensim : AttributeError: The vocab attribute was removed from KeyedVector in Gensim 4.0.0.
  20. 机器学习-白板推导系列(一)-绪论(机器学习的MLE(最大似然估计)和MAP(最大后验估计))

热门文章

  1. 爬虫练习案例:交通路况
  2. 这周学点变速不变调、变调不变速
  3. 【计算机网络】实验一 Protocol Layer
  4. 国内根据IP地址查询具体位置
  5. 彻底卸载360安全卫士的方法
  6. 安卓手机设置指定文件夹下的图片、视频不被相册读取到
  7. 教你使用反格式化工具恢复格式化数据!
  8. 41、财务总账科目余额表,三栏式总账,三栏式明细账 查询条件科目增加多选查询
  9. 线上故障之-内存问题
  10. 使用pycharm出现黄色框的情况