当前位置: 首页 > 科技观察

我推荐的一些C-C++书籍

时间:2023-03-17 21:52:48 科技观察

人们经常问我有哪些C++和编程书籍推荐,可能是因为我在PowerDNS上做了一个关于“WritingWell-ReadableC++Code”的演讲。这篇博文作为我对上述问题的回答,同时也包含了一些更广泛的编程注释。如果您有任何我没有提到的补充或喜欢的书,请发表评论,我计划在有新书后立即更新此页面。第一个注意事项:如果你打算学习C++,一定要学习最新版本的C++2011。这个版本的C++消除了C++的强大功能带来的许多痛点。另外,不用担心C++2014书籍,大多数编译器已经支持它。学习编程学习编程包括以下几个重要方面:了解语言的语法了解哪些功能可用以及何时可用编写可读代码编译器可以理解它,但下一个人能否阅读它?在更高层次上设计结构良好的程序为了学习一门语言,我们通常可以找到名为《X语言编程》的书。这也形成了一个潜规则:当你创造一种严肃的语言时,你需要写这样一本书。学习一门语言有点像学习作文,但这并不意味着你会突然成为著名的散文家!对于C++,这里有两本相关书籍:《C程序设计语言》(BrianW.Kernighan,DenisM.Ritchie,TCPL)。这本书不是关于C++的,但是关于C的一切都是关于C++的。例如,本书附带的例子都可以看作是C++的例子,而不是真正的C,因为C++对编译器的要求比C更严格。但是大多数写得好的C程序都可以在C++下编译。TCPL是一本小书,被誉为X语言编程最好的书。这本书的每一页都充满了智慧。?(BjarneStroustrup),一本杰出的书,每一页都同样充满智慧。这本书有1400页。VerityStob对这本书有热烈的评论。在TCPL,我们读到“Cisnotabiglanguage,soitneedsalongbooktoexplainit”,但是讲解C++的书有1400页。虽然这本书很难逐页阅读(但我几乎每页都读过),但我还是建议每个人都拥有一本。它解释了C++的各个方面,并且做得很好。拥有这本书作为C++的参考,将对您的编程生涯大有裨益。在此声明,《C程序设计语言》不是学习C++的入门书。本书用于指导您的学习。同时,《C程序设计语言》也单独提取了《A Tour of C++》章节。C++不仅是一种语言,还是一个函数库。C++标准库在《C++程序设计语言》也有解释。为了全面理解C++标准库,我推荐:《C++标准程序库:自修教程与参考手册》(NikolaiJosuttis)。和《C++程序设计语言》一样,这也是一本大书。但这本书涵盖了C++标准库(也称为C++标准模板库)的方方面面,第二版涵盖了C++2011标准。如果您以前使用过python、perl或java等高级语言,C和C++可能会令人生畏。与其他语言不同,C/C++非常接近硬件。这也有能够充分利用硬件的优势,但也使您需要对细节现实一些。SimonTatham(最著名的是Putty的开发者和《缺失代码怪味》的作者,尽管他现在正在用C开发)写了一篇优秀的文档:《The Descent to C》,它应该可以缓解你的学习曲线,即使对于有经验的C开发人员也可能受益于一两件事。如果你已经阅读了以上三本书和链接,你已经可以熟练掌握C++,并善用C++标准库。但是,您还没有学习如何以及何时使用C++的功能。C++作为一门强大的语言,有句话说得好:“用C,错了可能砸到自己的脚,用C++,错了,整条腿都废了”,这句话是对的。另外,C++的强大之处在于,你可以继续沿用你在以前的语言中开发的方式。“我可以用任何语言编写FORTRAN代码”。但是,它并不能帮助您成为更好的开发人员。善用C++这里还有三本书,都是ScottMeyers写的,这将大大简化一个决心开发C++的人的生活:《Effective C++》——列出一些常见的错误、有用的特性和需要付出的代价在编程中注意。最后更新于2005年。?——同上,但说的多了一点,也值得一读。《Effective STL》——***2001年更新,与《Effective STL》相同,但侧重于C++标准库。如果你只想读其中一个,就选《Effective C++》,如果你想选两个,就选《Effective STL》。需要说明的是,Scott正在准备一本全面涵盖新的C++2014标准的新书(这可以看作是对C++2011标准的改进,目前大多数编译器已经支持C+++2014)。书出版了就赶紧买吧,书的预览部分已经很不错了。更新:很多读者推荐了StanleyLippman的《C++ Primer》,我不知道这本书,但是它更新了C++2011标准并获得了很多好评,请告诉我你的意见。WritingGoodCode下面提到的书籍都讨论了编码风格,如果写代码的话,但它们的范围更广。教你如何编写可读代码的书籍:《程序设计实践》,(BrianW.Kernighan,RobPike,TPoP),这不是一本特定于C++的书,但谈了很多关于如何组织代码,如何何时优化代码,什么时候不优化,如何调试以及如何写代码避免调试等等,我想每个开发机构都应该有这样一本书。《Linux内核代码规范》(LinusTorvalds),这不是一本关于C++的书,但是在第4节“命名”、第6节“函数”和第8节“注释”中,我们可以学到很多东西。每个想要改进代码的程序员都***仔细阅读《程序设计实践》的每一页。大规模设计代码据我所知,只有一本书谈到了这一点,我的一些想法也依赖于它。《Large-Scale C++ Software Design》(JohnLakos),虽然这本书很老了,但里面的一些建议是用来指导那些为内存少、性能低的机器开发程序的人。从这本书中,我学会了如何将一个复杂的系统拆解成多个有意义的模块。需要特别注意处理循环中的依赖代码。这些额外的细节使您的代码几乎无法测试,因为每个模块都严重依赖于其他模块。***,祝童鞋学习C++进步!原文链接:berthubert译文:伯乐在线-周昌宏译文链接:http://blog.jobbole.com/61308/