Philosophie hinter C++

In diesem Kurs lernst du die Programmiersprache C++ kennen. Bevor wir mit dem Programmieren beginnen, ist es sinnvoll, sich kurz mit deren wesentlichen Eigenschaften zu befassen:

C++ ist eine Weiterentwicklung der Programmiersprache C. Sie behält viele Funktionen von C bei, ergänzt die Sprache jedoch um viele Details auf einem höheren Abstraktionsniveau.

Vorteile von C++
  • Sowohl für hohes als auch für niedriges Abstraktionsniveau geeignet
  • Effiziente Programme mit guter Performance
  • Einfache Erstellung von Anwenderprogrammen
  • Unterstützung der objektorientierten Programmierung
Kompilierung

C++ ist eine kompilierte Sprache. Das bedeutet, dass du den Code nach dem Erstellen kompilieren musst. Dabei wird er in die Maschinensprache übersetzt und es entsteht ein ausführbares Programm, das du beliebig oft aufrufen kannst, ohne dass dabei ein erneuter Übersetzungsprozess notwendig ist.

Das steht im Gegensatz zu Skriptsprachen (interpretierte Sprachen). Hierbei entsteht keine ausführbare Datei. Der Code wird bei  jeder Ausführung aufs Neue übersetzt. Das bringt Defizite bei der Effizienz mit sich, ermöglicht es jedoch, die Programme auf unterschiedlichen Betriebssystemen auszuführen.

Von C zu C++

C++ ist eine Weiterentwicklung der Programmiersprache C. Falls du bereits gelernt hast in C zu programmieren, kennst du daher auch schon die wichtigsten Grundlagen von C++.

Bei C handelt es sich jedoch um eine Programmiersprache auf relativ geringem Abstraktionsniveau. Das bedeutet, dass sich die Befehle der Sprache an der technischen Umsetzung des Computers orientieren. Das ermöglicht eine sehr präzise Steuerung der Hardware. Allerdings ist es auf diese Weise sehr schwierig, Anwendungen auf einem höheren Abstraktionsniveau zu gestalten – beispielsweise Programme mit grafischen Benutzeroberflächen oder Programme für die Kommunikation über ein Netzwerk.

Der Programmierer Bjarne Stroustrup hatte 1979 die Idee, die Programmiersprache C weiterzuentwickeln.

Vorteile von C++

Die neue Sprache sollte zum einen genau wie C die maschinennahe Programmierung, die sich durch eine hohe Effizienz auszeichnet, unterstützen. Zum anderen sollte sie jedoch auch ein höheres Abstraktionsniveau ermöglichen, um die Entwicklung von Anwenderprogrammen zu vereinfachen. Auf diese Weise entstand C++. Das doppelte Pluszeichen steht hierbei für den Inkrement-Operator, den wir später noch kennenlernen werden. Dieser erhöht den Wert einer Variablen um 1.
C++ soll demnach dafür stehen, dass wir C um 1 erhöhen, indem wir der Programmiersprache weitere Verwendungsmöglichkeiten hinzufügen.

C++ unterscheidet sich außerdem darin von C, dass hierbei die objektorientierte Programmierung möglich ist. Hierbei handelt es sich um ein Programmierparadigma, das besonders übersichtliche und effiziente Programme ermöglicht. Daher kommt diese Technik in der modernen Informatik sehr häufig zum Einsatz. Die Unterstützung der objektorientierten Programmierung ist einer der wesentlichen Vorteile, die C++ gegenüber C auszeichnet. Auch dieses Thema werden wir später noch ausführlicher behandeln.

Kompilierung

Wenn du ein Programm schreibst, verwendest du hierfür Buchstaben, Zahlen und einige weitere Symbole. Den sich daraus ergebenden Code speicherst du als reinen Text ab. Man nennt diesen Text meistens entweder Code, Sourcecode, Quellcode oder Quellentext. Der Computer kann diesen Text jedoch nicht ausführen. Er benötigt eine Abfolge einzelner Bits, die der Prozessor aufruft und daraufhin die zugehörige Aktion durchführt. Diese Abfolge einzelner Bits wird als Maschinensprache bezeichnet.

Wenn wir ein Programm schreiben, müssen wir es zunächst in die Maschinensprache übersetzen, bevor wir es ausführen können. Diese Aufgabe erledigen wir jedoch nicht selbst. Wenn wir ein Programm in C++ (oder in vielen weiteren Programmiersprachen wie C, Java, C# etc.) schreiben, kommt hierfür ein Compiler zum Einsatz. Dabei handelt es sich um eine Software, die diesen Übersetzungsprozess übernimmt. Wenn wir unser Programm abgeschlossen haben, müssen wir es damit kompilieren. Dabei entsteht eine ausführbare Datei. Diese können wir dann direkt auf dem Computer ausführen.

Unterschied zu Skriptsprachen

Die Verwendung eines Compilers stellt jedoch nicht die einzige Möglichkeit dar, um diesen Übersetzungsprozess durchzuführen. Es gibt auch sogenannte Skriptsprachen, die auch als interpretierte Sprachen bezeichnet werden. Hierbei kommt für die Ausführung statt eines Compilers ein Interpreter zum Einsatz.  Beide übersetzen den Programmiercode in Maschinencode.

Jedoch arbeitet ein Compiler erst den gesamten Programmiercode durch und übersetzt in dann auf einmal in Maschinencode. Dabei erzeugt er eine ausführbare Datei. Diese kannst du dann beliebig oft ausführen, ohne dass das Programm erneut übersetzt werden muss.

Ein Interpreter hingegen übersetzt jede Zeile des Programmiercodes einzeln und gibt sie direkt als Maschinencode aus. Die Übersetzung findet dabei während der Ausführung statt. Es entsteht keine ausführbare Datei. Daher ist es notwendig, den gesamten Übersetzungsprozess bei jeder Ausführung zu wiederholen.

Beide Alternativen haben gewisse Vor- und Nachteile:

Kompilierte Programme zeichnen sich in erster Linie durch eine bessere Performance aus, da der Übersetzungsprozess Rechenleistung benötigt. Wenn wir diesen bei jeder Ausführung erneut durchführen müssen, führt das zu einer höheren Belastung des Systems.

Interpretierte Programme zeichnen sich hingegen durch ihre Plattformunabhängigkeit aus. Wenn du ein ausführbares Programm erstellst, kannst du es nur in der Umgebung verwenden, für die du es kompiliert hast. Wenn es sich zum Beispiel um ein Windows-Programm handelt, lässt sich dieses nicht auf einem macOS-Rechner ausführen. Interpretierte Programme bestehen hingegen nur aus dem Programmcode, der unabhängig vom System ist. Die Übersetzung übernimmt erst der Interpreter. Vorausgesetzt, dass diese Software für das entsprechende Betriebssystem verfügbar und darauf installiert ist, kann das Programm daher auf jedem beliebigen Rechner ausgeführt werden.

Zusammengefasst: Bei C++ handelt es sich um eine Programmiersprache, die kompiliert werden muss. Das bedeutet, dass du von sehr effizienten Programmen profitierst. Diese sind jedoch stets an das Betriebssystem gebunden, auf dem du sie entwickelt hast.