C++

Lesezeit: 5 Minuten

C++ ist eine kompilierte, statisch typisierte Programmiersprache, die sowohl prozedurale, als auch objektorientierte, funktionale und aspektorientierte Programmierung ermöglicht und seit 1979 vom dänischen Informatiker Bjarne Stroustrup entwickelt wird. C++ ist seit 1998 ISO-standardisiert.

Alleinstellungsmerkmale

C++ ist ein Superset (Obermenge) von C, also vollständig mit diesem kompatibel. Damit gehört es zu den schnellsten High-Level-Sprachen und ist z.B. schneller als Go und Rust. C++ ist über die Jahre enorm gewachsen, bietet eine Vielzahl an Abstraktionen und Konzepten und eine riesige Standardbibliothek. C++ ist die Sprache der Wahl, wenn ein ähnliches Performance-Niveau wie mit C erreicht werden soll, aber auch ein hoher Bedarf an objektorientierten Strukturierungsmöglichkeiten wie Polymorphie besteht. Einige Konzepte in C++ sind so einzigartig, dass sie in keiner oder kaum einer anderen Sprache angetroffen werden, etwa Friend Declarations.

Einsatzbereiche

C++ wird vor allem in Anwendungen mit graphischen Komponenten und hohen Ansprüchen an die Performance eingesetzt. Es dient dabei häufig als Ergänzung zu C und kommt zum Einsatz, wenn der prozedurale Ansatz von C zu kurz kommt, etwa in der GUI-Entwicklung. C++ ist aber auch eine beliebte Sprache im Embedded-Umfeld, für Treiber und Compiler sowie im Machine Learning und in der Wissenschaft.

Viele Standardwerkzeuge verschiedener Betriebssysteme sind in C++ programmiert, darunter die GNU Compiler Collection (GCC), der Advanced Package Manager (APT) und die Laufzeitumgebung Cygwin. Viele Graphikprogramme wie Adobe Photoshop und Blender sind in C++ geschrieben, ebenso komplexe Client-Software wie MS Office, Google Earth und der Video LAN Player.

C++ ist eine beliebte Sprache in der Datenbankentwicklung und kommt unter anderem bei MySQL, MSSQL und MongoDB zum Einsatz. Das GUI-Toolkit Qt und damit auch der Desktop KDE sind in C++ entwickelt. Viele Webbrowser und Programme zum Dateitransfer nehmen C++ als Basis, unter anderem Safari, Firefox, Chrome, Opera, WinSCP und FileZilla.

Die meisten Spiele-Engines basieren auf C++, etwa die Unreal Engine, CryEngine, Unity und die id Tech Engines.

Bei der systemnahen Entwicklung, vor allem bei Werkzeugen ohne graphische Komponente, steht C++ in starker Konkurrenz zu C.

Pros

C++ ist eine extrem schnelle Sprache und ermöglicht sowohl Low-Level- als auch High-Level-Programmierung, und wird daher auch gerne als Middle-Level-Language betitelt. C++ wird stetig weiterentwickelt, enthält viele sehr interessante Konzepte und ein gigantisches Ökosystem. Die Beschreibung des Standards C++20 inklusive der Standardbibliothek umfässt stolze 1853 Seiten.

Viele Konzepte und Features sind mit der Zeit nachgerüstet worden, dazu zählen Threads, Namespaces und Templates. C++ kommt mit einem eigenen String-Typ in der Standardbibliothek, der in der Handhabung einfacher und komfortabler ist als C-Strings bzw. Char-Arrays.

C++ ist auch eine gute Wahl, weil es einem die Grundlagen von Computern näher bringt, während viele moderne Sprachen es einem ermöglichen, diese auszublenden und sich ganz auf die Geschäftslogik zu konzentrieren. Der Umgang mit der Sprache C++ kann einem dabei helfen, ein besserer Entwickler zu werden.

Cons

Die große Vielfalt an Abstraktionen kann als Nachteil gesehen und als Argument gegen C++ und für C verwendet werden.

Als Sprache mit manueller Speicherverwaltung gelten für C++ ähnliche Nachteile wie für C und Pascal. Der Gewinn an Kontrolle und Performance bzw. Effizienz geht zu Lasten der Komplexität und Fehleranfälligkeit.

Durch die hohe Komplexität ist die Entwicklungsgeschwindigkeit eher langsam als in modernen Sprachen wie Python und Ruby. Gleichzeitig ist es schwieriger auf dem Arbeitsmarkt gute Entwickler für C++ zu finden, als solche für andere populäre Sprachen wie Java und C#.

Funktionen in C++ sind leider keine First-Class Functions. Damit bietet C++ nur eingeschränkte Unterstützung für funktionale Programmierung.

Datenblatt

NameC++
Webseitehttps://isocpp.org/
Erscheinungsjahr1985
Aktuellste Version (Stand 21. November 2021)C++20 (ISO/IEC 14882:2020)
Typisierungstatisch
Paradigmenimperativ
prozedural
objektorientiert
funktional
aspektorientiert
ProsCons
sehr schnellsteile Lernkurve
sehr ressourcenschonendmanuelle Speicherverwaltung / fehleranfällig
weite Verbreitunghohe Komplexität
einfacher Hardwarezugrifflangsame Entwicklungsgeschwindigkeit, nicht die erste Wahl für Prototyping
uneingeschränkte Freiheiten durch Zeigerkeine First-Class Functions
leicht portierbar
riesiges Ökosystem
viele Abstraktionsmöglichkeiten

virtuallet

virtuallet ist ein kleines Programm von mir, welches ich in diversen Programmiersprachen implementiert habe. Hier geht es direkt zum C++-Code von virtuallet auf GitLab. Hier gibt es weitere Infos zu virtuallet.