目录
视频
1. 书不怕厚,重点是内容
《白话C++ 》是一本面向编程初学者的书,它有一个目标:希望能帮助读者在学完之后,找一份C++的编程工作。
《白话C++ 》的厚度肉眼可见:整本书分为 “练功” 和 “练武”,前者 800多页,后者1300多页(因此又拆成两册,以保证装订质量)。
正如视频中南老师所说,C++ 入门教程很厚,很重要一个原因是: C++ 这门语言自身就“厚”。它和Python、Java、C 的英文标准规范(或语言说明)厚度对照,参看下表:
语言 | 发行 | 标准规范(英文) | 页码 |
---|---|---|---|
Python | 1991 | 语言参考(3.10)、库 | 200 |
C | 1972 | ISO/IEC 9899:2018 | 535 |
JAVA | 1991 | JAVA SE 19 PDF | 850 |
C++ | 1983 | 2020 草案 | 1834 |
C++ 语言从2011年新标后,采用“三年一升”的方式快速升级,因此截至今天(2023年),C++ 又有了2014、2017、2020、2023新标;其语言标准规范也越来越厚。再考虑,一门语言的标准规范仅用于告诉读者这门语言“是什么”(有什么语法规则)以及“有什么”(有什么功能),但正经的入门教程除此之外,还必须教会读者怎么用这门语言写对的代码。因此 C++ 入门教程很厚是再正常不过的现象。
薄的 C++ 入门书籍当然也有,比如南老师家里就有两本写给小学生学习 C++ 的书,每本厚度不超40页。如果不考虑入门的话,那么薄的 C++ 经典书籍也不少,我们在本课最后附录小节给出链接。
书不怕厚,关键是学完书以后,能得到什么成效?学习成效当然非常依赖读者自身的努力,但是如果一些非常必要的学习的内容,买的书却完全没给,读者自然无从努力。
《白话C++》讲的是哪几大块的内容呢?
2. C++知识版图四大块
视频里重点讲三大块内容:
- 语法、
- 标准库、
- 第三方库(也称扩展库)
这三大块在书中是“成建制”的出现;而第四块,南老师在视频中仅简单提到:“C++ 编程有什么好的思想、思路、习惯、风格、方法、模式等等,以及它们应该怎么养成?”。在《白话C++》,这块知识采用的是渗透式教学:没有专门的章节,也不泛泛而谈(不讲大道理),而是在有特定案例时,南老师就像高中时的班主任一样,突然从教室后门现身开始“说法”……在书中具体的展现形式,偶尔会使用正文,但多数使用《白话C++》的“轻松一刻”、“小提示”、“危险”甚或是在“课堂作业”中体现。
大家可以把“思想、思路、习惯……”这一块在书里的体现形式,理解为是军队里抓思想工作的“政委”的作用。
四大块知识版图在《白话 C++》中有哪些详细体现,我们在下一节课讲解,本课重点谈谈《白话C++》最具特点的第三方库知识。
3. 讲了哪些第三方库?
视频提到学习《白话C++》可以学到: “图形用户界面编程”、“数据库连接编程”、“小游戏编程”、“网络编程”等,它们都需要用到 C++ 的第三方库。《白话C++》教学用到的第三方库信息见下表:
库 | 说明 | 本书实例或练习 |
---|---|---|
Win32 | Windows原生图形界面开发 | ①Win32 API创建窗口、②Winndows屏幕保护程序 |
wxWidget | 轻量的跨平台GUI库,适合初学者理解复杂GUI | ①记事板 ②小画家 ③多人聊天室客户端 ④桌面玫瑰 ⑤本机图片并发搜索工具 ⑥俄罗斯方块 |
boost | C++ “准”标准库 | UUID、命令行参数、scoped_ptr/array、timer、lexical_cast…… |
json11 | WEB开发使用最广泛的前后端数据 | 见MySQL |
redis | WEB开发使用最广泛的缓存库 | 数据流动:从库到缓存 |
MySQL++ | C++(已加入C++11支持)风格的 MySQL数据库连接 | 可能比某些专讲C++数据库编程还齐全的数据库操作,结合reids、json,在“数据篇”讲了一些WEB后台编程实例:①随机图文展现 ②使用校验问验证 ③登录 |
OpenSSL | 全世界使用最广泛的网络安全基础库 | 主要结合下面的libcurl使用 |
libcurl | 著名的“多功能” C 语言网络客户端库 | ①FTP 客户端 ②C++封装libcurl ③网络爬图单线程版、④网络爬图并发版 |
asio | 有望进入标准的C++网络库 | ①echo网络服务 ②TCP代理服务 ③UDP ④结合future的异步编程 |
libSDL | 上手简易但功能强大的跨平台多媒台游戏开发库 | ①宝岛保卫战 ②宝宝识图 |
附录:推荐 C++ 书籍
初学
进阶
建议高频使用C++约两年后再购买。
- 《More Effective C++》、《Effective Modern C++》(作者:斯科特·迈耶)
- 《C++20高级编程》(作者:马克·格雷戈勒)
- 《C++20高级编程》(作者:罗能)
第三方库
- 《C++11/14高级编程 Boost程序库探秘》(作者:罗剑锋)
- 《Qt 6 C++开发指南》(作者:王维波)
相关知识
以下书的内容并不特定于C++语言。
- 《Redis入门指南》(作者:李子骅)
- 《MySQL 8从入门到精通》(作者:王英英)
免责声明
以上除《白话C++》以外,其他书的作者我并不认识。书只是纯推荐,不是广告(没有收入);大家在做实际选择时,建议从更多渠道、用更多方法提前了解书的内容,再作决定。