博客 阅读时间 3 分钟

Boost 与 C++ 标准:C++ 的未来

分享本文
Boost vs C++ Standards: The Future of C++

1998 年,一份关于建立 C++ 库仓库网站的提案由 Beman G. Dawes 发布。最初的愿景旨在实现两大目标:

  • 一个包含免费 C++ 类库仓库的全球性网站,将使 C++ 社区受益匪浅。尽管其他网站提供特定的库或库链接,但目前还没有一个知名的网站充当 C++ 库的通用仓库。愿景是这样的:一个让程序员能找到所需库、发布想分享的库的网站,并能充当一个汇聚点,鼓励创新性的 C++ 库开发。设想中还包含一个在线同行评审流程,以最少的官僚程序确保库的质量。
  • 次要目标包括鼓励有效的编程技术,并为 C++ 程序员提供一个参与更广阔社区的汇聚点。此外,这样的网站还可能通过帮助确立既有实践,促进 C++ 的标准化活动。

正如提案中所解释的:

A guiding principal is to 鼓励广泛参与和互动让人们参与进来——在新闻组、邮件列表中,作为同行评审者、库的贡献者和维护者,以及作为版主和网站管理员。当然,也作为库的使用者。

The idea is not to set up an organization which happens to have a website. Rather, 网站即组织. Like all good websites, and all good organizations, 它将随时间不断演进.

经过 20 年的活跃开发,Boost 如今已被公认为一个非常强大的 C++ 库集合。每个主要版本都会加入许多由社区贡献的库。Boost 的评审者拥有高超的 C++ 技能,他们的贡献帮助 Boost 多年来保持了高水准的质量。从一开始,Boost 的创建者就选择使用现代 C++ 技术。然而,它的准入门槛非常高:只有少数 C++ 开发者能够开发出符合 Boost 规范的新库。

2011 年标志着 C++ 的复兴;标准中加入了许多有趣的新特性,而其中一些设施此前已在 Boost 中存在,比如 Foreach 设施。

这里有一份来自 Stack Overflow 的很好的概览,列出了哪些 Boost 特性可以用新标准中的替代品替换。

但是,即使新的 C++ 标准提供了许多 Boost 中早已存在的特性,这些新能力真的会促使开发者从 Boost 迁移到新的 C++ 标准吗?

GitHub 也许是回答这个问题的一个有用来源。确实,GitHub 可以让我们洞察任何编程语言的开发者趋势,包括使用最广泛的库、语言特性、最佳实践等等。

在 GitHub 上,我们可以找到这样的议题(issue):

Boost → C++11 迁移(比特币项目)。

使用 C++11 设施清理代码和 Boost 依赖(performous 项目)。弃用 boost 并实现 C++11 支持(yaml-cpp 项目)。

下面是 yaml-cpp 项目仓库中关于这一决定的动机说明:

Requiring the adoption of the boost libraries so as to use yaml-cpp is problematic for many developers.

Given that the C++11 standard library now includes all the features yaml-cpp currently uses from boost, it would be good to deprecate the use of boost in favour of C++11.

从 Boost 迁移到 C++11/C++14/C++17 标准值得吗?

经过 20 年的活跃开发,Boost 提供了许多实用且经过充分测试的特性,而较新的标准仍未覆盖 Boost 提供的全部内容。这意味着,如果一个项目重度依赖 Boost,您可能无法移除这个依赖。然而,如果它只使用了少数流行特性(比如 Foreach),那么迁移到较新的标准并移除 Boost 依赖可能会相对简单。

分享本文