Bjarne Stroustrups FAQ zu C++11 bringt es klar auf den Punkt. Eines der Ziele von C++11 war es, das C++ zu einer noch besseren Sprache für die embedded Programmierung wird.
Oder in den Worten von Bjarne Stroustrup, Erfindert von C++: "Improve performance and ability to work directly with hardware -- make C++ even better for embedded systems programming and high-performance computation."
Diese Aussage beschäftigte mich sehr. Wechselte ich doch zu diesem Zeitpunkt von der Softwareentwicklung im Middlewarebereich zur Softwareentwicklung im embedded Bereich. Nun war ich für die Software auf Defibrillatoren verantwortlich. Nun galt meine Suche der Feature in C++11, die besonders geeignet für embedded Programmierung sind. In meinen Vorträgen in Berlin, München oder Sindelfingen stellte ich das Ergebnis meiner Suche vor.
Mittlerweile hat sich meine Wahrnehmung der neuen Sprachmerkmale wie zum Beispiel benutzerdefinierte Literale, der Type-Traits Bibliothek, konstante Ausdrücke, die soviel für die embedded Programierung versprechen, deutlich verändert. Diese sind so großartig, das sie in die Werkzeugbox jedes professionellen C++-Programmierers gehören. Die embedded Programmierung hat darüber hinaus mit strengeren Randbedingungen zu kämpfen, so dass die im Laufe dieses Blogs zur "Embedded Programmierung mit C++" vorgestellen Feature in der embedded Programmierung besonders wertvoll sind.
Wie komme ich zu dieser Wahrnehmung? Ganz einfach. Es gibt kein typisches embedded System. Die Vielfalt ist einfach zu groß. So gibt es RFID Transponder, die Baugrößen von wenigen Millimeter besitzen, Herzschrittmacher, die für lange Zeit zuverlässig ihre Arbeit verrichten müssen, Defibrillatoren, die aus mehreren Boards und noch mehreren CPUs bestehen und mehrere Jahre auf ihren Einsatz warten müssen, oder Autos, die mittlerweile über hundert Steuergeräte besitzen. Daher sind die Grenzen zwischen embedded Systemen und den weiteren Systemen wie der Spieleentwicklung oder auch der systemnahen Entwicklung, in den C++ typischerweise verwendet wird, fließend.
Was zeichnet nun die embedded Programmierung aus? Embedded Programmierung ist die intensiverere Programmierung. Intensiver, da sie häufig mit strengeren Randbedingungen zu kämpfen hat:
- Hohe Performanzanforderungen bis hin zu Echtzeichtanforderungen
- Sicherheitskritische Systeme
- Eingeschränkte Ressourcen wie Speicher und CPU-Power
- Mehrere Aufgaben, die gleichzeitig ausgeführt werden müssen
Ich habe lange damit gekämpft, wie ich die vielen neuen Feature strukturiert darstellen kann. Zumal viele der vorgestellten Sprachmerkmale abhängig von dem verwendeten C++-Standard sind. Hier ist mein Plan. Die Feature sind Antworten auf die Anforderungen, die typisch für die embedded Programmierung sind. Diese Anforderungen geben mir die Gliederung vor.
- Hohe Sicherheitsanforderungen
- Performanz zählt
- Sorgfältiger Umgang mit Ressourcen
Darüber hinaus werde ich noch explizit darstellen, ab welcher C++-Version das vorgestellte Sprachmerkmal zur Verfügung steht.
Bevor ich loslege, noch ein kleiner Einschub. Im Lauf meiner Zeit als embedded Softwarewareentwickler habe ich viele Mythen rund um C++ gehört. Diesen Mythen stelle ich im nächsten Artikel die Fakten im übernächsten Artikel gegenüber.
Go to Leanpub/cpplibrary "What every professional C++ programmer should know about the C++ standard library". Hole dir dein E-Book. Unterstütze meinen Blog.
Weiterlesen...