C++的学习者众多,教材也非常繁杂。根据入门、提高、进阶三个层次为读者们推荐一些著名的教材,提升学习的效率。
推荐的C++入门教材见书籍 24。
书籍 24 C++入门教材推荐: (a) C++程序设计:思想与方法 (翁惠玉); (b) C++程序设计 (谭浩强); (c) Sams Teach Yourself C++ in One Hour A Day (Siddhartha Rao); (d) Programming: Principles and Practice Using C++ (Bjarne Stroustrup)
翁惠玉老师编著的《C++程序设计:思想与方法》[6]以C++为语言环境,重点讲授程序设计的思想和方法,涉及过程化程序设计和面向对象程序设计,内容包括数据类型、控制结构、数组、指针、数据封装、过程封装、运算符的重载、继承、多态性和异常处理等。该书秉承以程序设计方法为主、程序设计语言为辅的思想,采用以问题求解引出知识点的方法,强调编程思想和知识的应用,增加了更多的习题和实例,多章都增加了“编程规范与常见错误”小节。结构更加合理,内容更加通俗易懂。
谭浩强老师编写的《C++程序设计》[7]是一本非常适合自学的入门级教材。该书的特色是读者群定位准确,内容取舍合理,设计了读者易于学习的内容体系,并且以通俗易懂的语言阐述了许多复杂的概念,大大减少了初学者学习C++的困难。
Siddhartha Rao 编著的《Sams Teach Yourself C++ in One Hour a Day》[8]讲解清晰,语言优美,由浅入深地呈现了C++的学习内容。该书分为C++编程基础知识、C++面向对象编程基础、学习STL、关于STL的更多知识、C++的先进概念、附录等几部分。各部分环环相扣、层层递进,完整地呈现了C++中由基础到深入的丰富内容。
C++之父Bjarne Stroustrup编写的《Programming:Principles and Practice Using C++》[9]是 经典程序设计思想与C++开发实践的完美结合,是对C++编程原理和技巧的全新阐述。书中全面地介绍了程序设计基本原理,包括基本概念、设计和编程技术、语言特性以及标准库等。阅读此书,能够让读者学会如何编写具有输入、输出、计算以及简单图形显示等功能的程序。此外,该书通过对C++思想和历史的讨论、对经典实例(如矩阵运算、文本处理、测试以及嵌入式系统程序设计)的展示,以及对C语言的简单描述,为读者呈现了一幅程序设计的全景图。
推荐的C++提高教材见书籍 25。
书籍 25 C++提高教材推荐: (a) C++语言设计和演化 (Bjarne Stroustrup 著, 裘宗燕 译); (b) C++ Primer Plus (Stephen Prata 著, 张海龙 等译); (c) C++ Primer (Stanley B. Lippman 等著, 王刚 等译); (d) Essential C++ (Bjarne Stroustrup 著, 侯捷 译); (e) STL源码解析 (侯捷 著); (f) C++标准模板库编程实战 (Ivor Horton著, 郭小虎 等译)
C++之父Bjarne Stroustrup编著、裘宗燕翻译的《C++语言设计和演化》[10]是C++的设计者关于C++语言的最主要著作之一。该书系统而有条理地论述了C++的历史和发展,讨论了C++中各种重要机制的本质意义和设计背景,同时阐明了这些机制的基本用途和使用方法,最后讨论了C++所适合的应用领域及未来的发展前景。
Stephen Prata编著、张海龙等翻译的《C++ Primer Plus》[11]通过大量短小精悍的程序详细而全面地阐述了C++的基本概念和技术。全书分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑操作符、函数重载和函数模板、内存模型和命名空间、类的设计和使用、多态、虚函数、动态内存分配、继承、代码重用、友元、异常处理技术、String类和标准模板库、输入/输出等内容。该书针对C++初学者,从C语言基础知识开始介绍,然后在此基础上详细阐述C++新增的特性,因此不要求读者有较多C语言方面的背景知识。
Stanley B. Lippman等人编著、王刚 等人翻译的《C++ Primer》[12]是一本非常著名的经典教材。Stanley B. Lippman是全球知名的C++编程大师,其编写的这本教材是一本系统阐述C++编程技巧和思想的名著。该书论述全面而具有深度,适合有一定基础的C++学习者进一步提高自己的编程能力使用。
《Essential C++》[13]是编程大师Stanley B. Lippman的另外一本名著,中文版由侯捷翻译。该书以四个面向来表现C++的本质:procedural(面向过程的)、generic(泛型的)、object-based(基于对象的)、object-oriented(面向对象的)。全书围绕一系列逐渐繁复的程序问题以及用以解决这些问题的语言特性来组织。阅读此书,不仅可以学到C++的功能和结构,也可学到它们的设计目的和基本原理。
侯捷老师编著的《STL源码解析》[14]通过对STL源码的解析,为读者剖析了vector、list、heap、deque、Red Black tree、hash table、set/map等的实现,解析了排序、查找、排列组合、数据移动与复制等多种算法的实现,对底层的memory pool和高阶抽象的traits机制也进行了深入的解构。
Ivor Horton著、郭小虎等翻译的《C++标准模板库编程实战》[15]介绍了最新的C++14标准的API、库和扩展,阐述了什么是STL,并介绍了如何将它们应用到程序中。该书论述了如何使用容器、迭代器,以及如何定义、创建和应用算法。同时,还呈现了函数对象和适配器以及它们的用法。阅读完本书之后,你将能够了解如何扩展STL,如何定义自定义类型的C++组件,你还将能够定义既满足C++ STL要求又遵从最常见的设计模式和最佳实践的自定义类型。
推荐的C++的进阶教材见书籍 26。
书籍 26 C++进阶教材推荐: (a) 程序设计实践 (Brian W. Kernighan 等著, 裘宗燕 译); (b) C++编程思想 (两卷合订本) (Bruce Eckel 等著, 刘宗田 等译); (c) Effective C++ (Scott Meyers 著, 侯捷 译); (d) More Effective C++ (Scott Meyers 著, 侯捷 译), (e) Effective STL (中文版) (Scott Meyers 著, 潘爱民 译); (f) Qt 5开发及实例 (陆文周); (g) Qt 5.9 C++开发指南 (王维波); (h) OpenCV 4快速入门 (冯振 等)
Brian W. Kernighan等人编著、裘宗燕翻译的《程序设计实践》[16]针对程序设计过程中的风格、算法与数据结构、设计与实现、界面、除错、测试、性能、可移植性、命名等各个方面,系统地讨论了一些常见问题和实用技巧。
Bruce Eckel 等人编著、刘宗田等人翻译的《C++编程思想(两卷合订本)》[17]是C++编程方面的名著。该书系统的阐述了C++编程思想的精髓,阅读起来难度较大,适合进阶用。
Scott Meyers编著、侯捷翻译的《Effective C++》[18]是世界项级C++大师scott Meyers成名之作。该书总结了改善程序与设计的55个具体做法,是大师的编程精华总结。
Scott Meyers的另外一本名著《More Effective C++》[19]也由侯捷翻译。该书系统总结了35个改善编程与设计的有效方法,对于提升编程能力和培养良好的编程素养非常有用。
Scott Meyers 编著、潘爱民翻译的《Effective STL (中文版)》[20]被评为“值得所有C++程序员阅读的C++书籍之一”。该书详细讲述了使用STL的50条指导原则,并提供了透彻的分析和深刻的实例,实用性极强,是C++程序员必备的基础书籍。C++的标准模板库(STL)是革命性的,要用好STL并不容易。该书揭示了专家总结的一些关键规则,包括专家们总是采用的做法,以及专家们总是避免的做法。通过这些规则,程序员可以最大限度地使用STL。
陆文周编著的《Qt 5开发及实例》[21]详细地介绍了Qt的使用技巧并给出了一些综合实例,是学习Qt的一本优秀教材。
王维波编著的《Qt 5.9 C++开发指南》[22]从GUI应用程序设计基础开始讲起,到Qt类库概述、常用界面设计组件,再到Model/View结构、对话框与多窗体设计、文件系统和文件读写、绘图及数据可视化,最后介绍了Qt的一些高级应用,包括数据库操作、自定义插件和库、多线程、网络编程、多媒体等。该书是一本学习坡度较为平缓的教材,适合自学。
冯振等人编著的《OpenCV 4快速入门》[23]是一本介绍最新版本OpenCV的书籍。该书从计算机视觉的视角来介绍OpenCV 4的学习过程,做到有的放矢,是一本偏向实战与应用的教材。
如果想了解C++编程的学习路线,高效地学习C++编程,敬请关注本公众号的下一篇文章《桌面端编程之C++编程学习路线》。
关于人工智能中编程能力和技能训练的更多介绍,可以购买《人工智能怎么学》进一步阅读。
图书购买方式
京东:https://item.jd.com/13395339.html
当当:http://product.dangdang.com/29469230.html
天猫:https://detail.tmall.com/item_o.htm?id=687374654836
为了让图书惠及更多的读者,为更多想学习人工智能的人提供帮助,经过向出版社申请,对图书《人工智能怎么学》的部分内容进行改编和连载。图书《人工智能怎么学》的全部内容包含了初级入门、中阶提高以及高级进阶三个级别的内容。连载的内容主要是初级入门级别,适合想对人工智能进行快速和高效入门的读者,对于已有一定的人工智能学习基础,希望进一步进阶或提高的读者,则需要购买图书《人工智能怎么学》,学习中阶提高以及高级进阶的内容。此外,对于学习人工智能感兴趣的读者,也可以加入知识星球《人工智能怎么学》,知识星球是一个构建学习社群的平台,通过加入《人工智能怎么学》的社群,你将获得更多的学习资料和课程信息。
与作者互动和了解更多信息
想跟作者一起学习人工智能和互动,你可以加入如下社群:
知识星球:https://t.zsxq.com/0aLkVg0os
QQ群:600587177
想了解更多关于人工智能学习及实践的内容,请关注如下媒体:
官方网站:https://bigdatamininglab.github.io
官方微信公众号:人工智能怎么学(可扫描下方二维码或者微信搜索“人工智能怎么学”添加关注)
CSDN:https://blog.csdn.net/audyxiao001
参考文献
- Robert C. Martin. 代码整洁之道(第2版)[M]. 韩磊, 译. 北京: 中国工信出版集团, 人民邮电出版社, 2020.
- Herb Sutter, Andrei Alexandrescu. C++编程规范:101条规则、准则与最佳实践[M]. 刘基诚, 译. 北京: 人民邮电出版社, 2016.
- 杨冠宝. 阿里巴巴Java开发手册[M]. 北京: 电子工业出版社, 2020.
- James Gosling et al. The Java Language Specification:Java SE 8 Edition [M]. Upper Saddle River: Addison-Wesley, 2014.
- 老九君. C++的发展简史[EB/OL]. https://www.cnblogs.com/ljxt/p/11636342.html, 2019-10-08.
- 翁惠玉. C++程序设计:思想与方法(第2版)[M]. 北京: 人民邮电出版社, 2012.
- 谭浩强. C++程序设计(第3版)[M]. 北京: 清华大学出版社, 2015.
- Siddhartha Rao. Sams Teach Yourself C++ in One Hour a Day (Eighth Edition) [M]. Boston: Pearson, 2017.
- Bjarne Stroustrup. Programming:Principles and Practice Using C++ (Second Edition) [M]. Crawfordsville: Pearson, 2014.
- Bjarne Stroustrup. C++语言设计和演化[M]. 裘宗燕, 译. 北京: 人民邮电出版社, 2020.
- Stephen Prata. C++ Primer Plus(中文第6版)[M]. 张海龙 等, 译. 北京: 人民邮电出版社, 2020.
- Stanley B. Lippman, Josée Lajoie, Barbara E. Moo. C++ Primer(中文第5版)[M]. 王刚 等, 译. 北京: 电子工业出版社, 2013.
- Stanley B. Lippman. Essential C++(中文版)[M]. 侯捷, 译. 北京: 电子工业出版社, 2013.
- 侯捷. STL源码解析 [M]. 武汉: 华中科技大学出版社, 2015.
- Ivor Horton. C++标准模板库编程实战 [M]. 郭小虎 等, 译. 北京: 清华大学出版社, 2017.
- Brian W. Kernighan, Rob Pike. 程序设计实践 [M]. 裘宗燕, 译. 北京: 机械工业出版社, 2003.
- Bruce Eckel. C++编程思想(两卷合订本)[M]. 刘宗田 等, 译. 北京: 机械工业出版社, 2011.
- Scott Meyers. Effective C++:改善程序与设计的55个具体做法(第3版)[M]. 侯捷, 译. 北京: 电子工业出版社, 2011.
- Scott Meyers. More Effective C++:35个改善编程与设计的有效方法 [M]. 侯捷, 译. 北京: 电子工业出版社, 2020.
- Scott Meyers. Effective STL:50条有效使用STL的经验 [M]. 潘爱民 等, 译. 北京: 电子工业出版社, 2013.
- 陆文周. Qt 5开发及实例(第4版)[M]. 北京: 电子工业出版社, 2019.
- 王维波. Qt 5.9 C++开发指南 [M]. 北京: 人民邮电出版社, 2018.
- 冯振, 郭延宁, 吕跃勇. OpenCV 4快速入门 [M]. 北京: 电子工业出版社, 2020.
- ghscarecrow. Java的发展历程[EB/OL]. https://blog.csdn.net/ghscarecrow/article/details/82318636, 2018-09-02.
- JMCui. Java的发展历程[EB/OL]. https://www.cnblogs.com/jmcui/p/11796303.html, 2019-11-07.
- 明日科技. Java从入门到精通(第5版)[M]. 北京: 清华大学出版社, 2019.
- Kathy Sierra, Bert Bates. Head First Java (Second Edition) [M]. Sebastopol: O’Reilly, 2005.
- Bruce Eckel. Java编程思想(第4版)[M]. 陈昊鹏, 译. 北京: 机械工业出版社, 2007.
- Cay S. Horstmann. Java核心技术 卷I:基础知识(第11版)[M]. 林琪 等, 译. 北京: 机械工业出版社, 2019.
- Cay S. Horstmann. Java核心技术卷Ⅱ:高级特性(第11版)[M]. 陈昊鹏, 译. 北京: 机械工业出版社, 2020.
- Joshua Bloch. Effective Java(中文第3版)[M]. 俞黎敏, 译. 北京: 机械工业出版社, 2019.
- 周志明. 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)[M]. 北京: 机械工业出版社, 2019.
- Brian Goetz. Java并发编程实战 [M]. 童云兰 译. 北京: 机械工业出版社, 2012.
- Kamalmeet Singh. Java设计模式及实践 [M]. 张小坤 等, 译. 北京: 机械工业出版社, 2013.
- 明日科技. Java Web从入门到精通(第3版)[M]. 北京: 清华大学出版社, 2019.
- 未来科技. HTML5+CSS3+JavaScript从入门到精通[M]. 北京: 中国水利水电出版社, 2017.
- Elisabeth Robson, Eric Freeman. Head First HTML与CSS(第2版)[M]. 徐阳 等, 译. 北京: 中国电力出版社, 2013.
- Adam Freeman. HTML5权威指南 [M]. 谢廷晟 等, 译. 北京: 人民邮电出版社, 2014.
- Eric A. Meyer, Estelle Weyl . CSS权威指南(第4版)[M]. 安道, 译. 北京: 中国电力出版社, 2019.
- David Flanagan. JavaScript权威指南(第7版)[M]. 李松峰, 译. 北京: 机械工业出版社, 2021.
- 许令波. 深入分析Java Web技术内幕(修订版)[M]. 北京: 电子工业出版社, 2014.
- Nicholas S. Williams. Java Web高级编程 [M]. 王肖峰, 译. 北京: 清华大学出版社, 2015.
- 孙卫琴. Tomcat与Java Web开发技术详解(第3版)[M]. 北京: 电子工业出版社, 2019.
- 郭霖. 第一行代码Android(第3版)[M]. 北京: 人民邮电出版社, 2020.
- 欧阳燊. Android Studio开发实战:从零基础到App上线(第2版)[M]. 北京: 清华大学出版社, 2018.
- Dmitry Jemerov, Svetlana Isakova. Kotlin实战 [M]. 覃宇 等, 译. 北京: 电子工业出版社, 2017.
- Kristin Marsicano, Brian Gardner, Bill Phillips, Chris Stewart. Android编程权威指南(第4版)[M]. 王明发, 译. 北京: 中国工信出版集团, 人民邮电出版社, 2021.
- 刘望舒. Android进阶之光(第2版)[M]. 北京: 电子工业出版社, 2021.
- 邓凡平. 深入理解Android: Java虚拟机ART [M]. 北京: 机械工业出版社, 2019.
- 任玉刚. Android开发艺术探索[M]. 北京: 电子工业出版社, 2015.
- 林学森. 深入理解Android内核设计思想(上、下册)(第2版)[M]. 北京: 人民邮电出版社, 2017.
- 何红辉, 关爱民. Android 源码设计模式解析与实战(第2版)[M]. 北京: 人民邮电出版社, 2017.
- Christian Keur, Aaron Hillegass. iOS编程(第6版)[M]. 王风全, 译. 武汉: 华中科技大学出版社, 2019.
- 张益珲. Swift 4从零到精通iOS开发[M]. 北京: 清华大学出版社, 2019.
- Aaron Hillegass, Mikey Ward. Objective-C编程(第2版)[M]. 王蕾 等, 译. 武汉: 华中科技大学出版社, 2015.
- Matthew Mathias, John Gallagher. Swift编程权威指南(第2版)[M]. 陈晓亮, 译. 北京: 人民邮电出版社, 2017.
- Kazuki Sakamoto, Tomohiko Furumoto. Objective-C高级编程:iOS与OS X多线程和内存管理[M]. 黎华, 译. 北京: 人民邮电出版社, 2013.
- Erica Sadun. iOS Auto Layout开发秘籍(第2版)[M]. 孟立标, 译. 北京: 清华大学出版社, 2015.
- 珲少. iOS性能优化实战[M]. 北京: 电子工业出版社, 2019.
- 罗巍. iOS应用逆向与安全之道[M]. 北京: 机械工业出版社, 2020.
- Gaurav Vaish. 高性能iOS应用开发[M]. 梁士兴 等, 译. 北京: 人民邮电出版社, 2017.
- 刘浩. MATLAB R2020a完全自学一本通 [M]. 北京: 电子工业出版社, 2020.
- 天工在线. MATLAB 2020从入门到精通 [M]. 北京: 中国水利水电出版社, 2020.
- 苗志宏, 马金强. MATLAB面向对象程序设计[M]. 北京: 电子工业出版社, 2014.
- 徐潇, 李远 . MATLAB面向对象编程——从入门到设计模式(第2版)[M]. 北京: 北京航空航天大学出版社, 2017.
- 王文峰 等. MATLAB计算机视觉与机器认知[M]. 北京: 北京航空航天大学, 2017.
- 杨淑莹, 郑清春. 模式识别与智能计算——MATLAB技术实现(第4版)[M]. 北京: 电子工业版社, 2019.
- Eric Matthes. Python编程:从入门到实践(第2版)[M]. 袁国忠, 译. 北京: 人民邮电出版社, 2020.
- Magnus Lie Hetland. Python基础教程(第3版)[M]. 袁国忠, 译. 北京: 人民邮电出版社, 2018.
- Luciano Ramalho. 流畅的Python [M]. 安道 等, 译. 北京: 人民邮电出版社, 2017.
- Brett Slatkin. Effective Python:编写高质量Python代码的90个有效方法(第2版)[M]. 爱飞翔, 译. 北京: 机械工业出版社, 2021.
- Jan Erik Solem. Python计算机视觉编程[M]. 朱文涛 等, 译. 北京: 人民邮电出版社, 2014.
- Andreas C. Müller. Python机器学习基础教程[M]. 张亮, 译. 北京: 人民邮电出版社, 2018.
- 魏坤. Julia语言程序设计[M]. 北京: 机械工业出版社, 2018.
- 郝林. Julia编程基础(第2版)[M]. 北京: 人民邮电出版社, 2020.
- Ben Lauwens, Allen B. Downey. Think Julia [M]. Sebastopol: O’Reilly, 2019.
- Jalem Raj Rohit. Julia Cookbook [M]. Birmingham: Packt Publishing, 2018.
- Zacharias Voulgaris. Julia数据科学应用 [M]. 陈光欣, 译. 北京: 人民邮电出版社, 2018.
- 朱红庆. Julia机器学习核心编程:人人可用的高性能科学计算[M]. 北京: 电子工业出版社, 2019.
- Norman Matloff. R语言编程艺术[M]. 陈堰平, 译. 北京: 机械工业出版社, 2013.
- Andy Nicholls, Richard Pugh, Aimee Gott. R语言入门经典[M]. 姜佑 等, 译. 北京: 人民邮电出版社, 2018.
- Robert I. Kabacoff. R语言实战(第2版)[M]. 王小宁 等, 译. 北京: 人民邮电出版社, 2016.
- Hadley Wickham. 高级R语言编程指南[M]. 潘文捷 等, 译. 北京: 机械工业出版社, 2020.
- Brett Lantz. 机器学习与R语言(第2版)[M]. 李洪成 等, 译. 北京: 机械工业出版社, 2017.
- 程乾, 刘永, 高博. R语言数据分析与可视化从入门到精通[M]. 北京: 北京大学出版社, 2020.
- 周伟明.程序员的十层楼(一、二、三)[J]. 程序员, 2009(6):134-136; 2009(7):118-120; 2009(8):134-136.
注:本文版权归作者个人所有,如需转载请联系作者,未经授权不得转载。