Eine kurze Charakterisierung der Programmiersprache C++ (C++, Charakterisierung, Sprachbeschreibung), Lektion, Seite 720800
http://www.purl.org/stefan_ram/pub/c++_charakterisierung_de ist die kanonische URI dieser Seite.
Stefan-Ram-Startseite

Charakterisierung von C++

Herkunft

Die Programmiersprache C, von der C++  abgeleitet wurde, hat sich den 80er Jahren sehr weit verbreitet und war zeitweise in einigen Bereichen die meistverwendete Sprache überhaupt. Daher baut C++  auf einer Sprache auf, die sich in vielen Einsatzgebieten bereits bewährt hat und für die es einen großen Vorrat an Quellcode und erfahrenen Programmierern gibt.

Im Vergleich zu C  fallen unter anderem folgende Unterschiede auf: C++  unterstützt die „objektorientierte Programmierung“ und erlaubt es, Operatoren teilweise umzudefinieren. Die Bedeutung des Präprozessors ist vermindert. Trotz verstärkter Typstrenge erlauben Code-Schablonen die Erzeugung von flexiblen Code. Darauf basieren Teile der Standardbibliothek von C++, die allgemeine Standard-Verfahren zum Umgang mit Datentypen für C++  bieten.

Normierung

Die Programmiersprache „C++ “ ist durch die Norm „ISO/IEC 14882“ seit 1998 herstellerunabhängig definiert. Sie ist nicht an einen bestimmter Compiler oder ein bestimmtes Betriebssystem gebunden, so daß C++ -Programme im Allgemeinen von einer Umgebung auf andere Umgebungen übertragen werden können.

Maschinennähe

C++  erlaubt den Speicherzugriff über Adressen („Zeiger“) und die Manipulation einzelner Bits und ist damit recht maschinennah. Der Programmierer muß sich beispielsweise oft um die Verwaltung von dynamisch alloziertem Speicher kümmern, da C++  keine automatische Speicherverwaltung (keinen “garbage collector”) enthält.

Diese Eigenschaften machen C++  zu einer eher anspruchsvollen Programmiersprache, die technisches Hintergrundwissen vom Programmierer verlangt. Man kann mit C++  sehr effiziente (schnelle und platzsparende) Programme schreiben muß dafür aber auch mehr Schreibaufwand treiben. C++  wird in der Regel nicht interpretiert, sondern kompiliert, und erlaubt es somit, auslieferbare ausführbare Programme zu erstellen, die keine großes Laufzeitsystem benötigen. Dies ist wohl einer der Gründe dafür, daß C++  bei der gewerblichen Softwareerstellung so beliebt ist.

Flexibilität

Die objektorientierte Sprache C++  kann durch Definition von Klassen, Überladen von Operatoren, dem Verwenden von Schablonen oder durch Einsatz des Präprozessors relativ weitgehend an spezielle Aufgaben angepaßt werden. Diese Möglichkeiten und die umfangreiche Standardbibliothek müssen vom Programmierer aber auch erst einmal erlernt und bewältigt werden. C++  ist nicht als „Lernsprache“ entwickelt worden sondern der Abkömmling einer Sprache, die ursprünglich für die schwierige Aufgabe der maschinennahen Programmierung eines Betriebssystems entwickelt wurde.

Nachfrage

Da C++ -Kenntnisse auf dem Ausbildungs- und Arbeitsmarkt vergleichsweise stark nachgefragt werden, werden viele Programmierer sich nicht nur aufgrund der technischen Eigenarten, sondern auch aufgrund der Marktsituation dazu entschließen, C++  zu lernen. Doch ein souveräner Einsatz von C++  verlangt auch, daß objektorientierte Entwurfsmethoden, Entwurfsmuster, Techniken der generischen Programmierung und andere Software-Techniken verstanden und eingesetzt werden. Daher ist C++  eher eine Sprache für Vollzeitprogrammierer.

Anwendungsgebiete

Der Aufwand des Erlernens von C++  ist besonders für diejenigen angebracht, die schon wissen, daß sie sich für längere Zeit mit dem Programmieren beschäftigen wollen und dabei eher Systemprogramme als Anwendungsprogramme entwickeln wollen. Auch systemnahe Anwendungsprogramme mit einer graphischen Benutzeroberfläche können in C++  geschrieben werden. Doch da C++  keine eigene Schnittstelle für graphische Benutzeroberflächen definiert (wie z.B. Java ), sind solche C++ -Programme weniger portabel.

Schließlich eignet sich C++  besonders zur Implementation von Systemprogrammen, wie etwa der Prozeßverwaltung eines Betriebssystems, der Implementierung eines Internetprotokolls, oder der Programmierung von Interpretierern und Laufzeitsystemen für andere Programmiersprachen. So gesehen ist es auch verständlich, daß C++  beispielsweise keine Speicherverwaltung enthält, denn C++  ist ja dafür gedacht, solche Systeme erst zu implementieren. Um aber eine Speicherverwaltung oder ein Internetprotokoll mit C++  zu implementieren, ist natürlich auch Fachwissen des Anwendungsgebietes erforderlich, so daß C++ -Programmierer oft gute allgemeine Kenntnisse entsprechender Gebiete der Informatik benötigen.

Effizienz

Das Entstehen vieler Eigenarten der Programmiersprache C++  läßt sich nur dadurch verstehen, daß man bedenkt daß und wie diese zu höherer Effizienz, insbesondere dem Einsparen von Laufzeit, führen. Um dieses Ziel zu erreichen nimmt ein C++ -Programmierer oft erhebliche Umstände in Kauf.

C++  als Lernsprache

Es besteht kein Grund, die Belastungen des Erlernens effiziensteigernder Sprachkonstrukte und ‑idiome sowie eine gewisse Maschinennähe auf sich zu nehmen, wenn die hohe Effizienz gar nicht benötigt wird. Insbesonderer zum Erlernen des Programmierens ist es vielleicht nicht nötig, sich gleich mit Fragen der Optimierung  zu beschäftigen, denn vorrangig sollte die Erstellung korrekter  Programme sein. Man kann aber C++  nicht lehren, ohne auf die Mechanismen zur Effizienzsteigerung einzugehen, da diese Mechanismen die gesamte Programmiersprache prägen und man bei Verzicht auf ihre Behandlung gleich eine andere Sprache wählen könnte. Ohne Beachtung von Effizienzfragen in C++  zu programmieren, würde gegen den Geist der Sprache verstoßen und der Sinn vieler Sprachkonstrukte wäre nicht erkennbar.

Es ergäbe sich—wenn man nur eine Teilmenge von C++  lehren würde—dann auch das Problem, daß nach Abschluß einer solchen Lehrveranstaltung viele C++ -Programme und -Texte gar nicht verstanden werden könnten. Allerdings besteht dieses Problem auch bei einer Lehrveranstaltung mit dem Anspruch das gesamte C++  zu lehren, da dies aufgrund des Umfanges und der Komplexität dieser Sprache in ein oder zwei Semestern meist nicht möglich ist.

C++  kann als Sprache zum Erlernen des Programmierens dienen. Wenn die Auszubildenden keine Informatiker sind, so wird man die schwierigeren Aufgaben der Systemprogrammierung weniger berücksichtigen und Aufgaben aus Gebieten verwenden, die den Lernenden vertrauter sind, auch wenn C++  für diese Gebiete nicht immer die Sprache der Wahl ist.

Java, C#  und andere Sprachen sind stark von C++  beeinflußt. So kann es hilfreich sein, C++  erlernt zu haben, auch wenn später andere Sprachen verwendet werden.

Es ist natürlich besonders dann angezeigt, C++  zu erlernen, wenn es absehbar ist, daß C++  oder eine ähnliche Sprache, vom Lernenden auch später benutzt werden wird. Andernfalls kann eine weniger maschinennahe kleinere Sprache es erlauben, sich mehr auf das Lernen zu konzentrieren, ohne sich mit speziellen technischen Details oder „kryptischen“ Kurznotationen beschäftigen zu müssen.

Siehe auch

<721271C++  als Lernsprache in der Schule

Von der Stefan-Ram-Startseite ausgehend finden sich oft noch mehr Informationen zu Themen, die auf einer Seite angesprochen wurden. (Eine Verbindung zur Stefan-Ram-Startseite befindet sich ganz oben auf dieser Seite.)  |   Seiteninformation und Impressum  |   Formular für diese Seite betreffende Mitteilungen an den Herausgeber  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. slrprd, PbclevtugFgrsnaEnz