Softwareinfrastruktur Top 12 Bibliotheken

Diese 12 C++-Bibliotheken erleichtern Softwareentwicklern das Leben. Foto: Roman Samborskyi – Shutterstock.com

C++ ist eine allgemeine Systemprogrammiersprache, die 1979 entwickelt wurde und somit mehr als vier Jahrzehnte alt ist. C++ verliert jedoch noch lange nicht an Bedeutung und belegt in mehreren Beliebtheitsindizes für Programmiersprachen die erste Gruppe.

Die Akzeptanz von C++ spiegelt sich auch in der breiten Unterstützung der Programmiersprache durch Anbieter von IDEs, Editoren, Compilern, Testframeworks und anderen Tools wider. 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 wichtigsten C++-Bibliotheken zusammengestellt, denen Softwareentwickler vertrauen:

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 z. B. duale Schnittstellen bereitstellen. ÜPunktverbindungsunterstützung oder ActiveX-Steuerelemente. ATL ist in der Visual Studio-IDE verfügbar und kann zum Erstellen von Singlethread-, Apartmentmodell- oder Freethread-Modellobjekten verwendet werden.

Asio C++-Bibliothek

Die Asio C++-Bibliothek wird für die Low-Level-I/O- und Netzwerkprogrammierung verwendet und bietet ein konsistentes asynchrones Modell. Asio bietet Bausteine ​​für Nebenläufigkeit, C++-Netzwerke und andere I/O-Typen und wird in einer Vielzahl von Anwendungen verwendet, von Smartphone-Apps und -Spielen bis hin zu hochgradig interaktiven Websites und Echtzeit-Transaktionssystemen.

Zu den ASIO-Projekten gehören die WebSocketPP-Bibliothek und der DDT3-Remote-Debugger für die Programmiersprache Lua. Asio ist als Open Source unter der Boost-Softwarelizenz verfügbar und mit Linux, Windows, macOS und FreeBSD kompatibel.

Stimulus

Boost bietet portable, peer-reviewte C++-Quellbibliotheken, die mit der C++-Standardbibliothek funktionieren. Die Boost-Bibliotheken sind für eine Vielzahl von Anwendungen konzipiert. Die Sammlung enthält JSON-, Mathematik-, Multi-Index-, Dateisystem- und Geometriebibliotheken. Boost funktioniert mit den meisten modernen Betriebssystemen, einschließlich Linux, Unix und Windows. Linux- und Unix-Distributionen wie Debian, Fedora und NetBSD enthalten vorgefertigte Erweiterungspakete.

Asche

Diese Open-Source-Bibliothek wurde für kreatives Programmieren mit C++ entwickelt. Es ist nützlich für Audio-, Computergeometrie-, Grafik- und Videoanwendungen, unterstützt plattformspezifische Fenster- und Ereignisbehandlung, E/A-Abstraktion und enthält auch eine integrierte API für XML- und JSON-Parsing.

Die Bibliothek basiert auf idiomatischen C++11-Funktionen wie shared_ptr und enthält zahlreiche 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 Array-Größen werden unterstützt, von kleinen und festen Arrays bis hin zu beliebig großen und dichten Arrays. Um die Geschwindigkeit zu erhöhen, bietet Eigen Ausdrucksvorlagen, die auf intelligente Weise temporäre Elemente entfernen und eine “faule Bewertung” ermöglichen.

Eigen kann unter der Mozilla Public License 2 frei verwendet werden. Die Testsuite für Eigen wurde mit vielen Compilern kombiniert, um eine optimale Zuverlässigkeit zu gewährleisten.

FloatX

FloatX ist eine reine Header-Bibliothek zum Emulieren von Gleitkommatypen mit niedriger Genauigkeit. Obwohl FloatX nativ von C++-Compilern unterstützt wird, kann es auch aus anderen Programmiersprachen wie Python oder Fortran aufgerufen werden.

FloatX implementiert eine Obermenge der FlexFloat-Funktionalität 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 Algorithmen, die für Gesichts- und Objekterkennung, Objektklassifizierung, 3D-Modellextraktion, Bildsuche und mehr optimiert sind, hat OpenCV eine große Community aufgebaut (ca. 47.000 Mitglieder). Die Bibliothek bietet C++-, Java-, Python- und Matlab-Schnittstellen und ist mit Windows, Linux, Android und MacOS kompatibel. CUDA- und OpenCL-Schnittstellen sind in der Entwicklung.

Poco C++-Bibliotheken

Die plattformübergreifenden Portable Components-Bibliotheken 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. Die Bibliotheken können auch verwendet werden, um Microservices mit REST-APIs zu erstellen, beispielsweise für Analyse- oder Machine-Learning-Zwecke. Die Poco-Bibliotheken ähneln im Konzept der Java-Klassenbibliothek, 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, HTML-Formularverarbeitung, ein FTP-Client zum Übertragen von Dateien sowie ein HTTP-Server und -Client. Die Poco-Bibliotheken sind kostenlos unter der Boost-Softwarelizenz verfügbar.

schnell

Velox ist eine vektorisierte, integrierbare Laufzeitbibliothek für OLAP-Systeme. Die Bibliothek soll Datenverarbeitungssysteme und Abfragemaschinen optimieren. Das Projekt wurde 2020 als internes Entwicklungsprojekt bei Facebook gestartet und später als Open-Source-Projekt veröffentlicht.

Zu den Komponenten gehören ein High-Level-Schreibsystem, 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 leichter Windows-Anwendungen und UI-Komponenten. Als Alternative zum Microsoft Foundation Classes Toolkit erweitert WTL ATL und stellt eine Reihe von Klassen für Steuerelemente, Dialogfelder, Rahmenfenster und GDI-Objekte bereit.

Gewicht

Mit dieser modernen C++-Web-GUI-Bibliothek können Softwareentwickler interaktive Web-Benutzeroberflächen mit Widgets erstellen, ohne JavaScript schreiben zu müssen. Als serverseitige Lösung übernimmt WT die Bearbeitung von Anfragen und das Seiten-Rendering, bietet integrierte Sicherheitsfunktionen, PDF-Rendering, ein 2D- und 3D-Malsystem, eine Bibliothek mit objektbezogenen Karten, eine Grafikbibliothek und ein Authentifizierungs-Framework. Die Kernbibliothek ist Open Source und bietet ein hybrides Single-Page-Framework, das unter Linux, Unix oder Windows bereitgestellt werden kann. Wt wurde von Emweb entwickelt und unterstützt HTML5- und HTML4-Browser sowie grundlegende HTML-Benutzeragenten. Darüber hinaus kann Wt in JavaScript-Bibliotheken von Drittanbietern integriert werden.

Mit WT wird eine Anwendung als eine Hierarchie von Widgets definiert, die von allgemeinen Widgets wie Drucktasten bis hin zu spezialisierteren Widgets wie einem ganzen Block-Widget reichen. Der Widget-Baum wird als HTML/JavaScript im 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 physikalisch basierter Grafikalgorithmen. Es ist zur Vereinfachung der Entwicklung in einem datenorientierten Stil geschrieben und zur einfachen Codenavigation in kleine Bibliotheken unterteilt. Daten werden in einfachen Strukturen abgelegt und mit freien Funktionen oder direkt angesprochen.

Yocto/GL enthält den Code für den PCG-Zufallszahlengenerator. Yocto/GL-Entwickler bevorzugen einen funktionalen Ansatz gegenüber einem objektorientierten 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 erhältlich; ein C++17-Compiler ist erforderlich. (UKW)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation InfoWorld.

Leave a Comment

Your email address will not be published. Required fields are marked *