云社区 博客 博客详情
云社区 博客 博客详情

权威C书指南和清单

木栖西 发表于 2020-02-06 20:30:05 02-06 20:30
木栖西 发表于 2020-02-06 20:30:05 2020-02-06
0
0

【摘要】 这个问题试图收集社区维护的关于c编程语言的优质书籍清单,目标是各种技能水平。C是一种复杂的编程语言,通过阅读在线教程很难随时随地学习。综合性书籍通常是学习语言的最佳方式,找到一本好书是第一步。重要的是要避免写得不好的书籍,更重要的是要避免包含严重技术错误的书籍。请建议编辑接受的答案,以添加高质量的书籍,具有近似的技能水平和每本书的简短描述/描述。(请注意,问题已被锁定,因此不会...

这个问题试图收集社区维护的关于c编程语言的优质书籍清单,目标是各种技能水平。

C是一种复杂的编程语言,通过阅读在线教程很难随时随地学习。 综合性书籍通常是学习语言的最佳方式,找到一本好书是第一步。 重要的是要避免写得不好的书籍,更重要的是要避免包含严重技术错误的书籍。

请建议编辑接受的答案,以添加高质量的书籍,具有近似的技能水平和每本书的简短描述/描述。 ( 请注意,问题已被锁定,因此不会接受新的答案。列表中会保留一个答案

随意讨论书籍选择,质量,标题,摘要,技能水平以及您认为错误的任何其他内容。 C社区认为令人满意的书籍将列在名单上; 其余的将定期删除。

对于由C和C ++用户协会(ACCU)进行评论的书籍,应该与书籍一起添加指向这些评论的链接。

也可以看看:


这个问题在Meta上作为2018年删除问题审计的一部分进行了讨论。
达成共识的目的是保持其未被删除和积极维护。


#1楼

警告

这是各种质量的随机书籍清单。 在一些人看来(有一些理由),它不再是推荐书籍的清单。 一些列出的书籍包含明显不正确的陈述或教导错误/有害的做法。 知道此类书籍的人可以编辑此答案以帮助改进。 看到C书的清单已经乱了。 怎么办呢? ,以及删除问题审核2018

参考(所有级别)

  • C编程语言(第2版) - Brian W. Kernighan和Dennis M. Ritchie(1988)。 由C的发明者编写的C(C90,而不是C99或更高版本)仍然是一个很好,简短但完整的介绍。然而,语言已经发生了变化,并且在过去的25年中发展出了良好的C风格,并且有部分显示其年龄的书。

  • C:参考手册(第5版) - Samuel P. Harbison和Guy R. Steele(2002年)。 关于C的优秀参考书,包括C99。 它不是教程,可能不适合初学者。 如果您需要为C编写编译器,那就太好了,因为作者在创建时必须这样做。

  • C袖珍参考(O'Reilly) - Peter Prinz和Ulla Kirch-Prinz(2002)。

  • comp.lang.c常见问题 - 史蒂夫峰会。 关于C的许多问题的答案的网站

  • 可以在此处找到各种版本的C语言标准。 有一个C11标准草案的在线版本。

  • 新的C标准 - 注释参考 (免费PDF) - Derek M. Jones(2009)。 提到的“新标准”是旧的C99标准而不是C11标准。

  • C99标准的基本原理


初学者

中间

  • 使用ANSI-C进行面向对象编程 (免费PDF) - Axel-Tobias Schreiner(1993)。 代码有点复杂。 如果您想要C ++,请使用C ++。

  • C接口和实现 - David R. Hanson(1997)。 提供有关如何以通用和可重用的方式在C中定义接口和实现之间的边界的信息。 它还通过将其应用于C中的公共机制和数据结构的实现来演示这一原理,例如列表,集合,异常,字符串操作,内存分配器等。 基本上,Hanson将他编写的所有代码作为构建Iconlcc的一部分,并以其他人可以为自己的项目重用的形式提取出最佳位。 它是使用现代设计技术(包括Liskov的数据抽象)的良好C编程模型,展示了如何将大型C项目组织为一堆有用的库。

  • C拼图书 - Alan R. Feuer(1998)

  • 标准C库 - PJ Plauger(1992)。 它包含C89标准库实现的完整源代码,以及有关设计和代码设计原因的广泛讨论。

  • 21世纪C:来自新学校的C技巧 - Ben Klemens(2012)。 除了C语言之外,本书还介绍了gdb,valgrind,autotools和git。 关于风格的评论可以在最后一部分(第6章及以后)中找到。

  • C语言中的算法 - Robert Sedgewick(1997)。 让您真正掌握在C中实现算法的方法。非常清晰明确; 可能会让你想丢掉所有其他算法书籍并保留这本书。

  • C指针 - Kenneth Reek(1997)。

  • C中的指针 - Naveen Toppo和Hrishikesh Dewan(2013年)。

  • C语言中的问题解决和程序设计(第6版) - Jeri R. Hanly和Elliot B. Koffman(2009)。

  • 数据结构 - 使用C的高级方法 - Jeffrey Esakov和Tom Weiss(1989)。

  • C Unleashed - Richard Heathfield,Lawrence Kirby,et al。 (2000年)。 不理想,但值得中级程序员练习本书中写的问题。 这是comp.lang.c贡献者建议的类似烹饪书的方法。

  • 现代C - Jens Gustedt(2017)。 从C级到高级级C涵盖C级5级(遭遇,熟人,认知,经验,抱负)。它涵盖C11线程和原子访问,很少有其他书籍可以做,并不是所有编译器都能在所有环境中识别。

专家


未分类

  • Essential C (免费PDF) - Nick Parlante(2003)。 请注意,这在几个方面描述了C90语言( 例如 ,在讨论//在代码中的任意点处对变量声明进行注释和放置时),因此应该谨慎对待它。

  • C编程常见问题解答:常见问题 - Steve Summit(1995)。 这是前面列出的网站的书。 它不包括C99或更高版本的标准。

  • C in a Nutshell - Peter Prinz和Tony Crawford(2005)。 如果您需要C99的参考书,那就是优秀的书。

  • 功能C - Pieter Hartel和Henk Muller(1997)。 教授对低级编程非常有用的现代实践,并考虑到并发性和模块性。

  • 编程实践 --Brian W. Kernighan和Rob Pike(1999)。 陪伴K&R的一本非常好的书。 它也使用C ++和Java。

  • A. Koenig的C陷阱和陷阱 (1989)。 非常好,但C风格的标准C之前的日期,这使得它现在不太值得推荐。

    有些人主张从这个清单中删除“陷阱和陷阱”,因为它困扰了一些人犯错误; 其他人继续争辩将其列入。 也许它应该被视为一本“专家”书,因为它需要适度广泛的C知识才能理解自出版以来发生了哪些变化。

  • 建立自己的Lisp - Daniel Holden(2014)。 一种愉快的学习方式C.

  • MISRA-C - 由汽车工业软件可靠性协会发布和维护的行业标准。 涵盖C89和C99。

    虽然这不是一本书,但每位经验丰富的C程序员都应尽可能多地阅读和实现它。 MISRA-C最初是作为安全关键应用程序的指南,但它适用于需要稳定,无错误的C代码的任何应用领域(谁不想要更少的错误?)。 MISRA-C正在成为整个嵌入式行业的事实标准,并且即使在其他编程分支中也越来越受欢迎。 该标准有(至少)三种出版物(1998年,2004年,以及2012年的当前版本)。 2016年还有MISRA合规指南文件和MISRA C:2012修订1 - MISRA C:2012附加安全指南(2016年4月发布)。
    请注意,MISRA规则中的某些限制并不适用于所有上下文。 例如,指令4.12规定“不应使用动态内存分配”。 这适用于设计MISRA规则的嵌入式系统; 它无处不在。 (例如,编译器通常使用动态内存分配来处理符号表之类的事情,如果没有动态的内存分配则很难,如果不是荒谬的话。)

  • 累计列出了ACCU评论的书籍,其中包括2007年的初级C (116种)和来自2008年的高级C (76种)。其中大部分都不会出现在主站点上,您无法按主题浏览无论如何。


警告

警惕Herbert Schildt写的书。 特别是,你应该远离C:The Complete Reference (4th Edition,2000),在某些圈子里称为C:The Complete Nonsense。

同时要警惕Yashwant Kanetkar的书“ Let Us C” 16版,2017年)。 有些人认为它是一本非常过时的书,教授Turbo C并且有许多过时的,误导性的和彻头彻尾的错误材料。

学习C The Hard Way (2015)作者:Zed Shaw。 一本评论不一的书。 蒂姆亨特纳尔对这本书的批评:

总结我的观点,如下所示,作者以极其简单和误导的方式呈现材料,整个语料库是捆绑的混乱,他提供的一些观点和分析是完全错误的。 我试图通过一个新手的眼睛来看这本书,但不幸的是,我在C语言编写代码方面有多年的偏见。对我来说很明显,作者对C的理解有缺陷,或者他故意过度简化他实际上误导了读者(有意或无意地)。

“学习C艰难之路”并不是一本我可以推荐给那些学习编程和学习C的人的书。如果你已经是其他相关语言的称职程序员,那么它就代表了一个有趣且不同寻常的论述。 C,虽然我对本书的部分内容有所保留。 乔纳森莱弗勒


过时的


其他贡献者 ,未在修订历史中记入:
Alex LockwoodBen JacksonBubblesclawscoledotDana RobinsonDaniel HoldenDervin ThunkdwcErci HouGarenhazizJohan BezemJonathan LefflerJoshua PartogiLucasLundinMatt K.mossplixMatthieu M.midorNietzche-jouNorman Ramseyr3st0r3ridthyselfRobert S. BarnesTim RingTony BaiVMAtm

文章来源: www.oschina.net,作者:技术盛宴,版权归原作者所有,如需转载,请联系作者。

原文链接:https://my.oschina.net/stackoom/blog/3163774

登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 0
点赞
分享文章到微博
分享文章到朋友圈

评论 (0)


0/1000
评论

登录后可评论,请 登录注册

评论

您没有权限执行当前操作

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消