C++ ist eine Programmiersprache, die 1983 von Bjarne Stroustrup entwickelt wurde, der die Programmiersprache C "inkrementieren" wollte (daher der Name, c++ bedeutet "1 zu C hinzufügen"). Diese Sprache bringt also neue Funktionen im Vergleich zu C mit sich: objektorientierte Programmierung, Klassen, Templates usw., all diese Begriffe werden in diesem Artikel näher erläutert.
Aufgrund seiner Leistungsfähigkeit und Vielseitigkeit ist C++ eine der am häufigsten verwendeten Sprachen, insbesondere in der Softwareentwicklung (z. B. IPod-Schnittstelle, Webbrowser) oder der Programmierung von Videospielen (oder Betriebssystemen PS3, PS4).
C++ ist zwar schwer zu beherrschen, ermöglicht aber das Schreiben von optimiertem und extrem schnellem Code, im Gegensatz zu anderen Sprachen wie Python, deren leichtere Handhabung einen Preis hat: geringere Effizienz und Geschwindigkeit.
Was sind die Prinzipien der objektorientierten Programmierung?
Die objektorientierte Programmierung (OOP) beruht auf einer Reihe von Prinzipien:
- Der Begriff der Klasse (privat oder öffentlich: Struktur): Eine Klasse ist ein Satz von Daten (ganze Zahlen, ein Array…), die Attribute genannt werden, und von Methoden, die auf diese Daten einwirken, wie z. B. Anzeigen, Schreiben, Lesen oder auch Operatoren:
- Addition, Multiplikation….
Datenkapselung: Die Methoden und Daten einer Klasse werden in zwei Teile getrennt: einen privaten Teil (nur für den Entwickler der Klasse) und einen öffentlichen Teil (für alle Benutzer zugänglich). So kann man z. B. die Elemente eines Arrays lesen und verändern, aber nicht seine Größe ändern. Diese Aufteilung verhindert viele Fehler, die durch Fehler des Programmierers verursacht werden, und erleichtert seine Arbeit: Er muss nicht wissen, wie die Klasse aufgebaut ist, um sie manipulieren zu können. - In C++ verfügen Klassen über spezifische Methoden: den Konstruktor, der dazu dient, die Klasse zu initialisieren (dasselbe in Python), und den Destruktor, der dazu dient, die Speicherressourcen freizugeben, sobald das erstellte Objekt nicht mehr benötigt wird. Diese durch den Destruktor ermöglichte Speicherverwaltung, die es in Python nicht gibt, ist für Anfänger eine Quelle vieler Fehler.
Vererbung: Eine allgemeine Klasse wird in spezielle Unterklassen unterteilt, was es ermöglicht, den Code zu faktorisieren und somit die Anzahl der Zeilen zu reduzieren, ähnlich wie in Python.
Prozedurale Programmierung
Eine wichtige Unterscheidung in C++ ist die zwischen Funktionen, die ihre Eingaben nicht verändern (sie können eventuell ein neues Objekt erstellen und zurückgeben), und Funktionen, die Eingaben verändern, aber nichts zurückgeben. Letztere werden als Prozeduren bezeichnet.
Dieses Sprachparadigma ermöglicht es, Routinen zu erstellen und den Code zu faktorisieren, was seine Lesbarkeit und Kürze verbessert.
Definition der Generischen Programmierung
Generische Programmierung beruht auf dem Prinzip, dass dieselben Operatoren oder Funktionen für verschiedene Typen (double, float, char, int…) verwendet werden, was durch das Konzept der Templates ermöglicht wird. Diese Eigenschaft macht die Sprache kurz und überschaubar und erleichtert die Wartung.
Klassen- und Funktionsschablonen sind allgemeine Codevorlagen, die es ermöglichen, abstrakte Klassen oder Funktionen mit generischen Typen (typename) zu erstellen, die nicht ausgefüllt werden müssen.
Wie ist das nützlich? Es erspart dir das Schreiben einer Funktion für jeden bestimmten Datentyp, da der Compiler diese automatisch beim Aufruf der abstrakten Klasse/Funktion erstellt.
Du kannst zum Beispiel eine abstrakte Funktion maximum: templatemax() erstellen und sie dann aufrufen, um das maximale Element eines Arrays von Integer, Float, Vektor usw. zu finden, dann werden die Funktionen max(int), max(float) und max(vectors) erzeugt.
C++, eine kompilierte Sprache?
C++ ist eine kompilierte Sprache: Der Quellcode, der der Maschinensprache ähnlicher ist, wird vom Compiler direkt in eine ausführbare Datei umgewandelt, im Gegensatz zu Python, wo ein Interpreter den Quellcode erst übersetzen muss. Dieser Unterschied ist ein wichtiger Grund für die Geschwindigkeit von C++.
Wo liegen die Grenzen von C++ ?
C++ hat also viele Qualitäten: Schnelligkeit, Prägnanz und Vielseitigkeit, aber sie haben auch ihre Nachteile. Zum einen muss der Speicher von Hand verwaltet werden (z. B. durch Destruktoren), was zu vielen Fehlern führt, im Gegensatz zu Pythons Garbage Collector, der den Speicher für uns zuweist.
Andererseits ist das Erlernen von C++ komplexer, da es grundlegende Kenntnisse der Informatik erfordert.
Fazit
C++ wird häufig verwendet, sogar in der Data Science (ohne es zu wissen), da die Entwicklungsumgebung für KI-Modelle in C++ implementiert ist und Python als Bindeglied zwischen dem Eingabeskript und dieser Umgebung dient.