大家好,我是吴咏炜,先祝大家新年快乐!也很开心在 2025 年伊始跟大家分享一下:我的新书《C++ 实战:核心技术与最佳实践》已经在各大网店全面上架!
因为 12 月中旬预售过一周签名版,想必有一部分朋友已经拿到了签名版——签名版比普通版的发货早了一点点,在此,感谢大家对这本书的喜爱。鉴于有更多的朋友并不认识我,也不认识这本书,因此,在新书上架之际,我重新来介绍一下这本书,也介绍一下我自己。
1. 为何写这本书
从
Bjarne Stroustrup
博士把他的“带类的
C
”重命名为“
C++
”开始算,
C++
已经有了超过
40
年的历史。这些年来,虽然也有不少起起落落,但
C++
一直是一种非常重要的编程语言,是计算机世界里很多基础设施背后的基石。根据
TIOBE
网站,
C++
自
1987
年来的最差排名是第
5
名,并多次占据榜眼和探花之位。在多次起起伏伏之后,
C++
在
2023
年又回升到了第
3
名的位置,超过了
Java
,并赢得
2022
年“年度编程语言”(
Programming Language of the Year
)的称号,展示了它长盛不衰的生命力
。
已有好些年,我每年在
C++
大会上进行演讲,介绍
C++
方面的知识。在
2019
年,我开始在“极客时间”上开设专栏
,专门介绍现代
C++
的一些知识点。在随后的几年里,我也做了不少
C++
方面的培训和技术咨询工作。于是,在写了几十年的
C++
代码之后,我终于觉得,可以把自己对
C++
的认知写成书,让后来者可以少走一些弯路。
这是本书的书封
封面上有个狮子,你可以称它“狮子书”
这是参考大部分读者的喜好最后选定的
2. 这本书有何特色,适合哪些朋友阅读
当然,
C++
的书籍已经有很多了。本书的特点是什么?或者说,什么样的
C++
学习者应该学习本书?
简单来说,本书偏向实战,从代码和使用场景的角度来讲解
C++
特性,而非试图去对所有
C++
的特性进行系统描述。
我认为编程语言的学习方式应该更接近外语,而不是数学。
我不会像
cppreference.com
一样描述所有的语法细节,而是根据我在软件项目获得的经验,来阐释某种特性存在的原因和适用的场景。当读者了解了我讲解的概念、方法之后,要进一步了解语法上的细节,可自行查阅网站—
—全面、详尽不是我的意图。
C++
已经大到不需要学习“完整”的语言,正如我们学英语不需要把整本词典背下来一样。因此,本书是从一个实践者的角度出发,挑出了笔者认为最值得学习的基本方面:
-
-
对象生存期和
RAII
(
C++
最重要的特性)
-
移动语义(现代
C++
最重要的新特性,全面影响代码组织)
-
模板基础(现代
C++
里到处是模板,即使你不会写,也得会用)
-
标准模板库(
STL
)和相关知识(效率利器)
-
视图(略新,也有一定使用风险,但至少比指针要好用)
-
智能指针(全面替代有所有权的裸指针和手工
new
/
delete
)
-
现代
C++
的其他一些重要改进(初学者友好的特性和重要的新库)
-
不同的错误处理方式(契约、异常的概念,及不使用异常的一些方法)
-
如何传递对象(引用传参,还是值传参?)
-
并发编程(应对多核世界的挑战)
-
异步编程(一种不同的思维方式,但可以更好地利用资源)
-
C++
程序员应当掌握的一些基础工具(最后稍稍讨论一下工程问题)
因此,本书的目标受众是有一定编程经验的程序员。我期望你有基本的 C 和 C++ 知识。我也期望你在使用 C++ 时遇到过问题、踩过坑,并希望本书能提供给你一些解决方案。
大部分的读者应该在通过其他渠道学过、用过
C++
之后再来阅读本书;而如果你有扎实的
C
编程基础,但从来没用过
C++
,也可以尝试一下直接上手本书。在
第
1
章
,我描述了阅读本书需要的基础知识,也可以作为一个快速的知识复习吧。
本书内容按循序渐进、由浅入深的方式组织,因此推荐的阅读方式是从头到尾、按顺序阅读。在初次阅读时,你可以考虑跳过所有的脚注、插文、交叉引用,以及节标题尾部带上标星号(
*
)表示难度超出本章其他部分的内容。对于
C++
老手,也许你会觉得需要跳过一些已经了解的章节,但此时你也有可能会漏掉一些有用的说明信息。因此,我建议对已经了解的内容也快速浏览一下。需要快速查找信息时,本书尾部的索引应该可以给你帮助。
本书编辑老师将这本书的特色总结为如下几条,供你参考:
不止于这本书
本书是我计划写作的
C++
系列图书的第一本。这本书是关于“使用
C++
”的,是基础,适合任何使用
C++
进行开发的程序员。这本书的目的是告诉读者使用现代
C++
的“正确”方式—
—换句话说,如何用好标准
C++
提供的“制式武器”,高效地进行开发并避免一些常见的陷阱。
至少我还会写作第二本,主题是“扩展
C++
”,算是高级课题,适合于使用
C++
搭建项目的框架和公用工具的程序员和架构师。在这一本书中,我会讲解
C++
的高级特性,通过讲解例子介绍
C++
标准库和类似于
C++
标准库的工具该如何搭建—
—换句话说,我们要在用好“制式武器”的基础之上,研究它们是如何打造的,并进一步打造适合特定项目的称手兵刃。
3. 关于我
提供一个比较官方的介绍吧。
吴咏炜
国内知名 C++ 专家、Boolan 首席技术咨询师,曾任英特尔亚太研发中心资深系统架构师,毕业于复旦大学物理系,拥有 30 年 C/C++ 系统级软件开发和架构经验。目前从事 C++ 相关的技术咨询和培训工作,为华为、大疆等多家公司提供过服务。工作涉及 C/C++ 语言、软件架构、安全软件开发、性能优化、代码重用、开源软件等多方面。
开源软件作品包括:mozi、nvwa、libunibreak 等。
专栏或者翻译作品包括:极客时间专栏《现代 C++ 编程实战》(累计学习人数超过 3.5 万人),图书翻译作品《编程大师访谈录》《C++ Core Guidelines 解析》,论文翻译作品《在纷繁多变的世界里茁壮成长:C++ 2006—2020》,等等。
4. 致谢
本书的初稿经过了一些朋友和 C++ 爱好者的审读,他们是:倪文卿(IceBear)、罗能(netcan)、冯畅、何荣华、李冠锋、琳哒 6、张德龙、杨凡、吴长盛、杨文波和杨红尘。我收到了各位宝贵的反馈意见,并修正了书中很多技术和文字问题。在此,谨向各位表示深深的谢意。特别鸣谢倪文卿,他给出了最详尽的反馈意见,还花了不少时间跟我讨论。
同时,感谢以下朋友给出的关于本书的专家书评。
这本书并没有长篇大论地罗列所有语言特性,而是在有限的篇幅里简明扼要地抓住现代
C++
的“主线”,选择那些“重要又常用”的语言特性,深入这些特性的“来龙去脉”,确保“好钢用在刀刃上”。我向每一位渴望掌握现代
C++
的读者推荐本书。
——
李建忠
,
C++
及系统软件技术大会主席
ISO
国际
C++
标准委员会委员
作为一名日常工作使用
C++
近六年的开发者,书中介绍的许多方法让我深有共鸣。本书的知识点兼具广度和深度,作者从实际应用场景出发,提供了众多最佳实践。它非常适合刚入门
C++
以及希望进一步提升
C++
技能的开发者。
——
罗能
,华为高级工程师,《
C++20
高级编程》作者