Wie kann man eigentlich jemandem, der sich mit dem Programmieren nicht auskennt, den Unterschied zwischen C++ und C erklären?
Welchen Sinn sollte das machen, welchen Nutzen sollte derjenige daraus ziehen?
Aber versuchen wir es. Das beginnt damit, dass C in C++ enthalten ist. C ist die Werkzeugkiste mit all den Dingen, die man braucht, um ein Haus zu bauen. Es gibt diese Werkzeugkiste in unterschiedlichen Geschmacksrichtungen, aber die Werkzeugkiste, die sich über die Jahre als am praktischsten erwiesen hat, die kam von Dennis. Mit seiner Werkzeugkiste “C” kann man jedes Haus in der Welt bauen.
Weil man nun über die Jahre sehr viele Häuser gebaut hat, hat sich mit der Zeit herausgestellt, dass man manche Dinge immer wieder gleich macht. Der Keller ist immer unten, das Dach ist immer oben. Man kann es auch anders bauen, aber so hat es sich halt bewährt. Wenn sich Bad und Küche eine Wand teilen, braucht man nur eine Wasserleitung zu legen. Baut man nebeneinanderliegende Wohnungen spiegelverkehrt, können 4 Zimmer mit einer Zu- und Ableitung versorgt werden. Früher hat man ein Zimmer dahin gebaut, wo gerade Platz ist und dann irgendwie Leitungen dahin gefrickelt, die man brauchte, um das Zimmer für seinen Zweck benutzen zu können. Irgendwann fing man an Probleme vorher zu lösen. Architekten kamen ins Spiel und haben ein Gebäude vorab für seinen Einsatzzweck geplant. Man hörte auf, einfach mal drauf los zu bauen.
Ein findiger Entwickler, nennen wir ihn Bjarne, sammelte also solche grundlegendenen Ideen und hat mit dem bekannten Standard-Werkzeugkasten “C” neue Werkzeuge gebaut. Diese Werkzeuge haben sich als so praktisch erwiesen, dass man sie der Werkzeugkiste C irgendwann einfach grundsätzlich dazugelegt hat: C++. Diese Werkzeuge dienen dazu, nicht nur ein Haus zu bauen, sondern auch einen Plan davon zu zeichnen und Voraussetzungen festzulegen, die so ein Haus grundsätzlich besitzen soll.
Früher hat man die Toilette einfach draußen in den Hof gebaut. Heute gibt es einen Standard für Häuser, der eine Toilette im Haus vorsieht. Solche Standards kann man mit C++ beschreiben. Man hat Werkzeuge, um die Architektur leichter austauschbar zu machen. So kann man erklären, dass ein Haus Wohnungen beinhalten muss und jede Wohnung ein Badezimmer haben muss, aber kann man der einen Wohnung halt erklären, dass hier ein großes Wohnzimmer entstehen soll und in der anderen Wohnung vielleicht ein kleineres Wohnzimmer und dafür ein zusätzliches Zimmer. Diese Architekturmöglichkeiten kann man in C++ beschreiben. Dafür ist ein Software-Architekt zuständig. Wird das Haus dann gebaut, nehmen in der Realität die Handwerker einen Papierplan und bauen das geplante dann mehr oder weniger genau nach. Der Architekt hat als Werkzeug Papier und Bleistift, der Bauarbeiter Maurerkelle und Hammer und der Polier liest den Plan und übersetzt ihn für den Bauarbeiter.
In C++ benutzen beide das gleiche Werkzeug. Architekt und Bauarbeiter können jederzeit die Rollen tauschen. Und der Compiler überwacht gleichzeitig als digitaler Polier, dass der Bauarbeiter sich auch an den Plan hält.
Das hilft auch dabei, wenn sich der Plan ändert, denn dann kann der Polier dem Bauarbeiter sagen, wo er noch Arbeiten zu erledigen hat.
Während man in C also alles bauen kann, liefert C++ also zusätzlich praktische Werkzeuge für den Architekten mit und dient zusätzlich als Kontrolle, um die Softwarequalität zu erhöhen, in dem es Programme, die vom Plan abweichen nicht kompiliert. Diese Planung ist in reinem C so nicht möglich.