【问题标题】:After K&R what book to use to learn programming in plain C? [closed]在 K&R 之后使用什么书来学习纯 C 编程? [关闭]
【发布时间】:2009-04-29 17:55:39
【问题描述】:

在 Brian Kernighan 和 Dennis Ritchie 的 The C Programming Language 之后,一些最受初学者青睐的书籍被证明是最好避免的,例如 anything by Herb Schildt 甚至是 O'Reilly 的 Practical C Programming,但没有似乎可以替代这些。否则大部分可用的材料都是关于 C++ 的。

除了 K&R 和我已经拥有的优秀的 C: A Reference Manual 之外,还有哪些其他书籍最适合用于学习 C 编码(简单的 C89 而不是 C++),同时又不学习坏习惯?

【问题讨论】:

  • 为什么不是 K&R?这只是你不喜欢的坏书的借口吗?
  • 安迪,Schildt 是/着名的/坏的。
  • Pete Seebach 对 Schildt 的一本书有过这样的评价:“C: The Complete Reference 是一本流行的编程书籍,唯一的缺点是它大部分内容都是废话。Herbert Schildt 有清晰的诀窍,可读的文本,巧妙地描述了一种语言,但与 C 完全不同。这个页面旨在为人们提供一种找出问题所在的好方法。” seebs.net/c/c_tcr.html
  • 措辞不清楚,但我不认为 Rob 是在说 K&R 不好。
  • O'Reilly 的 21st Century C: C Tips From the New School (2nd ed.) (2012) by Ben Klemens 非常棒。

标签: c


【解决方案1】:

【讨论】:

  • 同意。这不仅是一本写得很好的书,它会教你很多关于 C 中更神秘的角落的知识,而且读起来很有趣,也很有趣。
【解决方案2】:

C: A Reference Manual by Harbison and Steele

这不是一本教程书,但它无疑是 C 方面最好的书(在我看来,甚至超过了 K&R)。与 K&R(或任何其他教程)结合使用,您将获得 C 的良好基础。

【讨论】:

  • 是的,这是一本必备的 C 书。我应该将它与 K&R 一起包含在问题中,并且现在已经这样做了。
【解决方案3】:

This 解释了为什么 Schildt 不好。更多批评here

在 SO 中搜索 C 资源。

【讨论】:

【解决方案4】:

我很想阅读Practice of ProgrammingProgramming Pearls。这两本书都很简洁,都是面向 C 的

【讨论】:

  • 《编程实践》是优秀的第二本书。恕我直言,Programmin Pearls 有点高级。
【解决方案5】:

K&R 基本上涵盖了您需要了解的有关 C 的所有内容,甚至还实现了一些常用的数据结构。如果您使用 *nix 并想学习如何利用操作系统,Advanced Programming in the UNIX Environment, Third Edition 是阅读文件、创建线程等常见用途的一个很好的参考/指南。示例代码在 C 中。

【讨论】:

  • K&R 不涵盖线程或任何特定于 C11 的内容。
  • K&R 也没有深入探讨函数指针,但这项大量工作确实如此。
【解决方案6】:

我会说完全避开书籍。选择一个项目,任何项目(虽然不是太大),然后用 C 来实现它。没有什么可以替代简单地跳进去做的。 K&R 提供了足够的知识,您可以开始蹒跚前行并获得真正的良好学习的经验。

【讨论】:

  • 问题是问“好读的 C 书”而不是“如何学习 C”。我已经在做一些小项目(并通过谷歌的代码搜索引用源代码),但我也喜欢阅读/了解哪些主题与我目前正在尝试做的事情或希望做的事情相关。跨度>
【解决方案7】:

我喜欢 Kenneth A. Reek 的 Pointers on C。我不会说它比 K&R 更好,但我确实发现它更友好,更容易学习。我从 K&R 开始,但直到拿起这本书才真正掌握 C。

编辑:我也刚刚发现这本书自从我买了它就涨价了。因此,尽管我的推荐仍然如此,但我不能以目前的要价真正推荐它。因此,如果您能在图书馆找到二手书或副本,那么它是值得的,但以目前的价格,还有其他书籍基本上一样好,而且花更少的钱。

Expert C Programming 这本书我认为至少值得一读,一旦你掌握了 C 的窍门,虽然我不太愿意直接推荐它。从好的方面来说,它包含许多好的提示和技巧以及一些非常有用的建议。不利的一面是,这些技巧和建议的组织很糟糕,被埋在不太有用的建议中,而且书的一半似乎充满了蹩脚的笑话、旁白和不相关(但偶尔有趣)的故事。所以我会从图书馆借它,但不付钱。

但您无疑会意识到,在您编写 C 之前,您永远不会真正学习 C。

【讨论】:

  • C 上的指针很容易买到最贵的。
  • @Rob:哇,那是什么时候发生的?我买我的已经好几年了,我在英国买的,但我不记得它比任何其他编程书都贵
  • 不幸的是,它是来自 amazon.co.uk 的 75.72 英镑,我想确信它物有所值。
  • 嗯,这是一本很棒的书,但老实说,我不会为此支付 75 英镑。
  • 我同意,这是一本很棒的书。我一年前在 www.bookfinder.com 上找到了我用过的副本(就像新的一样),仅售 25 欧元。
【解决方案8】:

再次拿起你的 K&R 书,这次做练习。然后将您的代码与 K&R 中的代码进行比较,看看它在函数接口和数据结构上是否具有类似的优雅。这不是一本可以快速阅读并转到下一本书的书。它包含许多有价值的信息,练习将帮助您了解您在第一次阅读时可能错过的一些信息。

【讨论】:

    【解决方案9】:

    【讨论】:

      【解决方案10】:

      APress 的 Ivor Horton 所著的《Beginning C C》(第 3 版)是一本很棒的 C 编程入门书籍。这本书非常透彻,不是参考书,而是从头到尾关于 C 语言所有内容的好教程。

      Beginning C by Ivor Horton (3rd Edition)

      【讨论】:

      • 我似乎在某处读到他自始至终都使用 int main (void),但没有提到 int main(int argc, char *argv[])?
      • 他确实在开头经常使用 int main(void) ,这是根据 ANSI C 标准的有效声明。后来,在第 349 页,他介绍了 main(int argc, char *argv[]) 声明。
      【解决方案11】:

      学习 C 的好书是: C BY DISSECTION The Essentials of C Programming by Al Kelley & Ira Pohl

      非常容易阅读,包含大量优秀的编程示例。

      【讨论】:

        【解决方案12】:

        我拥有的最好的 C 语言教科书是 Peter A. Darnell 和 Philip E. Margolis 的 C: A Software Engineering Approach。虽然它(不值得)没有其他书籍那么出名,但我发现它非常具有可读性,并且它处理了 K&R 跳过的所有细节。

        它有两个缺点:

        1. 它是 1996 年的,所以它不包括 C99。 (这对您来说应该没问题,因为您对 C89 感兴趣。)
        2. 相当昂贵。

        编辑: 另一本有趣的书是 C Programming FAQs,作者是 Steve Summit。虽然我没有出版这本书,但随附的 web site 帮助我理解了 C 的不太明显的特性。

        【讨论】:

          【解决方案13】:

          我可能还建议阅读 C 程序。遗憾的是,我自己做的还不够多,无法推荐特定的。

          【讨论】:

          • 我正在考虑将此添加到我的回复中,但我认为这可能有点误导。虽然 C 可以是一种很好的实现语言,但它也可以吸引一些非常糟糕的实现。即使在一些最好的 C 代码中,也可能有一些非常不清楚和迟钝的代码。我认为尤其是学习 C,“做”比“读”更有价值。
          • 我会包括“做”,但已经提到过。
          【解决方案14】:

          ACCUbeginner's Cadvanced C 的(俄罗斯镜像)有一些简短但有用的评论。

          【讨论】:

            猜你喜欢
            • 2013-10-21
            • 1970-01-01
            • 2010-09-15
            • 1970-01-01
            • 1970-01-01
            • 2010-12-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多