Kontakt

Leonie Roelle

+49 / 931 / 418-2269

leonie.roelle@vogel.de

Embedded Programmierung mit modernem C++

Warum modernes C++ die Antwort auf die Herausforderung der embedded Softwareentwicklung ist.

Drucken weiterempfehlen

Zum Thema

Embedded Programmierung ist eine der Domänen für modernes C++. Daher verwundert das Zitat von Bjarne Stroustrup zu modernem C++ nicht: „... make C++ even better for embedded system programming...". Bietet C++ zum einen den Durchgriff auf die Hardware, bietet C++ zum anderen Abstraktion an, um komplexe Systeme zu entwickeln. Insbesondere mit C++11 erhält C++ noch mehr mächtige Features für die embedded Programmierung. Das sind Features wie die Move-Semantik, die es erlaubt, große Objekte billig zu verschieben statt teuer zu kopieren, Features wie constexpr-Funktionen, die es ermöglichen, teure Berechnungen auf die Compilezeit zu verlagern oder Features wie der neue Container std::array, der das Beste aus std::vector und dem C-Array vereint.

Ziele

In dem Seminar erlernen Sie die Vorteile von modernem C++ in der embedded Programmierung. Dabei lernen Sie zuerst die Anforderungen an die embedded Programmierung und die Antworten darauf in C++ . Diese sind:
  • Sicherheitskritische Systeme
  • Hohe Performanz
  • Eingeschränkte Ressourcen
  • Mehrere Aufgaben gleichzeitig

1. Seminartag

Sicherheitskritische Systeme
  • Vereinheitlichte Initialisierung mit {} überall anwenden und dadurch die heimliche Verengung von Datentypen vermeiden
  • Automatische Typableitung kennen lernen um Refaktoring von Code zu unterstützen und Variablen immer zu initialisieren
  • Aufzählungen mit Gültigkeitsbereich als typsichere Variante zu klassischen Aufzählungen kennen lernen
  • Mit nullptr Zeiger die Mehrdeutigkeiten der Zahl 0 und dem Makro NULL verhindern
  • Benutzerdefinierte Literale einsetzen um Zahlen mit Einheiten zu verwenden
  • Zusicherungen an den Code mit static_assert vom Compiler prüfen lassen

2. Seminartag

  • Hohe Performanz
    • Selbst optimierenden Code mit Type-Traits implementieren
    • Konstante Ausdrücke mit constexpr verwenden um teuere Berechnung auf die Compilezeit zu verschieben
    • Durch den Umstieg von geordnete auf ungeordnete assoziative Container die Applikation deutlich beschleunigen
    • Templates
      • Vermittlung der Grundlagen
      • Vorteile von Templates vorstellen
      • Vergleich von statischem Polymorphismus (Templates) mit dynamischen Polymorphismus (Objekt-Orientierung)
    • Eingeschränkte Ressourcen
      • Move-Semantik einsetzen um
        • Teures Kopieren durch billiges Verschieben zu ersetzen
        • Daten nur dann zu erzeugen, wenn es unbedingt notwendig ist
        • Daten zu verschieben, die nicht kopiert werden können
      • Perfekt Forwarding um Funktions-Argumente identisch weiterzureichen
      • Speicherverwaltung
        • Den Einsatz von new und delete besser verstehen
        • placement new für besondere Einsatzzwecke verwenden
        • Speicherlöcher durch placement new finden
      • Den neuen Container std::array kennen lernen, der die Speicher- und Laufzeitcharakteristik des C-Arrays mit dem Interface des C++-Vektors verbindet
      • Smart Pointer
        • Exklusive Besitzverhältnisse mit std::unique_ptr
        • Geteilte Besitzverhältnisse mit std::shared_ptr
        • Zeitweise Besitzverhältnisse mit std::weak_ptr
        • Performanz- und Ressourcenvergleich der Smart Pointer

3. Seminartag

  • Mehrere Aufgaben gleichzeitig
    • Das Speichermodell
      • Sequenzielle Konsistenz verstehen
      • Atomare Datentypen kennen lernen
    • Threads
      • Erzeugen eines Threads
      • Lebenszeit eines Threads
      • Datenübergabe an einen Thread
    • Gemeinsame von Threads verwendete Daten
      • Schutz mit Mutexen
      • Schutz mit Locks
    • Daten thread-sicher initialisieren
      • Konstanten Ausdrücken
      • Die Funktion std::call_once und dem Flag std::once_flag
      • Statischen Variablen
    • Thread lokale Variablen
    • Bedingungsvariablen
      • Synchronisation von Threads
      • Gefahren von Bedingungsvariablen
    • Task
      • std::async
      • std::packaged_task
      • std::promise und std::future

Seminarmethoden

Zuerst vermittelt Ihnen der Referent die notwendige Theorie, die Sie dann in praktischen Übungen direkt answenden. Die besonderen C++ Features für die embedded Softwareentwicklung werden vom Referenten in den Kontext der Softwareentwicklung mit modernem C++ eingebunden. Zu allen Übungen erhalten Sie natürlich die Musterlösungen.
Bitte beachten Sie, dass Sie für das Seminar einen Laptop benötigen, auf dem ein aktueller C++ Compiler (mind. C++11) installiert ist.

Zielgruppe

Jeder, der über Grundkenntnisse in C++ verfügt und diese mit modernem C++ erweitern möchte.

Referent

Rainer Grimm

Modernes C++: Training, Coaching und Technolgieberatung

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 auf Fachkonferenzen. Auf seinem Blog Modernes C++ beschäftigt er sich intensiv mit seiner Leidenschaft C++. Seit einem Jahr 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. Sein englischsprachiges Werk "The C++ Standard Library" hat er bei Leanpub veröffentlicht.

Termine

Stuttgart

20.03.2018 | 10:00 - 18:00 Uhr
21.03.2018 | 09:00 - 17:00 Uhr
22.03.2018 | 09:00 - 17:00 Uhr

Zur Anmeldeseite
Frankfurt am Main

21.08.2018 | 10:00 - 18:00 Uhr
22.08.2018 | 09:00 - 17:00 Uhr
23.08.2018 | 09:00 - 17:00 Uhr

Zur Anmeldeseite
München

06.11.2018 | 10:00 - 18:00 Uhr
07.11.2018 | 09:00 - 17:00 Uhr
08.11.2018 | 09:00 - 17:00 Uhr

Zur Anmeldeseite
Inhouse

Ihr individueller Termin

Jetzt anfragen

Organisation

Seminarnummer:

116

Fragen, Wünsche & Anregungen

Leonie Roelle
Event Managerin
E-Mail: leonie.roelle@vogel.de
Tel:+49 / 931 / 418-2269

Teilnahmegebühr:

1.490,00 € zzgl. MwSt.

In der Teilnahmegebühr sind die Unterlagen, die Getränke, die Pausenerfrischungen, das Mittagessen sowie ein Teilnahmezertifikat enthalten.
Rabattregelung: Wenn Sie gleichzeitig zwei oder mehr Anmeldungen vornehmen, erhalten Sie ab der zweiten Buchung 10 % Rabatt auf den Preis.


Maximale Teilnehmerzahl

Um ein optimales Lernergebnis zu erzielen und den Austausch zwischen Referent und Teilnehmern sowie den Teilnehmern untereinander zu gewährleisten, beträgt die maximale Teilnehmerzahl für dieses Seminar 12 Personen.


Zufriedenheitsgarantie

Sollten Sie bis zur ersten Mittagspause feststellen, dass das Seminar Ihren Erwartungen nicht gerecht wird, dann können Sie es verlassen. Die bereits gezahlte Gebühr erstatten wir Ihnen dann zurück. Bitte informieren Sie uns in diesem Fall umgehend.

Zur Anmeldeseite
Termine

20.03.2018 - 22.03.2018Stuttgart

21.08.2018 - 23.08.2018Frankfurt am Main

06.11.2018 - 08.11.2018München


Kein passender Termin dabei?
Hier
Inhouse-Seminar anfragen.

Teilnahmegebühr

1.490,00 € zzgl. MwSt.

Seminarempfehlung
Veranstaltet von

Kontakt

Bitte sprechen Sie mich an, wenn Sie Fragen, Anregungen, Lob oder Kritik zu unseren Seminaren haben.

Leonie Roelle
Projektleitung Seminare
Tel: +49 / 931 / 418-2269
E-Mail: leonie.roelle@vogel.de

Bitte geben Sie Ihre Kontaktdaten ein:

* Pflichtfeld