Chinaunix

标题: 哦,上帝!《The Art of Computer Programming》 [打印本页]

作者: c.plusplus    时间: 2006-01-19 13:45
标题: 作者简介
Donald.E.Knuth(唐纳德.E.克努特,中文名高德纳)是算法和程序设计技术的先驱者,是计算机排版系统TEX和METAFONT的发明者,他因这些成就和大量创造性的影响深远的著作(19部书和160篇论文)而誉满全球。作为斯坦福大学计算机程序设计艺术的荣誉退休教授,他当前正全神贯注于完成其关于计算机科学的史诗性的七卷集。这一伟大工程在1962年他还是加利福尼亚理工学院的研究生时就开始了。
     Knuth教授获得了许多奖项和荣誉,包括美国计算机协会图灵奖(ACM Turing Award),美国前总统卡特授予的科学金奖(Medal of Science),美国数学学会斯蒂尔奖(AMS Steele Prize),以及1996年11月由于发明先进技术荣获的极受尊重的京都奖(KyotoPrize)。现与其妻Jill生活于斯坦福校园内。

高德纳的个人主页http://www-cs-faculty.stanford.edu/~knuth/taocp.html




[ 本帖最后由 c.plusplus 于 2006-1-19 13:46 编辑 ]
作者: c.plusplus    时间: 2006-01-19 13:53
标题: 正方观点
正方观点太多了,就不列举太多了。仅盖茨先生的句名言说明问题吧:

如果你认为你是一名真正优秀的程序员……读Knuth的《计算机程序设计艺术》,如果你能读懂整套书的话,请给我发一份你的简历。--Bill Gates

作者: c.plusplus    时间: 2006-01-19 13:56
标题: 反方观点
引那位出名的王垠对TAOCP的评论:

本来早就想想写一个对于Knuth的The Art of Computer Programming的看法。
没想到一去Amazon就找到一个同类
关于Knuth的 TAOCP,我想,大部分人声称看了他的书,或者买了他的书,不过是作为一种炫耀的资本或者摆设。我对门的同学几年前就买了一套三本,全新的精装本,花了 200多块钱。可是呢,他从来就没看。我把它借过来,看了几页就放在那里没有看了。我哪有时间看他用那些一个字节6位的机器语言实现简单的链表!有一天一个师弟走进来,看到那套书在我书架上,显示出一种敬畏感:“挖!师兄!你好牛啊!居然看这么高深的书!” 我一愣。嗯,不错嘛,这套书放在书架上可以让人对我刮目相看。这恐怕就是它对很多人的实际作用。还有人可以帮助神化这套书,同时也神化自己,比如他可以这么说:“谁要是看完了Don Knuth的 The Art of Computer Programming 我就雇用他!” 这样可以显得比一般看过书的人还要高一等。据说Bill Gates就是这么做的。我怀疑他自己看完过没有。

我讨厌这套书的一个原因就是Knuth故意用一个叫 MIX 的处理器的机器语言来写这本书。虽然在新版的书里他设计了一种新的处理器 MMIX,但是换汤不换药。他以为一部“永恒”的计算机编程书不应该使用高级语言,因为它们很容易过时。但是他错了,机器语言恰恰是最容易过时的东西,看看现在有多少牌子的更新换代的处理器就知道。而世界上确实存在非常高级的语言从60年代到现在都没有过时。我预言,MMIX会在不久的将来被淘汰。很好笑的是MMIX是在MIX上加了一个“M”,代表Millennium(千禧年)。关于它的专著也起名为 MMIXware---A RISC Computer for the Third Millennium。一千年甚至短短一百年,几十年以后,计算机还是不是二进制的集成电路都说不清楚,况且这个处理器其实就是从别的处理器比如RISC II, Sparc之类的捡了一点东西,没有什么大的创新。他就把这个处理器的模拟程序印在纸上卖,曰:“一个优秀的程序要像一部好的小说一样容易读懂。一个优秀的程序员会在将来拿到普利策奖。”

用机器语言写一点初级的计算机入门部分还可以,但是用来写整整一部书未免容易让读者只见树木不见森林了。看TAOCP最容易出现的一种现象就是,“哇!原来这个程序可以这么写。” 但是你不知道为啥那么写。虽然可以知道一些底层的原因,但是最根本的原理,读者始终不会明白。就像看清楚了一张图片上的每一个像素,却认不出图片上其实是一个熟人。看清楚了棋盘上每一个棋子能走的地方,却不能赢棋。Dijkstra 说计算科学不应该被叫做"computer science",就像外科手术不应该叫做"knife science"。可是这关Knuth什么事呢,他的书名叫做 The Art of...

我曾经说找到Knuth书里的错误,得到几张支票,受到很大鼓舞。我真的受到鼓舞了吗?我真的从他的书里得到什么新的想法吗?抛开潜意识里想显示一下自己的念头,我得出的结论是:没有。每一个认为自己从这套书得到了什么的人都仔细想一下,到底你的知识,你的新想法是从哪里来的?

再说他的支票吧…… 很多人拿了Knuth的支票就作为一种可以炫耀的东西。以前我就看到一个Cambridge的教授主页上挂着一个Knuth支票的照片。Knuth的支票真的可以作为炫耀的资本吗?告诉你们,我找到的错误都是typo而已,没想到他也给我支票。谁叫他打字不小心,Millennium都能打成 Millenium?嘿!我凑足了一顿饭钱的支票时就想去中国银行兑现,准备换了钱大吃一顿。可是银行的职员告诉我,他们必须把支票寄回美国才能拿到现金,办理这件事的费用大大高于支票本身的价值!所以Knuth相当于给我一些空头支票。Damn!早该想到的,他为什么不往大家的信用卡上面转账,而使用支票这种过时的东西!他明显觉得有他签名的支票,肯定谁也不会拿去兑现,甚至装裱在相框里作为纪念。hmmm... 算你狠~

好了,啰里啰唆。还是看看这个别人写的书评。White elephant,这确实道出了我对这套书的感觉。 (但是评价者有些观点我不能苟同,比如“O(n)表示法足够了”。) 希望以后对 paper 也有这种公开的 comments!

作者: c.plusplus    时间: 2006-01-19 13:58
标题: OK!下面谈谈你的看法吧?
what a bout you?谈谈你的看法吧!

[ 本帖最后由 c.plusplus 于 2006-1-19 13:59 编辑 ]
作者: MMMIX    时间: 2006-01-20 19:44
无所谓两大阵营吧?

Knuth 自己也说了, 他的书不是给所有人准备的,
不喜欢他的书可以看别人的书么, 有什么好争的?

[ 本帖最后由 MMMIX 于 2006-1-20 19:46 编辑 ]
作者: shinuxliu    时间: 2006-01-22 17:10
不管你喜不喜欢《The art of computer programming》,你都要尊敬Knuth,他的人品和对技术的狂热地精神是值得我们尊敬的。

如果不喜欢就不要看,不需要批评他嘛,
作者: aero    时间: 2006-01-22 17:55
我讨厌这套书的一个原因就是Knuth故意用一个叫 MIX 的处理器的机器语言来写这本书。虽然在新版的书里他设计了一种新的处理器 MMIX,但是换汤不换药。他以为一部“永恒”的计算机编程书不应该使用高级语言,因为它们很容易过时。但是他错了,机器语言恰恰是最容易过时的东西,看看现在有多少牌子的更新换代的处理器就知道。

浏览到这样一段话,就不准备看反方的观点了。
作者: saintdragon    时间: 2006-01-24 10:26
一个人不可能讨所有人喜欢。又所谓众口难调。
看一个人或一个事物一本书....,必然至少从两方面看
作者: _z_    时间: 2006-01-25 18:02
真恶~
人家炫耀支票是因为找到TEX的bug,王垠还以为别人都跟他一样找的都是印刷错误啊。。。

[ 本帖最后由 _z_ 于 2006-1-25 18:03 编辑 ]
作者: wangdan1600    时间: 2010-11-29 23:28
本帖最后由 wangdan1600 于 2010-11-30 00:03 编辑

回复 4# c.plusplus

卷一上看过,略过了数学部分....,学习hash算法的时候,翻过卷三上,习题一概略过。其他的都没看。
看起来确实困难重重啊,大量的数学公式在里面,让我等追求快餐式学习的人,收获很小。


不是书不好,更多的是我们的基础不够。。。
作者: smalloc    时间: 2010-11-30 00:18
看了这贴后终于知道MMMIX的来历了
作者: dicky3651    时间: 2011-02-01 15:36
看了那个王垠的第三段话,就知道没必要去介意他的评论了,没有机器语言会不过期,哈哈!
    学底层语言的目的是为了理解底层思想,而且某些地方能够显现出算法的精致所在!并且,虽然CPU在不断地演化,指令集、汇编的确不断在变,但关键有一点,思维是共通的!
    有些人肯定会说为何要不用X86而使用一个MIX?想问这个问题的先去了解一下X86的段描述符结构等等,再对比一下RISC的U,对比一下二者之间的差别,再想想吧!
作者: fallshuang    时间: 2011-02-10 17:57
这个王垠说的有一句话是对的:  
几十年以后,计算机还是不是二进制的集成电路都说不清楚

如果量子计算机得以实现,  这些risc的汇编还有意义么?
作者: ricks_wu    时间: 2011-02-14 16:33
网购了一本,真是天书,没有很好毅力智商兴趣的人很难看完
作者: dicky3651    时间: 2012-05-31 19:08
回复 14# fallshuang


      说出那翻话的人肯定就没认真看过MIX结构如何!

    很明显,量子计算机只不过是依靠量子不同的自旋方式等等去表示状态!MIX并无严格限定一个byte要求是多少,只要求能够表示出64个状态的这种下限,但无上限,对于二进制,则说明最低需要6位,而且并无强制限定一定要用二进制(书本要求是可以使用二进制与10进制表示)!如果转成了量子计算机,只需要根据量子自旋形式,选用不同的进制作改良!

     而且MIX仅仅是描述工具,那本书真正有用的是数学知识,即使计算机用什么物理方式去制造,以现时的物理水平,依然忠于现时的数学模型,这些东西小改动肯定是有的,但有可能会有巨大变化?
作者: dicky3651    时间: 2012-05-31 21:39
      今天不知为何会因为找东西找回这份帖,但可以很明确的说,那个王垠,无非就是个不学无术!说简单的6 byte链表没意义,殊不知其实习题曾经提到过有些当Index类容器不够用时进行的操作,就活活如同现时的基址变址与映射等方面的操作!
作者: dicky3651    时间: 2012-05-31 21:42
      另外,那个王垠说到看完TAOCP可以知道“哇,原来程序可以这么写”,但不知道为何要这么写,这个就可以断定他肯定没有认真看甚至没看第一章的数学部分,根本没能力去控制自己写的程序!
作者: 睡罗    时间: 2012-06-12 19:34
呵呵,貌似上帝睡着了。
作者: ulovko    时间: 2012-06-13 15:28
看看到底是什么东西,呵呵!O_o




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2