1.7. 能力越大,责任越大

如果我希望读者从本章中只带走一个核心观点,那就是:C++ 是一门极其强大的语言,而这种强大也带来了相应的责任 —— 使用适当级别的抽象来编写安全、高效、可维护的代码。

我坚信,今天有一支 C++ 开发团队要启动一个旨在解决特定业务问题的新项目,完全可以只使用现代 C++(即最新标准)和标准库中的功能,就能写出既安全又高性能的代码,而不必像过去那样过多担心内存管理的问题。事实上,他们的代码风格可能与使用 Java 或 C# 的同行非常相似,但通常还能获得更优的运行性能。

然而,即便是这样一支现代化的团队,也可能会在某些关键时刻面临一个抉择:我们是继续使用 STL 提供的标准工具来实现一个较为稳妥但性能略逊的方案,还是深入到底层机制,比如指针运算、移动语义或自定义内存管理,以换取更高的效率?这时,C++ 所赋予的能力就需要开发者具备同等水平的责任感、细致入微的关怀以及对语言本质的深刻理解。

Note

在我写下这些文字的 2024 年 7 月,世界仍在经历 CrowdStrike 引发的大规模系统故障余波(官方披露详见:https://www.scmagazine.com/news/crowdstrike-discloses-new-technicaldetails-behind-outage),事件的具体原因尚未完全明朗。但目前看来,一个 C++ 程序中的内存访问错误可能是引发全球范围内 Windows 系统崩溃的根源之一 —— 影响范围包括航班停飞、银行汇款中断,甚至紧急服务被迫关闭等严重后果。

当然,这段代码本不应该进入生产环境。但这无疑是一记警钟,提醒我们当今社会对软件系统的高度依赖,以及滥用 C++ 这类底层语言能力可能带来的深远影响。