计算机程序设计艺术初读感

article/2025/10/20 22:39:49

传奇

在计算机领域里,有这么一本神作:作者从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 ( 欧几里得算法 ). 给定两个正整数 m m m n n n,求它们的最大公因数,即同时整除 m m m n n n的最大正整数.
E1. [ 求余数. ] 用 n n n m m m ,令 r r r 为余数. ( 我们将有 0 ⩽ r &lt; n 0\leqslant r&lt; n 0r<n. )
E2. [ 余数为0?] 如果 r = 0 r=0 r=0 ,算法终止. n n n 是答案.
E3. [ 减少. ] 置 m ← n m\gets n mn,$ n\gets r$,然后返回步骤E1.

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

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

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

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

TeX \TeX TEX

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

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


http://chatgpt.dhexx.cn/article/ykUxRaec.shtml

相关文章

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

《计算机程序设计艺术(第1卷)》是一本由[美] Donald E. Knuth著作,清华大学出版社出版的精装图书,本书定价:80.00元,页数:650,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。 《计算机程序设计艺术(第1卷)》精选点评: ●神书,但是我智力太捉急了。。。感…

你这辈子可能都不需要看《计算机程序设计艺术》了!

“欣哥&#xff0c; 我什么时候可以看《计算机程序设计艺术》&#xff1f; ” “你这辈子可能都不需要看了&#xff01;” 我在大学的时候并不知道《计算机程序设计艺术》&#xff08;简称TAOCP&#xff09;有多牛&#xff0c;他的作者有多牛&#xff0c;人家计划写七卷&#x…

计算机程序设计艺术一二叉树

计算机程序设计艺术一二叉树 概念&#xff1a; 一个有限的节点集合&#xff0c;它或者为空&#xff0c;或者由一个根连同两个二叉树组成。 二叉树的自然方法&#xff1a; 在每个节点内&#xff0c;有两个链接&#xff0c;LLINK和RLINK以及作为“指向树的指针”的链接变量T(T是…

《计算机程序设计艺术》

计算机程序设计艺术&#xff08;国防工业出版社&#xff09; 《计算机程序设计艺术》重译自Donald E. Knuth(汉名 高德纳)的三卷著作&#xff1a;"The Art of Computer Programming: 1. Fundamental Algorithms; 2. Seminumerical Algorithms; 3. Sorting and Searching&q…

计算机程序设计艺术 介绍

《计算机程序设计艺术 》&#xff08;The Art of Computer Programming &#xff09;&#xff0c;簡稱TAOCP&#xff0c;是高德纳 &#xff08;Donald Ervin Knuth&#xff09;编著的关于计算机程序设计的七卷本著作。作者並因此获得美国计算机协会1974年 图灵奖 。[1] 目录 …

ici isi_ISI的完整形式是什么?

ici isi ISI&#xff1a;印度标准协会/服务间情报/印度统计研究所 (ISI: Indian Standards Institute / Inter-Service Intelligence / Indian Statistical Institute) 1)ISI&#xff1a;印度标准协会 (1) ISI: Indian Standards Institute) ISI is an abbreviation of the Ind…

lio linux工具,ISCSI (简体中文)/LIO (简体中文)

翻译状态&#xff1a;本文是 ISCSI_Target 的翻译。上次翻译日期&#xff1a;2015-06-11。如果英文版本有所更改&#xff0c;则您可以帮助同步翻译。 The translation of this article or section does not reflect the original text. Reason: Not updated since 2015 (Discus…

ITIL与CI/CD

第一节&#xff1a;ITIL TIL即IT基础架构库(Information Technology Infrastructure Library), ITIL&#xff0c;信息技术基础架构库)由英国政府部门CCTA(Central Computing and Telecommunications Agency)在20世纪80年代末制订&#xff0c;现由英国商务部OGC(Office of Gove…

ionic

#一、ionic的安装运行 1.安装nodejs 2.npm install -g cordova ionic npm i -g cordova ionic 3.创建项目 ionic start myApp tabs 4.ionic -v 是ionic 的cli版本 5.ionic serve 6.ionic g component actionsheet 必写component // 根模块 告诉ionic如何组装应用 // 引入 angul…

Calico

Calico基本概念 Calico是针对容器&#xff0c;虚拟机和基于主机的本机工作负载的开源网络和网络安全解决方案。Calico支持广泛的平台&#xff0c;包括Kubernetes&#xff0c;OpenShift&#xff0c;Docker EE&#xff0c;OpenStack和裸机服务。Calico将灵活的网络功能与无处不在…

ITIL是什么意思?ITIL是什么?

ITIL是什么&#xff1f; ITIL是Information Technology Infrastructure Library的缩写&#xff0c;即&#xff1a;信息技术基础架构库。 ITIL是由英国政府部门CCTA(Central Computing and Telecommunications Agency)在20世纪80年代末开发的一套IT服务管理标准库&#xff0c;它…

iLLD简介

iLLD, 全称 Infineon Low Level Driver, AURIX 家族的开源软件包, 支持多种编译器, 硬件抽象, 包含Demo, 让外设的配置/初始化/使用更简单. iLLD提供了函数, 驱动和结构体, 实现3个层次的抽象: Special FunctionRegister Level: 通过名字访问寄存器位Driver Level: 封装寄存器…

手机浏览器怎么查看html,手机浏览器网页收藏在哪里查看

qq浏览器的收藏夹在哪里&#xff1f;现在的浏览器都有自己的收藏夹&#xff0c;QQ浏览器作为非常受大家欢迎的一款浏览器&#xff0c;它的收藏夹又在哪里呢&#xff1f;其实QQ浏览器的收藏夹是默认的&#xff0c;那怎么找到呢&#xff1f;以及QQ浏览器的收藏夹如何导入导出呢&a…

Android安卓自带的 WebView 浏览器内核更新

Android 自带的 WebView 更新 一、Android 7 在安卓7系统里&#xff0c;一般内置的浏览器内核为很低版本&#xff0c;如52.0.2743.100。导致前端的新语法不支持&#xff0c;如ES6的语法最基本的 async&#xff0c;媲美老 IE 的环境。 前言 在设置 - 应用 - 显示系统应用里面…

android 点击事件失效,安卓手机微信自带浏览器点击事件失效解决

在移动端做了个导航&#xff0c;长这样 原来结构是用的span 导航 绑定用的是jquery的.click $(.menu_icon).click(function () { $("#nav-phone").stop().animate({right:"0"},500); }) $(.close).click(function () { $("#nav-phone").stop().a…

利用ADB命令强制卸载oppo自带浏览器

前言 oppo手机是自带oppo浏览器的&#xff0c;这个自带的浏览器带有oppo推荐的负面新闻很多&#xff0c;而且有时也自动推送一些消息给用户&#xff0c;页面不够简洁&#xff0c;打开浏览器负面内容比较多&#xff0c;然后我想卸载发现被系统做了限制&#xff0c;不能卸载&…

android自带浏览器调试,Android 手机浏览器调试使用Chrome进行调试实例详解

搜索热词 使用PC上的 Chrome 远程调试手机端的页面 工具准备 手机端&#xff1a;chrome for Android,&#xff1b; PC端&#xff1a;安装谷歌浏览器(最好是最新版的开发者版本) USB 连接线,也就是你充电器的那条线 开启调试模式 使用 USB 连接你的电脑&#xff0c;并开启调试模…

手机自带浏览器的强大

移动端 在大移动端中&#xff0c;大部分都是人手一台手机&#xff0c;大部分机型系统不是ios就是安卓&#xff0c;但是作为h5前端必须得获取是ios还是安卓都是正常&#xff0c;可是你难以相信这个世界坑你的总是有 获取手机浏览器哪个系统 你们确定下面的方式能够获取的对吗&am…

请用android手机自带浏览器,还在用手机自带浏览器吗?推荐两款无广告、功能齐全的浏览器...

最近一段时间更新的安卓版有些多&#xff0c;进而很多苹果的朋友就表示不开森。小编也是秉承免费分享黑科技的口号&#xff0c;大家应该都懂&#xff0c;苹果端的限制比较多&#xff0c;所以有时候安卓的有苹果的不一定有&#xff0c;大家一定要谅解呀。 好吧&#xff0c;今天A…