C++ ist eine Allzweck-Systemprogrammiersprache, die 1979 entwickelt wurde, also jetzt über vier Jahrzehnte alt ist. C++ verliert jedoch noch lange nicht an Bedeutung und rangiert bei diversen Beliebtheitsindikatoren für Programmiersprachen in der Spitzengruppe. Die Akzeptanz von C++ spiegelt sich auch in der breiten Unterstützung wider, die die Programmiersprache von Anbietern von IDEs, Editoren, Compilern, Testframeworks und anderen Tools genießt. Ein weiterer Vorteil von C++: Entwickler können auf eine Vielzahl hervorragender Bibliotheken zurückgreifen, die das Programmieren von C++-Anwendungen unterstützen. Wir haben die 12 besten C++-Bibliotheken zusammengestellt, auf die sich Softwareentwickler verlassen: Aktive Vorlagenbibliothek Die Active Template Library (ATL) von Microsoft ist ein Satz von C++-Klassen zum Erstellen von COM-Objekten (Common Object Model), die verwandte Funktionen wie Dual-Schnittstellen bereitstellen. Unterstützt Ü-Punkte oder ActiveX-Steuerelemente. ATL ist in der Visual Studio-IDE verfügbar und kann zum Erstellen von Singlethread-, partitionierten oder Freethread-Modellobjekten verwendet werden. Asio C++-Bibliothek Die Asio C++-Bibliothek wird für die Netzwerk- und Low-Level-E/A-Programmierung verwendet und bietet ein stabiles asynchrones Modell. Asio bietet grundlegende Bausteine ​​für Parallelität, C++-Netzwerke und andere Arten von E/A und wird in einer Vielzahl von Anwendungen eingesetzt – von Smartphone-Apps und Spielen bis hin zu hochgradig interaktiven Websites und Echtzeit-Handelssystemen. ASIO-Projekte umfassen die WebSocketPP-Bibliothek und den DDT3-Remote-Debugger für die Programmiersprache Lua. Asio ist als Open Source unter der Boost-Softwarelizenz verfügbar und wird unter Linux, Windows, macOS und FreeBSD unterstützt. Drücken Boost stellt portable Peer-to-Peer-C++-Quellbibliotheken bereit, die mit der Standard-C++-Bibliothek funktionieren. Die Boost-Bibliotheken sind für eine Vielzahl von Anwendungen konzipiert. In der Sammlung gibt es JSON-, Math-, Multi-Index-, Filesystem- und Geometry-Bibliotheken. Boost funktioniert mit den meisten modernen Betriebssystemen, einschließlich Linux, Unix und Windows. Linux- und Unix-Distributionen wie Debian, Fedora und NetBSD werden mit vorgefertigten Erweiterungspaketen geliefert. Asche Diese Open-Source-Bibliothek ist für kreatives Programmieren mit C++ konzipiert. Es ist nützlich für Audio-, Computergeometrie-, Grafik- und Videoanwendungen, unterstützt Windowing und plattformspezifische Ereignisbehandlung, E/A-Abstraktion und verfügt außerdem über eine integrierte API für XML- und JSON-Parsing. Die Bibliothek basiert auf idiomatischen C++11-Funktionen wie shared_ptr und enthält viele Beispiele. Cinder unterstützt MacOS, iOS, Linux, Windows und Windows UWP. Besitzen Eigen ist eine C++-Vorlagenbibliothek für lineare Algebra, einschließlich Matrizen, Vektoren, numerischen Lösern und verwandten Algorithmen. Alle Matrixgrößen werden unterstützt, von kleinen, festen Matrizen bis hin zu beliebig großen und dichten Matrizen. Um die Geschwindigkeit zu erhöhen, bietet Eigen Expression-Vorlagen an, die Transienten intelligent entfernen und eine „faule“ Auswertung ermöglichen. Eigen kann unter der Mozilla Public License 2 frei verwendet werden. Die Testsuite für Eigen wurde mit mehreren Compilern kombiniert, um eine optimale Zuverlässigkeit zu gewährleisten. FloatX FloatX ist eine reine Header-Bibliothek zum Emulieren von Gleitkommatypen mit niedriger Genauigkeit. Während FloatX nativ mit C++-Compilern kompatibel ist, kann es auch aus anderen Programmiersprachen wie Python oder Fortran aufgerufen werden. FloatX implementiert eine Obermenge von FlexFloat-Funktionen in C und enthält C++-Wrapper. Das Projekt ist aus der Open Transprecision Computing Initiative hervorgegangen und steht unter der Apache 2.0-Lizenz frei zur Verfügung. OpenCV Diese Bibliothek für maschinelles Sehen und maschinelles Lernen ist nativ in C++ geschrieben und steht auch unter der Apache 2.0-Lizenz zur Verfügung. OpenCV wurde entwickelt, um eine gemeinsame Infrastruktur für Computer-Vision-Anwendungen bereitzustellen und deren Einsatz in kommerziellen Produkten zu beschleunigen. Mit mehr als 2.500 optimierten Algorithmen für Gesichts- und Objekterkennung, Objektklassifizierung, 3D-Modellextraktion, Bildsuche und mehr hat OpenCV eine große Community (ca. 47.000 Mitglieder) gebildet. Die Bibliothek bietet C++-, Java-, Python- und Matlab-Schnittstellen und unterstützt Windows, Linux, Android und MacOS. CUDA- und OpenCL-Schnittstellen sind in der Entwicklung. Poco C++-Bibliotheken Die plattformübergreifenden Bibliotheken für mobile Komponenten wurden entwickelt, um die Verwendung von C++ zum Programmieren von Internet- und Netzwerkanwendungen zu vereinfachen, die von Desktops und Servern bis hin zu Smartphones und IoT-Geräten ausgeführt werden. Bibliotheken können auch verwendet werden, um Microservices mit REST-APIs zu erstellen – beispielsweise für maschinelles Lernen oder Analysezwecke. Die Poco-Bibliotheken ähneln der Java Class Library, Microsofts .NET Framework oder Apples Cocoa. Entwickler können die Poco-Bibliotheken verwenden, um Anwendungsserver in C++ zu erstellen, die mit SQL-, Redis- oder MongoDB-Datenbanken kommunizieren, oder um Software für IoT-Geräte zu entwickeln, die mit Cloud-Backends kommunizieren. Zu den Bibliotheksfunktionen gehören ein Caching-Framework, die Bearbeitung von HTML-Formularen, ein FTP-Client für die Dateiübertragung sowie ein HTTP-Server und -Client. Poco-Bibliotheken sind kostenlos unter der Boost-Softwarelizenz erhältlich. Schnell Velox ist eine vektorbasierte, eingebaute Laufzeitbibliothek für OLAP-Systeme. Die Bibliothek dient der Optimierung von Datenverarbeitungssystemen und Suchmaschinen. Das Projekt startete 2020 als internes Facebook-Entwicklungsprojekt und wurde anschließend als Open-Source-Projekt veröffentlicht. Zu den Komponenten gehören ein High-Level-Typisierungssystem, eine Spaltenspeicher-Engine, Funktionspakete und Netzwerkserialisierer. Windows-Vorlagenbibliothek Die ursprünglich von Microsoft stammende Windows Template Library (WTL) ist seit 2004 eine Open-Source-Bibliothek zum Erstellen schlanker Windows-Anwendungen und Benutzeroberflächenkomponenten. Als Alternative zum Microsoft Foundation Classes Toolkit erweitert WTL ATL und stellt eine Reihe von Klassen für Steuerelemente, Dialogfelder, Feldfenster und GDI-Objekte bereit. Gew Mit dieser modernen C++-Web-GUI-Bibliothek können Softwareentwickler interaktive Weboberflächen mit grafischen Komponenten erstellen, ohne JavaScript schreiben zu müssen. Als serverseitige Lösung übernimmt WT die Anforderungsbearbeitung und das Seitenrendering, bietet integrierte Sicherheitsfunktionen, PDF-Rendering, 2D- und 3D-Malsystem, Object-Relation-Mapping-Bibliothek, Graphbibliothek und Authentifizierungs-Framework. Die Kernbibliothek ist Open Source und bietet ein hybrides One-Page-Framework, das unter Linux, Unix oder Windows bereitgestellt werden kann. Wt wurde von Emweb entwickelt und ist mit HTML5- und HTML4-Browsern sowie grundlegenden HTML-Benutzerprogrammen kompatibel. Außerdem kann Wt in JavaScript-Bibliotheken von Drittanbietern integriert werden. Mit WT wird eine Anwendung als eine Hierarchie von Widgets definiert, die von generischen Widgets wie Schaltflächen bis hin zu spezialisierteren Widgets wie einem ganzen Blog-Widget reichen. Der Widget-Baum wird als HTML/JavaScript für den Browser gerendert. Wt ist sowohl in Open-Source- als auch in kommerziellen Versionen verfügbar. Yocto/GL Yocto/GL ist eine Sammlung kleiner C++17-Bibliotheken zum Erstellen von physikbasierten Grafikalgorithmen. Es ist in einem datenorientierten Stil geschrieben, um die Entwicklung zu vereinfachen, und ist in kleine Bibliotheken aufgeteilt, um die Navigation im Code zu vereinfachen. Daten werden in einfachen Strukturen gespeichert und mit freien Funktionen oder direkt verarbeitet. Yocto/GL enthält den PCG-Zufallszahlengeneratorcode. Yocto/GL-Entwickler bevorzugen einen funktionalen Ansatz gegenüber einem objektorientierten Ansatz und freie Funktionen gegenüber Klassenmethoden. Funktionen und Daten werden in gleichgeordneten Namensräumen innerhalb des Yocto-Namensraums definiert. Yocto/GL ist unter der MIT-Lizenz verfügbar – C++17-Compiler erforderlich. (UKW) Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation InfoWorld.