序
PREFACE
我跟本书的作者罗能认识已经有一年多了。初次相识是在我的一次关于嵌入式系统的C++重构演讲之后,他和其他一些与会者加了我的联系方式。不过跟大部分人不同,我们之间一直在“联系”,而且是很频繁的双向联系。原因无他,我们都是真正的C++和编程爱好者。他会把他的一些文章和代码发给我看,而我在写了一些有意思的代码和文章后,也会发给他交流。虽然岁数比他大,但我在他面前并没有多少“倚老卖老”的资格,反而是有点身为前浪的压力。事实上,我有些实际的工作项目和演讲,已经借鉴了他的想法和代码。
有没有注意到我说的是“C++和编程爱好者”?罗能并不只会C++,他对Rust和函数式编程语言(多半还有其他我不知道的语言)都有所涉猎。显然,C++仍是他最擅长的语言。所以,这本以C++为主题的书,也就成了他的第一本关于编程的书籍。
C++20是C++在C++11之后最大的一次语言变革,其中引入了大量具有革命性的新特性。本书从一个独特的视角,讲解了C++20最重要的四大特性。虽然新特性不止这四种,但编程并不是只讲特性。本书的独特着眼点在于介绍了外界讨论较少的一些高级编程技巧,尤其是模板元编程方面。这比起干巴巴地讨论语言特性要有用得多。毕竟,参考资料我们从cppreference.com之类的网站上自己就能找到。
高手的心得并不常有。因此,本书的内容编排也不是基于语言特性,而更多是基于讲解高级编程的逻辑顺序。在讲解了所有这些高级编程的基本概念之后(包括C++20的新特性),通过一章综合运用,把知识点串到一起,展示了非常有意思的实际项目应用。学语言的关键(不管是编程语言,还是平时交流的语言)在于应用,因此这样的讲解是能够真正展现现代C++威力的。基于对高级编程及其应用的深入理解,作者在讲解相关的C++特性时,可谓得心应手、游刃有余。
限于时间,我虽然没能深入其中所有的细节,但也已经从中感受到了作者对C++和编程的许多独特见解。不夸张地说,我在阅读中也学到了很多新东西。因此,我相信这本书对于C++相关的编程爱好者一定是有所裨益的——即使对编程老手都是如此。
吴咏炜 Boolan博览首席技术咨询师