C程序员阅读K&R有优势吗?[关闭]


10

这个问题一直困扰着我,因为我现在正在阅读Kernighan&Ritchie的《 C编程语言(K&R)》,但我遇到了很多,我的意思是很多从未读过C语言的程序员。

因此,我的问题是:阅读K&R有优势吗?应该是必需品吗?


K&R是由发明C语言的人编写的。长期以来,它是唯一可用的C语言书
Steven A. Lowe

不会。K&R书籍不是唯一写过的C书籍。根据您的学习方式,另一本书可能更适合您。
user16764 2013年

1
@ StevenA.Lowe:请注意,创建和开发该语言并不一定会为您提供编写该语言的最佳凭据。例如,戈斯林(Gosling)特别指出自己不认为自己是Java专家。而且我不确定我对Stroustrup的写作总体上是否喜欢C ++。显然,他们知道他们在该语言的技术部分上所说的内容,但是充分利用它,定义样式并将其纳入可行的生态系统完全是另一回事。(尽管我认为K&R的表现非常出色)
haylem

@ user16764:我希望“否”为“应该有必要吗?”,而不是“阅读K&R有优势吗?”
haylem 2013年

@haylem:当然。幸运的是,K&R本书相当不错,但是我认为代替它或除其他C资源之外阅读本书并没有明显的优势
Steven A. Lowe

Answers:


15

有帮助,是必需的。K&R不是C语言的定义。它只是许多介绍性文章之一。我发现它特别清晰简洁,但其他读者可能更喜欢其他文本。仅仅阅读它并不会以任何方式使您与其他程序员区分开。


所以你是告诉我,我读与否没有区别吗?
Farouk Jouti

7
阅读K&R 并进行练习是学习入门C的一种很好的方法。但是,还有许多其他书籍和资源可以学习C,并且选择K&R而不是其他书籍本身并不能证明您是程序员的能力。
查尔斯·格兰特


4
K&R消除了为我学习它的恐惧。几乎就像他们坐在我旁边,通过家常,友善的聊天方式解释事情。那就是“白皮书”的价值。(我是1985年才学到的)
Rob

@Rob:是的,这是一本非常友好的书,很平易近人。我认为这是它最大的资产之一,同时还有非常清晰的示例/练习。
haylem

8

我同意查尔斯·格兰特(Charles E. Grant)的观点:这不是必需的,但值得一读,这就是我这么认为的原因:

坏东西

  • 它已过时,因此可能造成混淆。
  • 如果您已经很了解C,那么您将不会学到很多东西。
  • 如果您不喜欢K&R代码风格,则您的眼睛可能会灼痛。

第三点无关紧要,第二点相对没有痛苦,至少您知道阅读它不会有伤害。

好东西

  • 对于C和一般编程的新手程序员来说,这是一个很好的介绍。
  • 这是一本不错的书(例如:它易于阅读且写得很好)。
  • 它不仅与技术价值有关,而且还与历史价值有关。如果您以成为专家为目标,那么最好了解语言的发展方式,因此最好看看一本起源不多的书,并且是该语言中最著名的书之一。C已更改。如果不必使用旧位,不知道旧位可能没有用,但是如果遇到旧代码,或者想知道为什么某些事情以一种或另一种方式完成,这可能会很有帮助。
  • 同样,这是关于历史的。读史蒂文·列维(Steven Levy)的《黑客》(Hackers)或希兹里克(Hitzlick)的《闪电经销商》(Readings of Lightning)不会教我任何技术上的价值,但这是荒谬的。无论如何,我发现K&R在这方面也很有价值。

这不是浪费时间,所以我想在当地的图书馆拿一个副本,然后放在您的桌子上。在某个时候捡起它,当您再次抬起头时,时空连续体中会出现一个小洞,您可能会感到惊讶。


2
+1:我同意“如果您已经很了解C,那么您将不会学到很多东西。”,但是许多(如果不是大多数的话)第一次阅读它的C程序员会发现他们对C的了解不如他们所想的那样。
mattnz

1
@mattnz:是的。(话虽这么说,我担心这并不是C语言特别是本书所特有的。我们倾向于认为我们比实际了解的要多。)
haylem

6

是的,K&R 不可缺少的。

您必须阅读它,就像阅读《哈姆雷特》和《指环王》一样,也要像看《卡萨布兰卡》和《风与星球大战》一样阅读。

这是一本很棒的小书。它改变了编程,改变了技术写作,并一代代地代表了风格的巅峰。

通过不阅读,您会获得什么?六个小时?十二?二十?如果您对编程很认真,那么您将花费数千小时来铸造代码。如果您不愿意阅读,那么您还能不做什么吗?

K&R完全不应该成为您的第一本C书。如今,C不应该是您的第一语言。首先阅读K&R并不重要,但是您必须先阅读它。

而你为什么不想呢?很有趣。


1
我认为这是一个不好的类比。我认为人们应该阅读这些书,但是又有许多书和电影应该有人看,而看或不看它们绝不是任何事情的有力标志。另外,如果您认为每个人都需要阅读它们,那么这是非常特定于文化的。您还错误地认为未读K&R的时间是浪费时间。您不知道作业时间表如何,因为您可能知道他或她正计划利用这段时间来处理其他您没有提到的57本不可替代的书籍。
haylem 2013年

1
另外,虽然我有时建议某些人从C以外的其他语言开始,但我还是建议应该早点教它,并且要教得很好。基本上,我唯一能衷心同意你的答案的是:“这是一本很棒的小书。它改变了编程,改变了技术写作,并一代代地代表了风格的巅峰。” (尽管我甚至不确定后者对我的
理解

1
推动您的推理,每个人都应该阅读欧拉的“代数元素”或“Brāhmasphuṭasiddhānta”。毕竟,他们因为内容和形式而改变了领域,并在某种程度上达到了风格的顶峰,可能已经延续了几代人。当然,不阅读它们会浪费大量时间。
haylem 2013年

现在是2019年,我还没有看过K&R,也没有看过或看过您清单上的任何内容。我是认真的。
罗尼

4

是。

如果您想知道如何使用当前版本的C编写程序,那就不好了,但是-

它非常清楚地解释了这种语言为何看起来如此以及某些基本设计决策的意图。

如果有人要求您记录任何内容,那么“ C编程语言”就是这样做的绝对示例。井井有条,清晰,简洁和可读。它用普通英语写成,最少用行话,流行语为零。


2

我不确定您会从K&R中学到什么,而不是从其他C书中学到什么,但是我倾向于相信您可以从人们了解他们喜欢阅读的书籍中学到很多东西。

  • K&R是一本写得很好且简洁的书,但作为推荐却有点陈词滥调。
  • 我个人最喜欢的是Harbison&Steele,写得和K&R一样好,但要详细得多。
  • 如果有人喜欢“……为傻瓜”系列中的一本书,我会怀疑他们对工艺的奉献精神,不是因为这些书太糟糕了,而是因为它们没有深入研究细节。
  • 如果有人对赫伯特·希尔德(Herbert Schildt)所写的书发誓,那么他们就有详细的意愿,但是我会怀疑他们在所选择的书中的判断力。

总的来说,我认为阅读高质量的技术书籍(K&R肯定是一本,而不是一本很长的书)不会浪费时间。

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.