it-swarm.cn

计算机编程的艺术-读书还是不读书?

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

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

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

65
Zann Anderson

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

作为一个有家可归的人,与您的孩子共度时光。

72
Adam Crossland

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

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

23
Jason Baker

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

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

22
Michael Kohne

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

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

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

9
HedgeMage

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

6
sova

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

我建议阅读一本或几本关于算法的“终极”书,在这方面,我最喜欢的是 Steven S. Skiena的《算法设计手册》

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

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

6
kdubinets

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

6
Steven A. Lowe

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

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

3
Jé Queue

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

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

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

3
jokoon

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

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

3
rjzii

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

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

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

2
Peter Turner

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

1
veryfoolish

如果您好奇,那就去做,但是要花很多时间才能消化,所以您需要花些时间。

您有通勤的地方可以读书吗-那就完美了。


编辑:您可能会发现第4卷的一小部分的预览很有趣: http://www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz

(注:压缩后记)

1
user1249

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

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

1
mindcrime

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

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

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

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

1
Eduardo