欣闻吴咏炜老师的新书即将出版。自 C++11 以来,C++ 通过引入诸多抽象机制不断演进而步入“现代”之列。秉承“零开销抽象”的原则,在追求“极致性能”和“使用抽象管理复杂性”的双重目标下,同时支持面向过程、面向对象、泛型编程、以及函数式编程等多种编程范式,现代 C++ 构建了全新而又博大的语言系统。
如何学习和掌握现代 C++ 这样一门博大精深的编程语言,是非常有挑战的。如果从语言特性功能集合入手,很容易陷入C++ 纷繁芜杂的特性字典中。我一直认为,要真正理解和掌握现代 C++,不能仅仅停留在“语言特性”的层面,更要深入到“为何设计”与“如何高效使用”的层面。C++ 语言的每一个特性都是为解决某个具体问题和应对特定场景而发展演进的,如果不理解其后的背景和设计理念,不理解实战中的应用场景,很容易导致误用或滥用。这本书从“实战”场景出发,不仅讲授基础原理,同时展示在实战场景中的核心原则和最佳实践。这种“实战派”风格的 C++ 教本,是技术修炼过程中不可多得的。
我经常讲,一本书选择“讲什么和不讲什么”很重要,也是作者的功夫所在。这本书并不是网罗所有 C++ 语言特性的“鸿篇巨制”,而是在有限的篇幅里简明扼要地抓住现代 C++ 的“主线”,选择那些“重要又常用”的语言特性,深入这些特性的“来龙去脉”,确保“好钢用在刀刃上”。同时,语言特性讲解的次序和脉络也很重要。本书从 C++ 最核心的基础机制开始讲起,包括:对象生存期和 RAII、值类别和移动语义、模板等。了解现代 C++ 的朋友都知道,这些都是现代 C++ 的“基石”。从这里入手,才能循序渐进、渐入佳境。
选择一本图书,就是选择一位老师,因此,图书的作者非常重要。我和本书作者吴咏炜相识许久,也一起合作多年。吴老师既是 C++ 社区备受赞叹的高手,也是在合作伙伴中广受尊重的顾问,还是全球 C++ 及系统软件技术大会(CPP-Summit)常年的专家讲师和专题出品人。他对 C++ 孜孜以求、精益求精的态度一直为众多同好所称道。我很高兴见证吴老师将他多年在 C++ 领域的宝贵积累,整理成书。
阅读这本书,恰似跟高手切磋、向良师问道,我相信大家会有“如沐春风”之感。我向每一位渴望掌握现代C++的读者推荐本书。
李建忠
全球 C++ 及系统软件技术大会主席
ISO 国际 C++ 标准委员会委员