热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

小白C入门并发疯学习路线(书单)

这篇文章实际上是我自己入门过程的总结,一个尽量少废话的C入门指南。总结完忽然发现像个读书清单?。具体总结前,想先回答一个问题——要不要先学Cÿ

这篇文章实际上是我自己入门过程的总结,一个尽量少废话的C++入门指南。总结完忽然发现像个读书清单?。

具体总结前,想先回答一个问题——要不要先学C,再学C++?
我作为小白时疑惑过这个问题,在此给后来的小白和当年的自己一个答案。
个人看法是,单就学习C++而言,直接学习C++就可以了,不用先学C。在微软维护STL的Stephen Thomas Lavavej都说他当年学C++之前学C语言浪费了大量的时间,早知道就直接从C++开始。

很多老的项目是C语言写的,之后的编程生涯多半还是绕不开学C语言,不过那时候你已有C++功底,构不成啥大问题。

因此,这篇文章基本不提C的学习,直接硬刚C++。不赞同的看客勿喷,右上叉叉就是了。赞同的同学可以往下看。

入门
《Accelerated C++》,《Essential C++》二选一精读。《A Tour of C++》选读。

《Accelerated C++》很适合新手,因为她只有短短不到300页,在普遍砖一样的入门书籍里面是一股清流。容易通读完,减少挫败感。
《Essential C++》比较适合有其他编程经验的中手迅速学习C++。内容会比《Accelerated C++》深一些。
《A Tour of C++》,C++ creator扛鼎之作,适合刚学完、还有学完很长时间以后看,快速复习 C++知识。
主看书的同时,辅以这几个网站的资料,交叉印证——

C++ 教程:http://www.runoob.com/cplusplus/cpp-tutorial.html
你好,C++:https://zhuanlan.zhihu.com/nihaoCPP
C++入门系列博客:https://www.jianshu.com/u/67702c00ea59
比如我当初主看的是 Accelerated C++,在上下班通勤等零碎时间就在手机上看辅助部分的资料,看看跟读书的理解一不一样。甚至有时能意识到资料中某些概念的表述不太准确,此刻会发觉自己真的理解了。这种交叉印证的阅读法,能使自己入门时对基础理解的自信更足些。

完成这一步后,就可以开始上GitHub看点别人的代码,尝试写点代码。
我的话,学了在xcode下新建C++工程,然后参照这几个链接,写了两个计算器和一个学生管理系统。然后开始搬砖了。
计算器1:https://blog.csdn.net/jiejinquanil/article/details/51405381
计算器2:https://www.zhihu.com/question/28582706
学生管理系统:https://blog.csdn.net/qcyfred/article/details/53969547

入门这一步是最关键的,你初步了解了各种基本概念,并成功书写和运行起了代码,感觉真棒吧。
接着下面介绍的,就是顺利入门以后的广阔大海,慢慢慢慢慢慢慢慢、好好好好游吧。留心,不要急,千万不要抱有直接把后面的内容一口气学完,再开始干活的想法。因为那样要耗费巨量时间且效果不好,况且C++是学不完的,也没有人敢说精通。请一边投入实作,一边保持学习。

系统化
入门后有时间就要阅读些更系统的书。
具体就是《C++ Programming Language》(现在已经有第四版了)和《C++ Primer》二选一精读。之后有时间可以翻翻另一本。
(强调提示 !!!《C++ Primer》和《C++ Primer Plus》不是同一本书的不同版本,作者也不一样。【不建议】看《C++ Primer Plus》)

函数库
到这里你应该跨过了语法障碍了,要开始了解函数库。可以按顺序看看《C++标准库》、《深入理解C++对象模型》和侯捷老师的《STL源码剖析》。

追逐性能与优雅
现在应该对C++算有小小成,可能会对如何写出更好性能、更优雅的C++代码感兴趣,可以继续看《Effective C++》和《More Effective C++》,《Exceptional C++》。

哲学
能坚持到最后这步,你可能快疯了,疯子喜欢问哲学问题,比如C++是谁、从哪来、要到哪去。
尝试读读《C++沉思录》、《The Design and Evolution of C++/C++语言的设计和演化》。
另外 C++(C语言) 在一众高级语言里面却算是比较贴近计算机底层的语言。

多了解计算机结构、存储、运算原理方面的知识,会对C++ 的来龙去脉理解得更透彻,可以读读《计算机科学导论》、软件工程的《代码大全》、操作系统的《现代操作系统》、程序员入门的《深入理解计算机系统》。
 

最近想学C++,找了一下网上推荐的书籍,转载过来给大家分享

转载自http://c.chinaitlab.com/cc/basic/200905/783905.html

          1. 

    【原书名】 C++ Primer (4th Edition)

    【原出版社】 Addison Wesley/Pearson

    【作者】 (美)Stanley B.Lippman,Josée LaJoie,Barbara E.Moo

    【译者】 李师贤

    【丛书名】 图灵计算机科学丛书

    【出版社】人民邮电出版社

    本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++.本版对前一版进行了彻底的修订,内容经过了重新组织,更加入了C++先驱Barbara E. Moo在C++教学方面的真知灼见。既显著改善了可读性,又充分体现了C++语言的最新进展和当前的业界最佳实践。书中不但新增大量教学辅助内容,用于强调重要的知识点,提醒常见的错误,推荐优秀的编程实践,给出使用提示,还包含大量来自实战的示例和习题。对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++初学者的最佳指南;对于中高级程序员,本书也是不可或缺的参考书。本书的前言阐述了 第4版和前一版的不同之处。

    难度:★★☆

    质量:★★★★★

    广度:★★★★★

    深度:★★★★

    性价:★★★☆

    2.     

    【原书名】 C++ Primer Plus

    【原出版社】 Sams

    【作者】 (美)Stephen Prata

    【译者】 孙建春 韦强

    【丛书名】 Primer Plus 系列

    【出版社】 人民邮电出版社

    本书针对的是C++初学者,书中从C语言基础知识开始介绍,然后在此基础上详细阐述C++新增的特性,因此不要求读者有C语言方面的背景知识。本书可作为大中院校教授C++课程的教材,也可供初学者自学C++时使用。覆盖面较全,章节安排比较合理,由浅入深,也很容易,故因此失去了一些深度。价格比较便宜,但翻译质量略有不足。现在,第五版也出版了,不过还没有读,看章节都差不多。

    难度:☆

    质量:★★★☆

    广度:★★★★

    深度:★★★

    性价:★★★☆

    3. 

    【原书名】 Essential C++

    【原出版社】Pearson Education

    【作者】 (美)Stanley B.Lippman

    【丛书名】 深入C++系列

    【出版社】 中国电力出版社

    lippman的一部面向初学者的作品。在他写了那么后一本primer之后,为何还要写这么薄这么浅的书呢?其实primer对于初学者来说太笨重了,而这本书却是从不同的方面——C++的本质和组织结构对语言进行阐释,可以帮助初学者对这门语言有一个大致的了解,但知识范围不很全面,不适合系统学习,读者需要一定的编程知识。

    难度:★☆

    质量:★★★★

    广度:★★★☆

    深度:★★★

    性价:★★☆

    4. 

    【原书名】 Effective C++, Third Edition

    【原出版社】 Addison Wesley/Pearson

    【作者】 (美)Scott Meyers

    【出版社】 电子工业出版社

    

    【原书名】 More Effective C++: 35 New Ways to Improve Your Programs and Designs

    【原出版社】 Addison Wesley/Pearson

    【作者】 (美)Scott Meyers

    【丛书名】 C++设计新思维系列丛书

    【出版社】 机械工业出版社

    C++真牛人大手笔,之以条款的形式回答了程序员在使用C++时经常提出的“因该注意些什么?”,“因该避免什么?”,“因该怎样去解决?”,“为什么?”等问题。C++程序员想要让自己的水平上更高的档次,此二书必看。价格稍贵,有一定难度,不适合初学者。

    难度:★★★☆

    质量:★★★★★

    广度:★★★

    深度:★★★★★

    性价:★★

    5. 

    【原书名】 Thinking in C++

    【原出版社】 McGraw Hill

    【作者】 Bruce Eckel

    【译者】 刘宗田 等

    「丛书名」 计算机科学丛书

    【出版社】 机械工业出版社

     除了讲述语言之外,有一定的工程性,从设计者的角度来描述C++怎样应用在实际的项目中。语言描述的全面性欠佳,但还是有一定精度的,尤其是在一些小技巧方面。本书还引入了大量的战例,通过一个个的真实项目来引导你使用C++的思想去思考问题。翻译很差,有一定难度。

    难度:★★☆

    质量:★★★

    广度:★★★☆

    深度:★★★★

    性价:★★★

    6. 

    【原书名】 The Complete C++ Training Course

    【作者】 (美)Harvey M.Deitel Paul James Deitel

    【译者】 邱仲潘 等

    【丛书名】 国外计算机科学教材系列

    【出版社】 电子工业出版社

    正如其名,真正的大学教程,非常适合初学者学习,内容由浅入深,对C++各项特性的描述都很到位,章节的安排很有条理性,但深度略显不足,翻译质量不能称之为很好,有一定的疏漏,但对于厚度来讲,价格还算比较便宜。

    难度:★

    质量:★★★☆

    广度:★★★★★

    深度:★★★★

    性价:★★★★☆

    7. 

    【原书名】 The Design and Evolution of C++

    【原出版社】 Addison-Wesley

    【作者】 (美)Bjarne Stroustrup

    【译者】 裘宗燕

    【丛书名】 计算机科学丛书

    【出版社】 机械工业出版社

    对于热爱C++的朋友来说,确实好书一本,可以当做小说来读,可以放在厕所或床头上以供消遣。本书对语言本身描述很少,并有一定难度。读者需要对C++有一定了解,不适合初学者阅读。本书也有英文版,如果不喜欢翻译的朋友可以看看。

    难度:★★★

    质量:★★★

    广度:★★☆

    深度:★★★★

    性价:★★★

    8. 

    【原书名】 The C++ Programming Language, Special Edition

    【原出版社】 Addison Wesley

    【作者】 (美)Bjarne Stroustrup

    【译者】 裘宗燕

    【丛书名】 计算机科学丛书

    【出版社】 机械工业出版社

    C++之父所作,被称之为“C++圣经”。不仅对语言,而且对语言周边的一些如发展史、语义哲学都有比较详细的描述。对语言的描述较为全面,同时包含一部分和程序库相关联的知识,并有一定深度,适合有一定语言基础的初学者,翻译质量不错,价格适中。

    难度:★☆

    质量:★★★★☆

    广度:★★★★☆

    深度:★★★★

    性价:★★★☆

    9. 

    【原书名】 Inside the C++ Object Model

    【原出版社】 Pearson Education

    【作者】 (美)Stanley B.Lippman

    【丛书名】 深入C++系列

    【出版社】 中国电力出版社

    第一代C++编译器开发主管所写。如果你想成为真正的C++高手,看这本书,他为你讲述了编译器在处理各种语法时在“后台”所做的事。对C++有较深入了解的读者会在读后有恍然大悟之感。候杰翻译,质量相当不错,但内容太深,只适合对C++有较深了解的读者,价格偏贵。

    难度:★★★★☆

    质量:★★★★★

    广度:★★★

    深度:★★★★★

    性价:★★

    10.

    【作者】 钱能 董灵平 张敏霞

    【丛书名】 C++程序设计系列教材

    【出版社】 清华大学出版社

    国人所著,国人水平实在有限,深度和广度欠佳,放在这十大里实在是因为再挑不出好书了。可圈可点之处有讲解较为清析、简单,符合中国学生思路,价格便宜。

    难度:☆

    质量:★★★

    广度:★★★☆

    深度:★★★

    性价:★★★★★

    鉴于目前问书的贴子增多太快,现以个人之见对C++十大学习书籍做简要描述,希望能对初学者起到一定的帮助。


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了Java集合库的使用方法,包括如何方便地重复使用集合以及下溯造型的应用。通过使用集合库,可以方便地取用各种集合,并将其插入到自己的程序中。为了使集合能够重复使用,Java提供了一种通用类型,即Object类型。通过添加指向集合的对象句柄,可以实现对集合的重复使用。然而,由于集合只能容纳Object类型,当向集合中添加对象句柄时,会丢失其身份或标识信息。为了恢复其本来面貌,可以使用下溯造型。本文还介绍了Java 1.2集合库的特点和优势。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
author-avatar
____L振豪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有