Als ich in der Embedded-Programmierung anfing, war ich verwundet, dass es so viele Vorbehalte gegen den Einsatz von C++ in der Embedded-Programmierung gibt. Die meisten basieren auf einem falschen Verständnis der Programmiersprache C++.
Mythen sind in der Embedded-Programmierung weit verbreitet. Wir stellen Ihnen einige vor und klären in einem zweiten Artikel, welche Fakten es gibt.
Zuerst zu den Mythen rund um C++, mit denen ich mich immer wieder auseinandersetzen muss. Ich muss vorwegschicken. Dieser Artikel spiegelt meine Wahrnehmung wider. Beispiele gefällig?
Templates blähen den Code auf.
Objekte müssen im Heap erzeugt werden.
Exceptions sind teuer.
C++ ist langsam und benötigt zu viel Speicher.
C++ ist zu gefährlich in sicherheitskritischen Systemen.
In C++ muss man objektorientiert programmieren.
C++ kann man nur für Applikationen verwenden.
Die iostream-Bibliothek ist zu groß, die STL-Bibliothek zu langsam.
Im Wesentlichen lässt sich die ganze Argumentation auf einen einfachen Nenner bringen.
=> C++ ist ein nettes Spielzeug. Wir beschäftigen uns hier aber mit den richtigen Problemen.
Die Liste der (Vor)urteile ist lang. Sie besteht aus Halbwahrheiten und Unwahrheiten, die meist von gestanden C-Programmierern vorgetragen werden. Ich will nur explizit auf die Unwahrheiten eingehen. Die Halbwahrheiten sind zum großen Teil eine Frage des richtigen Einsatzes der Sprachfeature von C++ und zum einen immer kleineren Teil Frage der Implementierung der C++-Kernsprache und ihrer Bibliotheken.
Objekte müssen im Heap erzeugt werden.
Objekte lassen sich auf dem Stack erzeugen oder mit operator new an einer beliebigen Stelle in der Speicherstruktur anlegen.
C++ ist zu gefährlich in sicherheitskritischen Systemen.
Natürlich ist eine Frage der Kompetenz des Entwicklers. Wer aber C-Strings mit C++-Strings, ein C-Array mit einem C++-Array oder einem std::vector vergleicht, Makros anstatt von konstanten Ausdrücken oder Templates gerne einsetzt, der kann wirklich nicht argumentieren, dass C++ zu gefährlich ist. Gerade in diesem Punkt sehe ich einen großen Vorteil von C++11.
In C++ muss man objektorientiert programmieren.
C++ ist eine Multiparadigmen Programmiersprache. C++ erlaubt, objektorientiert, strukturiert, funktional, generisch oder auch generativ zu programmieren.
C++ kann man nur für Applikationen verwenden.
C++ wird vom Feuerlöscher, über den Defibrillator bis hin zum Auto überall eingesetzt. ARM pflegt mit ARM GCC die aktuelle gcc-Kollektion von Compiler zusammen mit der gnu-Toolchain. Insbesondere steht dadurch der aktuelle g++ Compiler für C++ zur Verfügung. Dieses Paket, das immer häufiger nachgefragt wird, pflegt ARM für ihre Prozessor-Plattform, der Default-Architektur für die Embedded-Programmierung.
Woher kommen die Halbwahrheiten? Ich denke, es gibt viele Gründe.
Alte C++-Compiler
Wissen, das auf den alten C++-Compiler basiert, die im letzten Jahrtausend verwendet wurden. Diese setzen zwar den C++-Standard richtig um, besaßen aber noch deutliches Optimierungspotential.
Ausbildungsdefizite
Zum einen lernen viele Embedded-Programmierer nur die Programmiersprache C, zum anderen verhindert der permante Zeitdruck sich auf ein neues Abenteuer einzulassen.
Verlust des Expertenstatus
Es ist schon ein mutiger Schritt für einen hoch geschätzten C-Experten, sich aus seiner Wohlfühlzone zu verabschieden und am nächsten Tag als C++-Anfänger aufzuwachen.
Bestehende Codebasis in C
Typischerweise ist die bestehende Codebasis in C. Daher ist es natürlich naheliegend, einen Bug in C zu fixen oder ein neues Feature in C zu implementieren.
Viele C-Experten
Es gibt viele C-Experten. Dies sind die Entwickler, die die Neuen einlernen und häufig aufgrund ihrer Erfahrung Führungsaufgaben besitzen.
Fluch der Monokultur
Ich nehme die Embedded Programmierung häufig als Monokultur wahr. In ihr gibt es nicht die Variabilität der Werkzeuge, wie ich sie 15 Jahre im Consulting-Bereich für die Automobilindustrie erfahren haben. Während ich als Consultant gut 10 Programmiersprachen eingesetzt habe, reduziert sich die Anzahl meiner verwendeten Programmiersprachen im Embedded-Bereich auf drei.
Druck der Standards
Es gibt viele Standards oder Regularien, die es in der Embedded-Programmierung umzusetzen gilt. Den Mut zur Innovation nehme ich indirekt proportional zum Druck der Standards und Regularien wahr.
Mangelndes Verständnis von C++
Vielen Entwicklern mangelt es zum einen am Verständnis des klassischen C++98, zum anderen vor allem am Verständnis des modernen C++11.
Das Vermitteln von Wissen zu modernem C++ ist Rainer Grimm eine Herzensangelegenheit.
(Bild: Rainer Grimm, Modernes C++)
Mir ist klar, dass ich mit einigen Aussagen dieses Artikels gehörig polarisiert habe. Wenn es aber der Sache dient, Interesse an den großartigen Features für die C++ Entwicklung in der Embedded-Programmierung zu wecken, will ich mich gern dem Gegenwind stellen. Im nächsten Artikel werde ich den Mythen die Fakten gegenüberstellen. Wertvolle Hilfe wird mir der Technical Report on C++ Performance geben, der auf klassischem C++ (C++98) basiert.
Treffen Sie die Experten der Branche in Sindelfingen
Europas Leitkongress für Embedded Software Professionals
Jedes Jahr im Dezember treffen sich über 1.200 Professionals, um sich über aktuelle Technologien und Methoden zu informieren, Trends zu diskutieren sowie die Weichen für die Zukunft zu stellen.
In 14 Seminaren, 95 Vorträgen und 3 Keynotes warten fachlich fundierte und praxisnahe Inhalte auf die Teilnehmer des ESE Kongress. Der Kongress ist die ideale Plattform, um sich über moderne Methoden des Software Engineering und den Stand der Technik zu informieren. Melden Sie sich an und werden Teil der Embedded-Software-Community.
* Rainer Grimm ist seit vielen Jahren als Softwarearchitekt, Team- und Schulungsleiter tätig. In seiner Freizeit schreibt er gerne Artikel zu den Programmiersprachen C++, Python und Haskell, spricht aber auch gerne auf Fachkonferenzen. Auf seinem Blog Modernes C++ (heise Developer) beschäftigt er sich intensiv mit seiner Leidenschaft C++. Seit 2016 steht er auf selbstständigen Beinen. Insbesondere das Vermitteln von Wissen zu modernem C++ ist ihm eine Herzensangelegenheit. Seine Bücher "C++11 für Programmierer", "C++" und "C++-Standardbibliothek" für die "kurz und gut"-Reihe sind beim Verlag O'Reilly erschienen. Seine englischsprachigen Werke "The C++ Standard Library", "Concurrency with Modern C++" und "C++20" sind in mehrere Sprachen übersetzt worden. Im April erscheint sein englischsprachiges Buch zu den "C++ Core Guidelines" bei Addison-Wesley.
(ID:48655120)
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel Communications Group GmbH & Co. KG, Max-Planckstr. 7-9, 97082 Würzburg einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von redaktionellen Newslettern nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung, Abschnitt Redaktionelle Newsletter.