1. 必读:你可以先不安装……
《白话C++》将几个经典的 C++ 开源库的安装课程,安排在“练功篇”,但实际的学习与使用则是在“练武篇”。这样安排有四点原因:
- 因为下篇的篇幅明显多于上篇;
- 希望让大家提前感受 C++ 程序员比较“痛苦”,但很长一段时间内,只要你想当C++程序员,就不得不学习的技能:自行下载、编译、安装各种各样——但通常都是全世界范围内“牛X哄哄”的第三库;
- 通过提前学习数个经典的 C++ 第三方库,有利于读者举一反三,当需要自行安装书中没有提到的库时,在本书学到的知识,可作为参考;
- 提前让大家体验C++加上第三方库之后,如虎添翼般强大的感受。
但是,确实有不少同学在学习第2章《准备篇》时遇上较大困难。这种情况下,我建议:在安装好第2章开始提到的集成开发环境Code::Blocks和编译环境 MinGW-w64后,就直接跳到第3章《感受(一)》,开始学习;第3章之后,再跳过第4章《感受(二)》开始学习第5章《基础》。按这种方法,“练功”的后续学习都不会受到影响。
之所以建议大家可以跳过第2章的部分和整个第4章,更积极的原因在于以下两点:(1) 我们可以等“包管理器”,(2) 我们可以等“第2学堂”(也就是本站)的“三个依照”。
1.1 等“包管理器”
你可以先把宝贵的时间拿去学习暂时不需要第三方库的 C++ 内容(也就是上面提到的“跳过去”后的内容),然后等学完上册,估计有相对成熟的C++的“包管理器”可以用了。
所谓的“包管理器”是用来管理书里书外我们要学习、使用的各种第三方库。包管器会将这些库简单的打包放在网上;然后在我们编程时需要用到某个包时,只需在某个文件里声明一下,就会有工具自动将它们下载并安装到你的电脑里。
1.2 等第2学堂的“三个依照”
不管有没有包管理器可用,书中提到的第三方库,第2学堂网站将提供三个“依照”的保证:
- 网站将依照书中用到的版本,一步一步录成视频课程(也就是你现在正在阅读的这个课程)供大家学习;
- 网站还将依照这些库的较新版本,以及新版本可用的更方便的安装方法(前面提的包管理器只是方法之一),出新的视频课程;
- 注意,第2点所说的课程,并非只讲如何下载安装,而是将依照练武篇的课程,讲解这些最新的库如何使用。
也就是说,暂时不安装wxWidget、boost、mysql、mysql++ 等第三方库,并不影响学习上册的 C++ 知识,并且;后面我们会有围绕它们的更方便、并且是更新版本的学习课程。
不过,如果你已经在学习《白话C++ 之练武》;或者,你仍然希望提前感受 C++ 程序员安装各类第三方库的感觉有,那我们当然还是非常鼓励和欢迎;这时就可以参考当前这个课程了。
2. 《白话C++》挑的库,是鲜活的
当前,开源软件真的是发展得越来越好了;而《白话C++》和其它经典 C++ 入门书籍,比如《C++ Primer》或 C++ 之父所写的《C++ 程序设计语言》的最大不同处,就在于《白话C++》既“练功”又“练武”,即:既学习C++ 语法、C++ 自带的标准库,也学习丰富的第三方库,我们称之为C++ 的“十八般兵器”,它们都来自作者的精心挑选。
怎么证明是精心挑选呢?有一点是可以马上验证的:从2019年出书(练功篇)到现在(2023年),4年过去了,《白话C++》挑选给读者的库,都是鲜活的。它们一直在更新。下面是各个库在出时书时使用的版本和当前最新版本的对比表。
库或软件 | 书中版本 | 当前版本 | 最后更新时间 | 备注 |
---|---|---|---|---|
Code::Blocks | 16.01 | 20.03 | 2020/03/17 | IDE,必装 |
MinGW-w54 | 6.2.0 | 10.0.0 | 2022/04/04 | 编译器,必装 |
wxWidgets | 2.8.12 | 3.2.2.1 | 2023/02/13 | 轻量跨平台GUI库 |
boost | 1.57.0 | 1.81.0 | 2022/12/14 | C++准"标准库" |
mysql-server | 5.6.22 | 8.0.32 | 2023/01/17 | 全球应用最方的数据库 |
MySQL++ | 3.2.1 | 3.3.0 | 2021/04/28 | MySQL的C++ 风格客户端库 |
3. 安装“活”的库,遇上困难怎么办?
学习一个“活”的库,当然是好事,但活的库就会不断更新换代,甚至官网还会调整一些链接的地址(MySQL 的官方 Oracle,说的就是你),但书是印在纸上的,没法子跟着改变啊;这样必然会给读者带来一些困难:书里讲的下载、安装,甚至是编译等步骤,往往会和新版本的库所使用的方法存在差异,甚至下载与安装的某些操作步骤,也会因为网站内容变化而发生变化;或者因为网站提供的在线安装工具升级而发生变化。
遇到这种情况,身为作者我感到抱歉,但在实操层面,除非我把库的安装内容全部从书中删除,从而撇清责任,否则,并没有从根子上解决的方法。现在能做到的最好方法,就是提供视频课程(也就是本课程)——但是视频也会过期;因此同学们也不要着迷于寻找什么“一劳永逸”的想法,下面的建议倒是长期有效的,请大家阅读:
- 「重要」尽量就使用书中提到的版本来安装下载指定的库;
- 「重要」特别的,凡涉及到32位与64位版本之分,请认真按照书中提到的版本安装;
- 「重要」在1和2都满足的情况下,仍然需认真阅读书本内容,避免粗心带来各种奇怪问题;
- 既要阅读书装过程教学讲的操作步骤,更要理解操作之后的原由(书里大多数会有解释);因此要学会举一反三,遇上官方页面或安装工具发生变动时,才能找到变通的方法;
- 必要时,参考库的出品方提供的安装文档;
- 在网上搜索更多的相关资料,选择其中在时间上比较新的资料参考学习;
- 配合本课程的视频进行安装;
- 在本课程中继续提问。
4. 最后强调
事实上,这些库的多数教程,特别是成书的教程,都会预设读者完全有能力通过通过阅读库的官方文档或网上寻找相关教程,以完成各个库的安装;而正如本文前面所说的,想要成为一名合格的 C++ 程序员,就不得不面对第三方库的下载、编译、安装、配置等问题;并且往往不同库之间,或者相同库但是在不同操作系统之上,或者同一个库但不同版本之间,编译或安装的方法都有可能存在差异。未来我们使用第三方 C++ 包管理器可以减少一些问题,但通常第三方包管理器也无法包含全部的第三方C++库。