Blog 3 Min. Lesezeit

Boost vs. C++-Standards: Die Zukunft von C++

Diesen Artikel teilen
Boost vs C++ Standards: The Future of C++

1998 wurde von Beman G. Dawes ein proposal for  a C++ Library Repository Web Site was posted by Beman G. Dawes. The original vision aimed to achieve two major goals:

  • Eine weltweit zugängliche Website mit einem Repository kostenloser C++-Klassenbibliotheken wäre für die C++-Community von großem Nutzen. Zwar bieten andere Websites bestimmte Bibliotheken oder Links zu Bibliotheken an, doch damals gab es keine bekannte Website, die als allgemeines Repository für C++-Bibliotheken diente. Die Vision: eine Website, auf der Programmierer benötigte Bibliotheken finden, eigene Bibliotheken zum Teilen veröffentlichen und die zugleich als zentraler Ort zur Förderung innovativer C++-Bibliotheksentwicklung dienen kann. Ein Online-Peer-Review-Verfahren sollte die Qualität der Bibliotheken mit möglichst wenig Bürokratie sicherstellen.
  • Zu den weiteren Zielen gehörten die Förderung effektiver Programmiertechniken und die Schaffung eines zentralen Anlaufpunkts, über den C++-Programmierer an einer größeren Community teilnehmen können. Darüber hinaus könnte eine solche Website die Standardisierung von C++ fördern, indem sie dabei hilft, etablierte Praktiken sichtbar zu machen.

Wie im Vorschlag erläutert:

A guiding principal is to breite Beteiligung und Interaktion fördernMenschen sollen sich beteiligen – in Newsgroups und Mailinglisten, als Peer Reviewer, Mitwirkende und Maintainer von Bibliotheken sowie als Moderatoren und Webmaster. Und natürlich als Nutzer der Bibliotheken.

The idea is not to set up an organization which happens to have a website. Rather, die Website ist die Organisation. Like all good websites, and all good organizations, sie wird sich im Laufe der Zeit weiterentwickeln.

Nach 20 Jahren aktiver Entwicklung gilt Boost heute als äußerst leistungsfähige Sammlung von C++-Bibliotheken. Mit jeder Hauptversion kamen zahlreiche von der Community beigesteuerte Bibliotheken hinzu. Die Boost-Reviewer verfügen über fortgeschrittene C++-Kenntnisse, und ihre Beiträge haben über die Jahre zu einem hohen Qualitätsniveau beigetragen. Von Anfang an setzten die Entwickler von Boost auf moderne C++-Techniken. Die Einstiegshürde ist jedoch sehr hoch: Nur wenige C++-Entwickler sind in der Lage, neue Bibliotheken zu entwickeln, die den Boost-Richtlinien entsprechen.

2011 markierte eine Renaissance für C++: Der Standard erhielt interessante neue Funktionen, von denen einige zuvor bereits in Boost existierten, beispielsweise die Foreach-Funktionalität.

Hier finden Sie eine gute Übersicht auf Stack Overflow darüber, welche Boost-Funktionen durch Alternativen aus den neueren Standards ersetzt werden können.

Doch selbst wenn die neuen C++-Standards viele Funktionen bereitstellen, die bereits in Boost existieren: Bewegen diese neuen Möglichkeiten Entwickler tatsächlich dazu, von Boost auf die neuen C++-Standards umzusteigen?

GitHub kann eine hilfreiche Quelle sein, um diese Frage zu beantworten. Tatsächlich liefert GitHub Einblicke in Entwicklertrends für praktisch jede Programmiersprache – darunter häufig verwendete Bibliotheken, Sprachfeatures, Best Practices und vieles mehr.

Auf GitHub finden sich beispielsweise Issues wie diese:

Migration von Boost → C++11 für das Bitcoin-Projekt.

C++11-Funktionen nutzen, um Code und Boost-Abhängigkeiten zu bereinigen für das Performous-Projekt. Boost als veraltet markieren und C++11-Unterstützung implementieren für das yaml-cpp-Projekt.

Hier ist die Begründung für diese Entscheidung aus dem Repository des yaml-cpp-Projekts:

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.

Lohnt sich die Migration von Boost auf die Standards C++11/C++14/C++17?

Nach 20 Jahren aktiver Entwicklung bietet Boost zahlreiche nützliche und umfassend erprobte Funktionen, und auch die neueren Standards decken noch immer nicht alles ab, was Boost bereitstellt. Wenn ein Projekt stark von Boost abhängt, lässt sich diese Abhängigkeit daher möglicherweise nicht vollständig entfernen. Nutzt es dagegen nur einige verbreitete Funktionen wie Foreach, kann die Migration auf neuere Standards und das Entfernen der Boost-Abhängigkeit vergleichsweise unkompliziert sein.

Diesen Artikel teilen