C99是否会使K&R书籍过时?如果是这样,应该推荐什么呢?[关闭]


10

C99已经和我们在一起了一段时间。它介绍了许多K&Rs C编程语言所没有的功能。它们都不是特别激进的。但是,即使是很小的功能,例如能够混合声明和代码的代码,也会改变人们组织代码的方式。

尽管我仍然认为K&R本书是无价的参考书,并且像它的写作风格一样,是否有更好的书考虑到C99标准?我会心跳加速地购买第三版K&R,但我认为这不会发生。


确实没有C99更新的英文版本吗?本书的捷克语翻译版本已更新为C99。
西蒙·托斯

@Let_Me_Be K&R书的第二版于1988年出版。该书没有较新的英语版本。该版本涵盖1988
ANSIC。– Thomas Owens

由于版权/使用费的设置方式,K&R不会编写第三版来做任何事情,这就是为什么我们还没有看到它。
BlackJack

@BlackJack真是可惜。
贾斯汀·迪林(Dusting)

2
@Let_Me_Be-将捷克语翻译翻译回英语需要多少钱?:-)我认为这可能是我们获得C99版本的K&R的唯一方法...
voretaq7 2011年

Answers:


8

我仍然建议K&R(ANSI的第二版)适用于仅学习C并且想要学习Straight Procedural C(减去对象)的任何人。如果K&R在编程书籍中确实拥有“ Unix Mentality”,那么如果他们打算有一天要对* NIX内核代码进行黑客攻击,我会加倍推荐。

一旦他们掌握了C语法的基础知识并且对样式有一个合理的了解,就可以向他们介绍其他有关C99功能的参考,并解释说这可能会改变他们组织其编写内容的方式,但是他们将拥有(通常)是从K&R开始的良好习惯(例如预先声明),他们会意识到为什么要做一些与这些习惯相反的事情-我认为您可以通过这种方式建立更好的程序员。


3
预先声明实际上是从C89样式继承的坏习惯,应在首次使用变量之前对其进行声明。例如,见在回答这个问题
艾蒂安

2
@Étienne“在前”是指“应该在使用范围内尽早声明所有变量。” 这基本上就是其他答案所提倡的(或至少在其非常简化的示例中显示)。我赞成该答案所提倡的观点,但是您要确保新程序员意识到“哦,伙计,我需要一个{计数器,临时变量,等等。)-让我在逻辑的中间声明一下。” 这是一件坏事,因为这样做会破坏可读性,就像其他答案指出的那样(至少是恕我直言)
voretaq7 2013年

2
没有达成共识,我尊重不同意见,这是一件坏事,很多人认为这是一件好事,宣布它在逻辑的中间,又见programmers.stackexchange.com/questions/56585/...
Étienne13年

@Étienne这是您的观点,您当然有权获得它,但直言不讳,您无法改变我的观点:我是一个老派的Unix黑客,C编码风格非常适合我。幸运的是,我们

希望我们不会;-)
艾蒂安

8

您需要Harbison和Steele:“ C:参考手册

它明确涵盖了C99并与其他C语言风格进行比较/对比。我发现它超级有用。


1
公平地说,H&S就是它所说的:参考手册,它本身并不是K&R的一种很好的学习资源。
约翰·博德

同意!我认为OP正在寻找参考。
Angelo

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.