Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
BeiträgeC++

Ist C++ zu kompliziert?

Ist C++ zu kompliziert
(Neuauflage 2025)

Einleitung

Die Diskussion um die Zukunft von C++ wird seit Jahren von zwei eng miteinander verbundenen Themen geprägt: Komplexität und Safety. Beide Begriffe werden in der öffentlichen Debatte häufig zu stark vereinfacht, meist sogar ausschließlich auf das Speichermanagement reduziert. Doch Safety umfasst weit mehr: funktionale Korrektheit, deterministische und performante Ausführung, effiziente Ressourcennutzung, architektonische Stabilität, Typkonsistenz, robuste Nebenläufigkeitsmodelle sowie eine bewusste ökologische Verantwortung. Diese Aspekte gemeinsam bestimmen, ob Software nachhaltig, zuverlässig und verantwortungsvoll betrieben werden kann.

C++ ist nicht zu komplex. Seine Tiefe ist eine Konsequenz seines universellen Anspruchs: Die Sprache ist darauf ausgelegt, in sehr unterschiedlichen Domänen eingesetzt zu werden, von eingebetteten Systemen bis zu Hochleistungsrechnerarchitekturen. Viele Sprachen sind in Spezialfällen einfacher, doch C++ ist keine Speziallösung, sondern ein universelles Werkzeug. Gerade diese Vielseitigkeit erzeugt Komplexität, erfordert Erfahrung und ermöglicht im Gegenzug außergewöhnliche Effizienz und Ausdruckskraft.

Vor diesem Hintergrund sind die für C++26 vorgesehenen Profiles von großer Bedeutung. Bjarne Stroustrup hat mehrfach hervorgehoben, dass Profiles ein entscheidender Schritt sind, um die Komplexität von C++ selektiv zu strukturieren, ohne die grundlegenden Prinzipien der Sprache aufzugeben. Profiles erlauben abgestufte Sicherheitsniveaus, unterschiedliche Einsatzkontexte und gleichzeitig die Einhaltung eines fundamentalen Leitwerts, den oft immer wieder betonten: „Never break the code.“

C++26 bringt zusätzlich Contracts und eine veränderte Semantik der Speicherinitialisierung, die sich erheblich auf Safety und Korrektheit auswirken werden. Deshalb ist es wichtig, dass Compilerhersteller frühzeitig investieren. Das gilt auch für das Embarcadero-Ökosystem, das traditionell isolierter agiert und bei C++20 und C++23 deutliche Verzögerungen hatte. Der aktuelle C++Builder liefert nun endlich C++23-Unterstützung, doch im Vergleich zu früh reagierenden Compilern anderer Hersteller zeigt sich weiterhin eine Lücke. Umso wichtiger ist es, bereits jetzt konsequent in C++26 zu investieren, damit solche Rückstände künftig vermieden werden.

Diese Überlegungen machen deutlich, warum der ursprüngliche Artikel aus dem März 2023 heute aktueller ist als damals. Die damalige Diskussion entstand nach einem Livestream, in dem ich eine Architektur auf Basis eines multiparadigmatischen Ansatzes mit virtueller (partieller) Vererbung, variadic templates und concepts vorgestellt habe. Die anschließende Debatte führte später zu Vorträgen auf der ADC++ 2023 und der Tech Stream Conference 2023. Die nun vorliegende überarbeitete Fassung verknüpft diese Einsichten mit den heutigen Entwicklungen.


Ist C++ zu kompliziert?

Ich habe immer wieder Vergleiche anderer Sprachen und Technologien mit C++ gelesen. Allen ist etwas gemeinsam, denn Entwicklerinnen und Entwickler sowie Journalistinnen und Journalisten vergleichen ihre Sprache mit C++ (nicht umgekehrt). Überraschenderweise finden sie in C++ genau jene Eigenschaften wieder, die sie aus ihrer eigenen Sprache kennen. Manchmal werden Beispiele präsentiert, bei denen C++ (angeblich) etwas nicht könne. Daraus wird dann der Schluss gezogen, die eigene Sprache sei ebenso mächtig oder effizient. Dabei wird häufig ignoriert, dass C++23 und künftig C++26 verschiedene Paradigmen miteinander verbindet und damit Funktionen bereitstellt, die weit über klassische objektorientierte oder funktionale Modelle hinausgehen.

Solche Vergleiche sind in engen Spezialfällen oft richtig und manchmal sogar einfacher. Doch C++ ist keine Spezialsprachenlösung. Es ist eine universelle Sprache, die für viele unterschiedliche Problemklassen ausgelegt ist, von Ereignismodellen über Systeme mit extremen Latenzanforderungen bis hin zu numerisch anspruchsvollen Simulationen. Genau diese Universalität erzeugt Komplexität und ermöglicht zugleich einen Anwendungsbereich, der weit über das hinausgeht, was viele Sprachen leisten können.

Häufig wird behauptet, andere Sprachen würden ebenso schnelle Programme produzieren. Ein echter Vergleich erfolgt jedoch selten. Ausnahmen und enge Spezialbereiche ausgenommen, kommen nur wenige Sprachen in die Nähe von C++, wenn es um Performance, Effizienz und nachhaltige Ressourcennutzung geht. Gerade diese Dimensionen haben auch eine ökologische Bedeutung, die in der öffentlichen Diskussion bislang zu wenig Beachtung findet.

Aber sind diese Vergleiche denn richtig?

Goethe formulierte: Jeder hört nur, was er versteht. Dieses Prinzip zeigt sich auch in technischen Vergleichen. Da viele nur einen kleinen Ausschnitt von C++ betrachten, entsteht ein verzerrtes Bild. Die Reaktionen erfahrener C++ Entwicklerinnen und Entwickler wirken dann unverständlich. Wie bei vielen Falschinformationen setzt sich oftmals das Einfachere durch. Dabei könnte ein breiterer Einsatz moderner C++ Features und besserer Ausbildung signifikant Energie sparen.

Im März 2023 ging es in meinem Livestream um partielle virtuelle Vererbung, den Mythos des Diamantproblems und die angeblichen Schwierigkeiten. Der entscheidende Punkt: C++ ist eine multiparadigmatische Sprache. Mehrfachvererbung ist darin nicht ein Fehler der Sprache, sondern ein bewusstes Werkzeug. In Verbindung mit Templates, Konzepten, Metaprogrammierung und variadic templates wird sie zu einem extrem leistungsfähigen Mittel zur Strukturierung großer Architekturen. Die Kombination dieser Paradigmen ermöglicht flexible, modulare Strukturen, die aus unabhängigen Teilprozessen zusammengesetzt werden können.

Wir nannten dieses Muster früher Ping Pong Implementierung, da die Struktur einem Wechselspiel zwischen Klassen ähnelt und flexible Module erzeugt, die wie ein Legobaukasten funktionieren. Während viele Entwicklerinnen und Entwickler Hypethemen folgen, bietet C++ andere, hocheffiziente Lösungen, die oft übersehen werden. Ein Zuschauer kommentierte damals ironisch, dass nach aktueller Logik die vorgestellte Architektur ein Monolith ist, weil er die Lösung nicht mit Hilfe von stateless Architektur mit Dockern baut.

Bemerkenswert war, dass selbst langjährige C++ Entwicklerinnen und Entwickler überrascht waren. Aussagen wie „Dann gibt es gar kein Diamantproblem?“ zeigten, wie tief manche Missverständnisse verankert sind. Viele dieser Mythen basieren nicht auf der Sprache selbst, sondern auf fehlendem Wissen über moderne Sprachmittel.

Ausbildung, Durchschnitt und Bequemlichkeit

Man könnte meinen, C++ sei zu kompliziert. Doch das ist nicht der Grund, warum andere Sprachen bevorzugt werden. Vielmehr orientiert sich die Ausbildung stärker an Durchschnittslösungen, häufig an Java, C# oder Python. Viele Regeln und Patterns aus diesen Sprachen sind für C++ ungeeignet oder überflüssig. C++ Entwicklerinnen und Entwickler übernehmen solche Muster aus Bequemlichkeit oder mangelnder Differenzierung.

Reaktionen aus dem Stream wie „Das habe ich noch nie gelesen“ oder „Davon habe ich noch nie gehört“ verdeutlichen diese Wissenslücken. Studien zufolge könnten gegenüber Java und C# zwischen fünfzehn und dreißig Prozent Energie eingespart werden, gegenüber Python fünfzig Prozent und mehr. Sicherheit und Energieeffizienz stehen sich nicht entgegen, sondern sind komplementäre Ziele.

Vergleiche mit C++ müssen vollständig sein

Wer vergleichen möchte, muss mit dem gesamten C++ vergleichen, nicht nur mit dem Ausschnitt, den er versteht. Andernfalls passiert das, was laut Überlieferung indigenen Völkern Amerikas geschah: Sie sahen die Schiffe von Kolumbus erst, als ein Schamane die Veränderung der Wellen interpretierte. Ohne Kontext bleibt vieles unsichtbar.


Schlusswort

C++ ist keine Sprache, die man beiläufig erlernt oder beiläufig beurteilen kann. Ihre Stärke entsteht nicht aus Einfachheit, sondern aus Tiefe, und genau darin liegt ihr Wert. Wer C++ verstehen möchte, muss akzeptieren, dass universelle Werkzeuge eine differenzierte Betrachtung erfordern und dass moderne Softwareentwicklung weit mehr ist als die Wahl einer bequemen Lösung. Safety, Korrektheit, Performance und Effizienz sind keine Gegensätze, sondern ein gemeinsamer Anspruch, dem wir uns als Entwicklerinnen und Entwickler stellen müssen. Gerade vor dem Hintergrund wachsender ökologischer Verantwortung können wir es nicht länger ignorieren, welche Kosten ineffiziente Software verursacht.

Die modernen Sprachmittel von C++23 und die Perspektive auf C++26 zeigen, dass sich die Sprache weiterentwickelt, ohne ihre Grundprinzipien aufzugeben. Profiles, Contracts, eine präzisere Initialisierung und stärkere Übersetzungszeitprüfungen sind keine Abschwächungen, sondern Schritte hin zu klarerer Struktur, besserer Wartbarkeit und nachhaltigeren Architekturen. Gleichzeitig erinnern sie uns daran, dass wir das Wissen über diese Werkzeuge aktiv pflegen und weitergeben müssen.

Wenn wir C++ nur durch vereinfachte Vergleiche mit anderen Sprachen bewerten, sehen wir nicht, wofür es eigentlich geschaffen wurde. C++ bleibt eine universelle Sprache, die mit ihrer multiparadigmatischen Ausrichtung Lösungen ermöglicht, die weit über das hinausgehen, was viele Spezialwerkzeuge leisten können. Sie verlangt Verantwortung, aber sie ermöglicht zugleich jene Präzision und Effizienz, die in einer zunehmend datengetriebenen Welt unverzichtbar werden.

Am Ende entscheidet nicht die Sprache über die Qualität unserer Systeme, sondern unser Verständnis ihrer Möglichkeiten. C++ bietet uns diese Möglichkeiten seit Jahrzehnten. Es liegt an uns, sie zu nutzen, zu vermitteln und weiterzugeben.

RAD Studio 13.1 Florence Now Available See What's New in RAD Studio 13.1 Delphi is 31 - Webinar Replay

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.

Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

IN THE ARTICLES