`

关于Knuth的八卦

阅读更多
Donald E. Knuth22岁毕业,由于“成绩过于优异”,同时被授予学士和硕士学位。他在36岁的时候就获得了图灵奖,可以算 是图灵奖获得者中为数不多的年轻人。(好像Unix的发明人之一Ken Thompson 是到40多岁才拿图灵奖的).Knuth 在图灵奖的颁奖典礼上做了关于计算机程序设计和艺术的关系的演讲,最近一期的 Programmer(程序员)杂志就刊登了对这篇文章的评注。 Knuth总共教了28个博士生。不知道怎么搞的,他觉得28这个数字很好,于是就决定再也 不带博士生了。拿了图灵奖之后Knuth突发奇想,他扬言自己要用20年时间写一本 同Newton的\emph{The Mathematical Principle of Natural Philosophy}一样著名的书。于是他宣布退休了,恐怕这是全世界大学里面退休最早的教授了。由于他在图灵奖颁奖时的演讲时关于计算机程序设计和艺术的关系,所以他到Stanford的图书馆里把所有含有“艺术” 和“科学”这两个字的书都看了一遍,然后决定 自己的书名就叫做\emph{The Art of Computer Programming}。这本书他计划写7卷,目前写了3卷,我前段时间因为研究排序算法,看了第三卷开头讲排序的一段内容,觉得这个老头“太认真”了。他居然能字斟句酌的写了两页纸讨论为什么计算机科学中“排序”用sorting这个词,而不用其他的词,诸如order。结果这本书才写了三卷,就已经被认为是同Newton的\emph{The Mathematical Principle of Natural Philosophy}一样著名的书。我前段时间还曾经到图书馆查找了其他讲算法的书,结果发现没有哪本书敢不引用\emph{The Art of Computer Programming}的,当然中国人写的书除外。

写这本书的时候,Knuth觉得当时的计算机排版系统实在是不爽,于是他决定发明一套新的排版系统,这个就是
\TeX 。后来有人说,光是发明了 \TeX 就足以让Knuth再拿一次图灵奖。

\TeX 是如此的完美,以至于Knuth说发现\TeX第一个错误的人将得到2.56美元的奖金,后面发现错误的人,奖金翻倍。20年来,\TeX只被发现了几个错误,假如让Bill Gates这样做,估计他要破产了。

这个Knuth也是有意思他把\TeX的版本不是像一般的软件那样用不断增加的数字,或者年份来表示,他居然想出用$\pi$的近似值来表示。版本每提高一次,就把$\pi$的近似值精确到小数点后下一位。你让Bill Gates 试试看这样,估计你每天打开Word文档的时候那个欢迎界面都要全屏了。

由于Knuth说programming是一种art,所以programmer必须是artist。他说我让别用\TeX写文章必须让别人感到自己是在享受。\TeX在20多年前就采用了形式与内容相分离的思想,一个\TeX文档包括两部分内容,一部分是文字,另一部分是这些文字的属性。这就是现在标记语言的思想,而第一个被大众接受的标记语言是HTML。这个语言是一个CERN的工程师在大约1990的时候发明的。可以明显的看出Knuth超前这个时代将近7年。不要小看这7年,计算机发明到现在才不过50年左右。由于采用了内容与形式相分离的思想,\TeX可以使得我们在写文章的时候专著于内容,不要去在意排版,就好比我想在在写这篇文章,我不管标题是否居中,到底是什么字体,多大的字号,我只关心我的标题是什么,于是我就用\slash author \{\}把我的标题声明,然后\TeX的编译器会根据我调用的头文件,就是在文章一开头 \slash usepackage\{\}里面的头文件,来确定我的标题是什么样的排版。

\TeX把这种思想发挥到极致,它甚至认为所有非ASCII码字符都是不同的style,比如我现在在写中文的\TeX文档,那么我就要调用一个叫做CJK的中日韩字符头文件。如果你要使用多种语言,那么只是多调几个包的问题。

所以说\TeX 的文档实际上只包括了内容,因此是非常小的,Knuth自己写的那教大家怎么用\TeX 的书\emph{The \TeXBook}的代码只有1.2MB。

\TeX是有史以来最强大的排版系统,我们可以用它制作任何文档。论文,书籍,海报,幻灯片,报告书,比如说Answer也可以。 现在有了word2tex,excel2tex,不知道哪天就会冒出powerpoint2tex来了。 Knuth还给自己 的\TeX
编译成的文档起了一个好听的名字DVI,就是Device-Independent的意思,就是说你无论在什么平台,什么语言,文档都是不会变样的。这种 DVI格式还可以方便的转换为PS和PDF格式。假如你的文章很长,有很多章节,还可以转换为HTML格式,变成一堆具有链接关系的网页。

\TeX 相对已有的WYSIWYG(what you see is what you get,所见即所得)的排版系统有很多优点。你何必去用MathType向文章中插入公式?\TeX 自己就是公式编辑器。你何必去使用所谓的文献管理软件?\TeX
自己就是一个文献管理软件。你何必使用昂贵的Adobe Acrobat去生成PDF?\TeX 自己就可以打印成PDF。你何必去在打印文档之前必须用软件将其打开?\TeX 可以生成直接可以被打印机接受的PS文件,假如在Unix/Linux系统下,你更可以简 单的用lpr 命令,然后就看着一页又一页纸从打印机里出来。

一开始用\TeX可能你觉得很不爽,因为你要输入那么多控制字符,但是你必须注意这样一点,你使用\TeX将为你带来维护文档时间的节省。我们在一个文档上所耗费的时间不仅是第一次输入内容的时间,还包括日后修改所
耗费的时间。假如你的文章准备改投另一个杂志,你是不是准备把所有的文字重新编排一遍呢?是不是把所有的MathType公式全部重输一遍呢?我就碰到这种情况。我的文章中的公式原来是用MathType5写的,结果编辑部冒出来一个要求说公式的各种尺寸要求,可以修改MathType的公式必须一个一个的双击来编辑,我把文章中的公式改完了,简直感觉把文章重写了一遍。假如你的文章还有上百篇的参考文献,你是不是又准备用格式刷一个个刷呢?

学习\TeX其实也不是很难,只要你会英语,就可以了,那些控制字符就是英语,你写\TeX文档的时候就感觉自己是在和计算机交谈。而且我们仅仅要求\ TeX可以把我们的文章表现出来,那些过于复杂的效果不在我们的考虑范围之内,那么我们能用到的\TeX命令是非常少的。

随着你使用\TeX 次数的增加,你会越来越喜欢\TeX。你会渐渐体会到Knuth所说的这是一种乐趣。

其实如果你花费了一个下午来听我讲述\TeX的语法那将很没有意义,所以我只讲了简单的一些语法。我更想传播一种思想,我向大家推荐\TeX在向大家推荐一种思想,一种文化,这种思想就是当今在软件开发领域非常火热的开源思想。这个思想就是Bill Gates的大学同学Richard Stallman在1983年的时候提出来的,他发起了这个叫做GNU的运动,当时他是MIT人工智能实验室的一员。当今世界最最有生命力的操作系统—— Linux正在不断的攻城略地,从商用服务器,巨型的计算服务器,到桌面PC,一直到小型的嵌入式系统在世界上几乎每一所大学,包括南京大学,都有服务器在提供Linux的服务。这个操作系统就是基于GNU框架之下的。开源的思想使得用户可以免费的得到软件的发行版,程序员可以任意的修改代码,每一个人都可以投入到开发之中,比如我就在为一个叫做gEDA/gschem的项目在编写HELP文档,因为我得益于其他人的劳动,所以我也要为之付出努力。前段时间有一个叫Eric Raymond的人写了一本书,叫做\emph{The Cathedral and the Bazaar}。他说传统的软件开发方式像教堂一样,每个工匠都受一个人指挥调度,而GNU的软件开发则像一个集市一样。是啊,这个集市里面还有我这样的小贩子。

GNU 是否成功我不能下定论,因为我不是学软件开发的。但是这种运动,是年轻人所特有的激情才能够维持的。我觉得不论你是否为GNU改写过一行代码,只要你使用过GNU的软件,只要你用心去体会GNU的思想,你就会感觉到踌躇满志。这也就是为什么GNU在大学获得巨大的欢迎的原因,而且大部分的GNU软件都是年轻人开发的,我甚至认为一个人能够有机会在年轻时接触GNU将终身受益。我在Linux下只使用一个盗版软件,Mathematica,因为其他的软件都有开源的了。

当我每天打开计算机的时候,我想到一个叫Linus的21岁大学生写出了一个叫Linux的操作系统;当我写文章的时候,我就想到一个叫Knuth的CalTech毕业生同时获得了硕士和学士学位,他36岁就拿了图灵奖,然后发明了\TeX。我还会想到这些软件所诞生的那些伟大的地方。当我用SPICE语言描述模拟电路的时候,我就想到伟大的UC Berkerley,当我使用PCB画电路图的时候,我就想到John Hopkins,当我用Emacs的时候,我就想到MIT的AI实验室,当我使用OpenOffice做幻灯片的时候,我就想到Sun的全称是 Stanford University Network,...
那么多光辉的名字激励着我,假如你问我为什么读书,我不禁想起1996年奥运会主题歌的名字:\emph{The
Power of The Dream}。

刚才看本期《商业周刊》,看到一篇文章“假如没有微软”,说的是一个人他的Windows系统受到攻击,他受不了了,于是去使用Linux的故事他说虽然他没有完全使用Linux,但是他是再也不会使用IE浏览器也再也不会去购买微软的Office了。

这就是一场大战的一个小小战役,在今天一场大战正在上演。战争一方的领导是一个叫Bill Gates的年轻人,战争另一方的领导也是一个年轻人叫做Linus Torvalds。战争的一方使用.Net作为武器,战争的另一方使用Java作为武器。这场战争影响了整个世界的格局,你翻开任何一本计算机方面的杂志或者报纸,都会看见这场战争的报道。甚至Hollywood的MGM公司都瞄准这个题材拍摄了大片Antitrust(这篇电影最后的致谢中就有 Linus Torvalds,最搞笑的是居然SUN的前总裁麦克尼尼也在影片中露相)这场战争没有硝烟,但是他将同荷马史诗中那么多伟大的战争一样被人们记住。记得电影“阿拉伯的劳伦斯”里面有这样一段话,“和平是老人的,所以和平也有老人的特点;战争是年轻人的,因此战争也有年轻人的特点” 我觉得投入到这场战争中去便是我不可失去的大学生活的一部分。

其实当我用\TeX的时候,我总是思考这个问题,中国是发明印刷术和造纸术的国家,但是今天这个世界上最先进的排版系统却不是中国制造的,这个问题值得我们深思。试想中国哪个大学允许教授36岁就退休,然后花20年时间去写一本书?又有哪个大学允许这个教授在写书的时候开了小差,去发明一个叫\TeX的排版系统?开了一个小差不算,他还觉得画图软件不爽,然后又发明了MetaFont。不知Knuth这20年发了多少SCI和EI。

但是反过来想想,中国哪个大学教授会带博士生到一定数量就不想带了?又有哪个大学教授会觉得排版系统不爽然后自己写一个?

所以我就反过来又想,中国哪个大学生会想到自己写一个软件?有多少人会不甘于现状想到自己去发明点什么?比方说像Linus那样自己写个操作系统,或者像 Knuth那样写个\TeX ? 倘若自己不能去发明,那么会不会去尝试一些新东西呢?又有多少人会为了自己的梦想而敢于放弃已有的成果?比方说像Knuth那样宣布退休而去写一本伟大的书?像Stallman那样不满MIT而辞职去发起GNU?像Gates,像Dell那样大学不上了而去创业?

于是我明白了,为什么 Stanford牛,不是因为有了SUN,有了Yahoo,有了Google。为什么Berkerley牛?不是因为有了 SPICE。他们之所以牛不是仅仅因为有那些我们所看得见摸的着的东西,更是有那些看不见,摸不着的东西,这种东西便是是一堆建筑得以被称之为大学的东西,这就是思想和精神。

\end{CJK*}

\end{document}

转载:http://forrestbao.blogspot.com/2006/10/blog-post_4884.html
分享到:
评论
15 楼 sevenbamboos 2006-12-11  
hurricane1026 写道

数学这个东西知道历史不如都看书解题。

书里有些题目的,不过看看真是不错的。这叫素质(我以为的真正的数学专业外的素质教育)
14 楼 honestkent 2006-12-11  
sportL 写道
我在Linux下只使用一个盗版软件,Mathematica,因为其他的软件都有开源的了。


这个也可以不用,scilab跟octave是开源的, 一般应用完全可以替代matlab,maple,Mathematica, 而且公开了非常好的java, c/c++接口
13 楼 sevenbamboos 2006-12-11  
我建议觉得数学基础不好的可以去看一下Richard Courant的“what is mathematics”,像读历史那样的读,然后就有大局观了。
12 楼 冉翔 2006-12-11  
Arath 写道
这个一点都不损,对比就是如此,反而楼上自己动粗口还好意思说?
Bill曾经说过,谁如果读懂了Knuth的三本The Art of Computer Programming就可以直接去找他当面谈,会给你一份很好的工作


那我说你白痴,不说你理由,就是说你不好看而我长得帅,因为我听说别人说你丑。你自己服气吗?你觉得我说的有道理吗?你觉得这有对比吗?有意义吗?(虽然事实上我真的很PP

动粗口是因为文章太烂。你难道从来不骂人,圣贤了一辈子?


我只是说了LZ转的文章太SB,导致我认为文章的作者也SB。

从来没有对Knuth或者LZ有一点不敬。你滴明白?
11 楼 Arath 2006-12-11  
asm实际上真的很简单...
10 楼 Arath 2006-12-11  
这三本书书柜上放着呢。。。英文中文两套,只有简单的看过英文版中有关multiway tree的章节,看Knuth的书就感觉自己数学实在太差了
9 楼 sportL 2006-12-11  
Arath 写道
这个一点都不损,对比就是如此,反而楼上自己动粗口还好意思说?
Bill曾经说过,谁如果读懂了Knuth的三本The Art of Computer Programming就可以直接去找他当面谈,会给你一份很好的工作


动粗口说明这人素质低,不合他一般见识。

有机会我也通读Knuth的三本The Art of Computer Programming
8 楼 Arath 2006-12-11  
这个一点都不损,对比就是如此,反而楼上自己动粗口还好意思说?
Bill曾经说过,谁如果读懂了Knuth的三本The Art of Computer Programming就可以直接去找他当面谈,会给你一份很好的工作
7 楼 冉翔 2006-12-10  
看看前面,夸Tex的时候,就赶快损ms一通。

“20年来,\TeX只被发现了几个错误,假如让Bill Gates这样做,估计他要破产了。”


中间说完GNU,然后顺其自然的说道linux,就感喟损ms一回。

“刚才看本期《商业周刊》,看到一篇文章“假如没有微软”,说的是一个人他的Windows系统受到攻击,他受不了了,于是去使用Linux的故事他说虽然他没有完全使用Linux,但是他是再也不会使用IE浏览器也再也不会去购买微软的Office了”

难道你不觉得这种丝毫没有什么对比性的鼓吹很恶心吗?虽然我现在一直在linux下,但是看到这种不由分说的乱弹ms好坏还是觉得很SB。

特别是这篇文章关于GNU的两句特别搞笑:

“只要你用心去体会GNU的思想,你就会感觉到踌躇满志。”

“我在Linux下只使用一个盗版软件,Mathematica”


这种人还敢说让别人体会GNU思想,NND,要是Richard Stallman大叔听到这段估计也笑弯了腰。

我的不满主要是针对这篇文章,而不是对人。

就跟很多人喜欢贝多芬的音乐,但是突然来了一个贝多芬的fans,而且是超女的那种。不由分说的认贝多芬为爹。认为其他什么莫扎特,巴赫都是狗屎。最主要的是他自己也说不出音乐的好坏。

你说你看到这种SB,你恶心不?
6 楼 sportL 2006-12-10  
冉翔 写道
到底是关于Knuth,还是关于tex

说的那么好,很像广告帖...

还有,为啥总拿bill说事.动不动就说bill怎么怎么了,windows怎么怎么了.真的像那些人说的那样的不堪,会占据这么大的分额么.

这种文章,太无聊了...


老兄,拜托看清楚一点,这篇文章主要说Knuth,不是说比尔盖茨。

Knuth不是牛人,难道你是?笑死人。 
5 楼 冉翔 2006-12-09  
到底是关于Knuth,还是关于tex

说的那么好,很像广告帖...

还有,为啥总拿bill说事.动不动就说bill怎么怎么了,windows怎么怎么了.真的像那些人说的那样的不堪,会占据这么大的分额么.

这种文章,太无聊了...
4 楼 freebirdbbs 2006-12-09  
现在的大学充满了xx特色,到处都是假冒伪劣,不值一文的“商品”。

啥子东西到了中国,不走样的太少了。

原因有历史、习惯、体制。。。到处都是说一套,做一套,制定的规矩条文如果只有傻子会100%执行。
3 楼 codeutil 2006-12-09  
关于控制符, 转载原文开头一段: 

------------------------
因为Answer有版面的限制,所以做了删节
这里把完整版的贴出来
各位可以直接当作纯文本来看,也可以到www.cetx.org去下载TeX的编译器以获得更好的效果

------------------------

Arath 写道
转载的吧?
可否把那些控制符削减下??
文章不错,国内的教授现在只知道赚钱,真正搞学术的有几个?
2 楼 Arath 2006-12-08  
转载的吧?
可否把那些控制符削减下??
文章不错,国内的教授现在只知道赚钱,真正搞学术的有几个?
1 楼 sportL 2006-12-08  
仰慕这样的大牛!

相关推荐

    knuth简介 介绍kunth的一生

    ### Knuth一生的重要知识点 #### 一、早期生活与教育背景 **唐纳德·欧文·克努特(Donald Ervin Knuth)**出生于1938年1月10日,在美国威斯康星州密尔沃基市的一个虔诚的路德教家庭。他的父母是Ervin Henry Knuth...

    具体数学的试题-knuth

    《具体数学的试题-knuth》是一份与组合数学相关的学习资源,由著名计算机科学家Donald Knuth所编纂。这份资料包含六套精心设计的试题,旨在帮助学习者深入理解和应用具体数学的概念。具体数学是计算机科学的重要基础...

    计算机程序设计艺术KNUTH

    7. **编程风格**:Knuth强调代码的清晰性和可读性,他可能会分享关于良好编程习惯和风格的见解,这对任何程序员来说都是宝贵的指导。 8. **排版和排版系统**:作为TeX系统的创造者,Knuth在书中可能会提及排版和...

    Knuth Selected Papers

    Donald Knuth的论文选。这是Knuth过去几十年来在计算机科学上探索的精华所在,涉及计算机语言(编译技术),离散数学,算法分析等。在这里你能发现他的系列著名的论文,如《man or boy》.只可惜CSDN在资源上传时连...

    前端项目-knuth-shuffle.zip

    此外,阅读和分析测试用例,可以帮助深入理解算法的逻辑,而项目结构和配置则可以提供关于项目管理与版本控制的实践示例。 总之,“knuth-shuffle”项目为前端开发者提供了一个实用的工具,帮助他们在需要随机化...

    具体数学(Knuth著)

    ### 具体数学(Knuth著) #### 一、引言 《具体数学》是由Donald E. Knuth编写的经典著作之一,该书主要聚焦于为计算机科学领域提供坚实的数学基础。Knuth作为计算机科学界的巨擘,他以其对算法设计与分析的深入...

    高德纳论文选--knuth

    1 Selected.Papers.on.Computer.Languages(Donald.E.Knuth).djvu 2 Selected.Papers.On.Computer.Science.(Donald.E.Knuth).djvu 3 Selected.Papers.on.Discrete.Mathematics.(Donald.E.Knuth).djvu 4 Selected....

    算法分析 Selected.Papers.on.Analysis.of.Algorithms].(Donald.E.Knuth).pdf

    算法分析论文Donald.E.Knuth算法分析论文Donald.E.Knuth算法分析论文Donald.E.Knuth算法分析论文Donald.E.Knuth算法分析论文Donald.E.Knuth算法分析论文Donald.E.Knuth算法分析论文Donald.E.Knuth算法分析论文Donald...

    计算机程序设计艺术教授Donald Knuth简介

    计算机程序设计艺术是一本程序员的必备资料之一,高德纳Donald Knuth更是传奇一生,为了一本书,用了一辈子,此精神值得学习,其治学方法更值得学习

    Knuth的TeX教程(英文)

    书中包含了大量关于 TeX 的基础知识、高级功能以及实用技巧。 #### 三、版权与出版信息 - **版权所有者**: 唐纳德·克努斯。 - **版权归属**: 本书的版权归美国数学学会所有。 - **联合出版**: 本书由美国数学学会...

    The TeXbook (Knuth).pdf

    TeX是一种广泛使用的排版系统,由唐纳德·克努斯(Donald Knuth)开发。《TeXbook》是学习TeX的经典著作之一,以下是对该书可能涉及的重要知识点的概述: ### 1. TeX简介 - **定义**:TeX是一种高质量的文本排版...

    计算机程序设计艺术(中文版,第一卷,Donald E.Knuth 著)

    计算机程序设计艺术(中文版,第一卷,Donald E.Knuth 著)(The Art of programming)

    D.E.Knuth(高德纳)著,计算机程序设计艺术第二卷,英文原版,epub

    Volume 2 of Donald Knuth's classic series The Art of Computer Programming covers seminumerical algorithms, with topics ranging from random number generators to floating point operations and other ...

    经典的离散数学教材,由大师D.E.Knuth编著

    由著名数学家Graham和大师knuth编著,看看国外的离散数学与国内的有什么不同

    (英文经典)Graham Knuth Patashnik 离散数学

    计算机经典,Graham Knuth Patashnik合著离散数学。 C O N C R E T E MATHEMATICS Ronald L. Graham AT&T Bell Laboratories Donald E. Knuth Stanford University Oren Patashnik Stanford University

    donald e. knuth - the art of computer programming volume2.part1

    第3版中特别值得注意的是Knuth对随机数生成程序的重新处理和对形式幂级数计算的讨论。 卷3为分拣和搜索,这是本书的第1个修订版,它是对计算机分拣和搜索的一流技术的最全面的研究,它扩展了卷1中数据结构的处理方法...

    计算机程序设计艺术卷2英文第3版-Donald.Knuth.part1.rar

    Knuth(汉名高德纳)的三卷著作:"The Art of Computer Programming: 1. Fundamental Algorithms; 2. Seminumerical Algorithms; 3. Sorting and Searching";三卷中文名为《基本算法》、《半数值算法》及《排序与...

    The TeXbook -- DONALD E. KNUTH

    ### 关于《TeXbook》及TeX系统的关键知识点 #### 一、TeX系统简介 TeX是由计算机科学家唐纳德·E·克努斯(Donald E. Knuth)开发的一种排版系统,旨在为数学家和科学家提供高质量的排版工具。TeX自诞生以来,一直...

Global site tag (gtag.js) - Google Analytics