C++

HackerJobs_C++

Photo by Taras Shypka on Unsplash

C++ wurde 1979 von dem Developer Bjarne Stroustrup entwickelt. Als Erweiterung der Programmiersprache C ist sie mittlerweile vollständig von der ISO genormt. Sie bietet die Möglichkeit maschinennaher und effizienter Programmierungen. Ebenso sind Programmierungen auf hohem Abstraktionsniveau möglich. Innerhalb einer Standardbibliothek existieren unterschiedliche Implementierungen.

Systemprogrammierung und Anwendungsprogrammierung möglich

C++ wird für System- und Anwendungsprogrammierungen genutzt. In beiden Bereichen gilt die Programmiersprache als besonders etabliert, sodass Developer gerne auf sie zurückgreifen. Innerhalb der Systemprogrammierung wird die Sprache vorrangig innerhalb von Betriebssystemen, Treibern, virtuellen Maschinen, Signalprozessoren und eingebetteten Systemen angewandt. Die Anwendungsprogrammierung profitiert im Besonderen dann von der Programmiersprache, wenn die Leistungsgrenzen von technischen Rahmenbedingungen möglichst effizient ausgenutzt werden sollen. Allerdings haben Anwendungssprachen wie Java oder C# die Programmiersprache aus der Domäne zurückgedrängt.

Verschiedene Eigenschaften zeichnen die Programmiersprache aus

Die circa 60 verwendeten Schlüsselwörter lassen sich in unterschiedlichen Kontexten mehrfach verwenden. Die wirkliche Funktionalität wird C++ erst durch die Standardbibliothek verliehen. Die Standardbibliothek bringt der Sprache selbst wichtige Funktionen bei. Ebenso stellt sie eine Verbindung zum Betriebssystem her. Abhängig vom jeweiligen Einsatzgebiet können weitere Frameworks und Bibliotheken zum Einsatz kommen. Schwerpunkt der Programmiersprache sind die Sprachmittel zur Bibliothekenentwicklung. Allgemeine Mechanismen für Problemstellungen werden bevorzugt. Nur wenige Einzellösungen sind in die Sprache integriert. C++ ermöglicht die Kombination von maschinennaher, effizienter Programmierung mit verschiedenen Sprachmitteln. Diese Sprachmittel fassen komplexe und einfache Implementierungsdetails zusammen, um sie anschließend hinter abstrakten Befehlen zu verbergen. Developer sehen diese Eigenschaft als besondere Stärke an. Im Besonderen kommt die Template-Metaprogrammierung zum Einsatz. Diese Technik erlaubt eine nahezu kompromisslose Verbindung von Abstraktion und Effizienz.

In C++ gehören auch Variablen und Methoden zur Schnittstelle. Diese werden innerhalb der Header-Datei veröffentlicht. Durch diese Eigenschaft entstehen in der Laufzeit und Compilezeit Objektabhängigkeiten zu den verwendeten Stellen. Durch diverse Konstruktionen lassen sich diese Abhängigkeiten jedoch vermeiden. Dafür ist es notwendig, dass Developer die jeweils privaten Felder einer Klasse in eine vorwärts-deklarierte, private Hilfsklasse zu verschieben.

Entwicklung der Programmiersprache

Der Developer Stroustrup kam durch Erfahrungen mit Simula auf die Idee, eine neue Programmiersprache zu entwickeln. Zwar eignete sich Simula für große Software-Projekte, allerdings erschwerte die Sprach-Struktur die Entwicklung hocheffizienter Programme. Entsprechend effiziente Programme ließen sich jedoch mit BCPL schreiben. BCPL eignete sich jedoch nicht für große Projekte. Stroustrup erweiterte mithilfe seiner Erfahrungen die Programmiersprache C, welche als Mehrzwecksprache galt und darüber hinaus zügig Code produzierte, der sich auf verschiedene Plattformen portieren ließ. Da C zu dem Betriebssystem Unix gehörte, war die Sprache zudem recht weit verbreitet.

Ein Klassenkonzept für die Kapselung von Daten gilt als eine der ersten Erweiterungen. Primäres Vorbild hierfür war die Sprache Simula-67. Erst im Anschluss folgten weitere Klassen sowie Inline-Funktionen, ein strengeres Typsystem und Standard-Argumente.

Parallel zur Entwicklung von CwithClasses, entwickelte der Developer auch cfront. Hierbei handelt es sich um einen Compiler, der C-Code aus CwithClasses erzeugt. Erst 1983 wurde „CwithClasses“ in C++ umgenannt. Zu den wichtigsten Erweiterungen zählten:

  • Überladung von Operatoren und Funktionsnamen
  • virtuelle Funktionen
  • Konstanten
  • Referenzen
  • eine Freispeicherverwaltung, die änderbar ist
  • eine Verbesserung in der Typüberprüfung
  • an das Zeilenende gebundene Kommentare (aus BCPL übernommen)

1985 erschien eine erste Version der Programmiersprache. Diese Version stellte eine wesentliche Referenzversion dar, denn eine Standardisierung der Sprache gab es zum damaligen Zeitpunkt noch nicht. Die Version 2.0 erschien 1989. Damit waren auch Mehrfachvererbungen, statische Elementfunktionen, abstrakte Klassen und konstante Elementfunktionen möglich.