计算机编程的艺术-读书还是不读书?[关闭]


63

那里有很多关于编程的书,似乎Code Complete在大多数人的“必读编程书”列表中几乎排在首位,但是Donald Knuth 的《计算机编程的艺术》呢?我是一个忙碌的人,在工作和年轻的家庭之间,我没有大量的空闲时间,因此我必须对如何使用它保持谨慎。

我想知道-这里有人读过'TAOCP'吗?如果是这样,那么值得花时间阅读,还是将其他书籍或更多类似宠物编程的开源编程或为开源做贡献的方式更好地利用我的时间进行专业发展呢?

免责声明-对于那些穿着“ Knuth是我的男生” T恤的人,请不要误解我的意思-我想读一下,但我只是想知道它是否应该放在我的优先事项列表的顶部或如果其他事情应该先出现。


我想读它,但是它真是太贵了,所以当我读完大学并开始赚索姆时,我会得到它。另外,我需要一个大书架。
gablin

我登上了第3页,垂涎三尺。6个月后在亚马逊上出售了该套装。
kirk.burleson 2011年

Answers:


72

对于了解我们每天使用的数据结构和算法是如何工作以及为什么要进行工作(但是要从头到尾阅读)的工作,TAOCP是一个非常宝贵的参考,这将是您的宝贵时间。

作为一个有家可归的人,和您的孩子一起度过时光。


34
儿童+1-众所周知,计算机非常适合等待。他们可以等孩子长大。

3
为孩子+1,虽然您可以在生活中的任何时候阅读这本书,但您只能与4岁的孩子一起玩1年。而且也只有5岁的孩子也只有1年...

3
好答案。有很多事情可以使我们成为更好的程序员,但我们需要明智地投入时间,并且要记住,做一个优秀的程序员比生活更有意义。
乔恩·霍普金斯

5
我还没有孩子,我真的想在死之前读完它。我要不要孩子?
2012年

1
@sank,您正在像程序员一样思考... :)
Angelin Nadar

23

在您的问题中将“百科全书”替换为对TAOCP的每次引用,我认为答案应该很明显。因为在很多方面,这就是TAOCP。

关于史蒂夫·乔布斯(Steve Jobs)与克努斯(Knuth)会面的故事(可能是伪造的)。乔布斯对他说的第一件事是:“很高兴认识你,纳斯博士。我已经读完了你所有的作品!”。克努斯(Knuth)的回答是“你满是屎”:http : //www.folklore.org/StoryView.py? project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt


1
百科全书中包含大量内容,其中大部分都不是有趣的内容,也不与兴趣广泛的人相关。TAOCP的内容至少与任何软件开发人员都相关。
David Thornley,2010年

4
回复:乔布斯的故事:这一个伪故事。克努思(Knuth)在Randall Munroe的Google技术演讲中说了很多。
greyfade

4
尽管如此,“故事”还是让我微笑。:)
MetalMikester,2010年

我可以证明Knuth博士的幽默。我已将电子邮件发送到他的公开地址。我很惊讶他的回应。如果他有礼貌地告诉我阅读TAOCP的其余部分,他的答复是我的电子邮件的带标记的复印件。我的电子邮件签名来自密苏里州(请向我展示),他对密苏里州一位愚蠢的政治家发表了评论。然后他说:“开玩笑,别为施瓦辛格州长怪我”。
dbasnett 2011年

21

不,它不应位于优先级列表的顶部。我已经准备好全套,但我还没有阅读完整的内容。到目前为止,我已经使用它作为某些问题的良好参考(例如,在我对随机性的理解以及对随机生成器的测试中,它是非常宝贵的)。每当遇到我无法很好解决的CS主题时,我都会抓住TAOCP的相关内容作为理解的一个好步骤。

如果您确实决定阅读它,则将为您提供更多的功能,我绝对建议您将其分小块。不要害怕跳来跳去,先看看最有趣的东西。


1
你击中了要害。
kirk.burleson 2011年

9

在某些时候,TOACP是必读的。根据您的日常工作,这可能不是您最紧迫的一项。

这是一本很好的书(很好,书集),可以在您的职业生涯早期阅读,因为它确实为您提供了通常以后才可能获得的深刻见解,但对您而言,生存到毕业并不重要在您的职业生涯中,您不仅需要编写代码,还可以选择工具箱。这是您真正想要学习算法的地方,希望已经对语言设计有所了解,并对那里的工具,语言和系统以及每个人如何适应事物的生态系统有了广泛的了解。利用一个特定的项目。

换句话说:这是大视野的学习,所以如果您现在像我一样痴迷于阅读它,如果不是,那么可以将其推迟,直到您开始渴望爬上梯子并成为一个大视野的家伙。


6

最近完成了这项任务后,我可以说他的写作方式非常有趣,并且对问题进行了适当的标注(根据难度)。获取第一卷,并阅读第一章和第二章,看看您的喜好如何。


6

TAOCP是一项伟大的工作,但是阅读它对于一个经验丰富的软件开发人员来说将是一个可怕的时间投入。如果这样做,您将牺牲几年的职业自我完善预算(即需要花费多长时间),以至于学到太多了。

我建议阅读一本或几本关于算法的“终极”书,这方面我最喜欢的是史蒂文·S·斯基耶纳(Steven S. Skiena)撰写的《算法设计手册》

然后,如果您觉得自己需要/想要更多,请移至Knuth。

同时,您可以购买一本或多本TAOCP,仔细检查以了解Knuth涵盖的区域,并将其保存在您的图书馆中,以防您在日常中实际需要一些信息。工作。我的有根据的猜测是您不会这样做,这也是我不建议尝试阅读的另一个原因。但是,如果您发现自己经常引用它,那么您将很值得花时间阅读本书的封面。


6

Knuth的开创性著作是程序员打算阅读或完成阅读的最受欢迎的参考书。有一天


2
这就像霍金为程序员准备的“时间简史”。
乔恩·霍普金斯

1
确实读过ABHIT。霍金辐射对我来说似乎很奇怪。黑洞缩小是因为有更多的东西掉进去了吗?我得到了质量的守恒,并且每个虚拟对的两半永远都无法满足破坏的目的,但是这个想法仍然很奇怪。
Steve314

@ Steve314:甚至更奇怪的是,很小的黑洞猛烈爆炸。从理论上讲。
Steven A. Lowe

2
ABHOT简短,适合一般大众使用。TAOCP既不是这些。
肖恩·麦克米伦

3

家庭/儿童评论加10。我会尝试阅读最多的书,同时还要忍受客户的红眼。

但是...是的,非常值得一读。没有理由线性阅读,而是略读并选择一些感兴趣的主题。


3

我坚定地站在人们的阵营中,他们认为每个开发人员都应该在某个时候进行投资,以使这些书(现在看起来像是平装本,现在变得越来越容易),但出于同样的原因,我会也很难相信有人会坐下来阅读本书。

最好的方法是-如果您没有通勤的时间在没有空闲时间坐下来阅读的地方-读足够多的书以知道在哪里可以找到书中的东西,然后每当您阅读整章时发现自己将它们用作给定问题的参考书。使用Google和Stack Overflow并不难获得参考书,但是在某些情况下,您可能会发现这些书提供了一些见识,您需要花更多的时间在互联网上寻找。


1
阅读完整的章节?这大约是一半的体积,它们可不是小数目。我认为您的意思可能是较小的文本单位。
David Thornley

3

不要忘记一开始,Knuth想要写一些有关如何编写编译器的东西。

例如,您可以使用Wikipedia在网上获得很多信息,但是,如果您不是某种研究人员,只需阅读摘要,您就会感到满意。

您仍然可以获取第一个书集,以便在无聊的时候阅读它。


2

与仅阅读本书相比,在书中解决这些问题可能更重要。这将需要很多时间。

他多达4卷和5册(无论是什么),因此完成这些书可能会比计算机科学基础上的大学课程更好,并且使您几乎成为有史以来最好的程序员。

由于您有一个像我这样的年轻家庭,您给了我一个很好的主意。我会一次买一本书,然后教孩子们通读。


1
“所以完成这些书可能比大学课程要好得多” –当我获得CS学位时,第1-3卷被用作几门课程的教科书,而我们将整个课程花在其中一卷的一半上例如,“第3卷排序和搜索”被作为两个单独的课程教授。
tcrosley

2
较小的要点,但目前只有三本出版,第四本正在进行中。分册是将成为第四卷的预印本。www-cs-faculty.stanford.edu/~uno/taocp.html
rjzii 2010年


1

这不是大多数人想要坐下来阅读从封面到封面的东西,不是。这是一个无价的参考书,对它进行挑选,选择一个有趣的部分,仔细阅读并做一些练习当然是很好的。但是上面所做的百科全书库比较是很恰当的……它庞大,广泛且详细。一些“运动”是可能需要数年才能解决的研究问题。

如果您只是想更好地了解底层算法,那么最好从Robert Sedgewick的书开始(例如,“ C中的算法”,“ Java中的算法”等)。


1

如果您想改变世界,请阅读。如果您想学习新的技巧,请不要阅读。


1

克努斯的TAOCP是杰作。但是,就像任何杰作(例如“伊利亚”,“战争与和平”或普鲁斯特的“寻找失去的时光”)一样,它并不适合所有人或任何时候。

这本书写得很好,研究也很深入。问题很大,算法解释也很好。

这本书的最大问题是,Knuth显示了用于虚拟计算机的虚拟汇编语言的代码。我知道他为什么这么做,但事实是很糟糕。

我建议将这本书用作圣经。有需要时,寻找它。您会找到答案。它发生在我身上不止一次!


3
如果为IBM360或PDP8使用了实际的汇编程序会有所帮助吗?
马丁·贝克特

1
它不可能用非虚构的汇编语言来忍受这50年。它使每个人处于同等劣势!
luser droog 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.