C++1x für eingebettete Systeme

Summary

  • : 2021 in planning
  • : 09:00 – 17:00
  • : Ludwigsburg, NH Hotel
  • : DE
  • : Andreas Fertig
  • : 2021 in planning
  • : 2021 in planning
SUMMARY

Andreas Fertig IMAGE Andreas Fertig
Andreas Fertig ist Geschäftsführer der Unique Code GmbH, die Schulungen und Beratung für C++ anbietet mit dem Spezialgebiet eingebettete Systeme...

:

+49 (0)711 138183-0

 

E-Mail:

seminare@qa-systems.de

TERMS AND CONDITIONS

+++Wir planen derzeit die Seminare als Hybrid-Veranstaltung anzubieten. Das bedeutet, wir planen eine Teilnahme sowohl vor Ort (Präsenz-Teilnahme), sofern es die aktuelle Situation zulässt, als auch eine virtuelle Teilnahme (Online-Teilnahme) zu ermöglichen.

Bitte geben Sie bei Ihrer Anmeldung Ihre Präferenz für eine der beiden Möglichkeiten an. Dies können Sie über das Feld „Anmerkungen“ im Online-Anmeldeformular unter Angabe ‘Präsenz-Teilnahme’ bzw. ‘Online-Teilnahme’ vornehmen. Vielen Dank!+++

Überblick

Die Flexibilität der Sprache C++ hat sich mit den Neuerungen durch den Standard C++11 und seinen Nachfolgern noch weiter verbessert. Einige dieser Neuerungen sind für eingebettete Systeme besonders interessant. Berechnungen von der Lauf- in die Compile-Zeit zu verschieben ist jetzt möglich. Dadurch entsteht ein kleinerer Code und eine erhöhte Geschwindigkeit.

Sind Sie es außerdem leid, ++i zu schreiben und sich immer noch gelegentlich mit > und >= zu vertun? C++1x unterstützt Sie, indem es wiederkehrende Schreibarbeiten dieser Art dem Compiler überlässt. Als Resultat gewinnen Sie mehr Zeit um wirklich anspruchsvollen Code zu schreiben.

In diesem eintägigen Seminar erfahren Sie, wie C++1x Sie unterstützt, um einen schnelleren und robusteren Code zu schreiben.

Inhalt

In diesem Seminar lernen Teilnehmer C++1x mit Praxisbezug zu eingebetteten Systemen kennen und anwenden. Obwohl C++1x nicht speziell für eingebettete Systeme entwickelt wurde, enthält die Sprache verschiedene wertvolle Eigenschaften für solche Systeme. Die Teilnehmer erhalten das Wissen, um bewusster Code-Größe oder Performance zu optimieren.

Ein Beispiel ist static_assert. Mit dieser Funktion, ist es möglich Bedingungen bereits zur Compile-Zeit zu überprüfen. Berechnungen können mit constexpr-Funktionen ebenfalls bereits zur Compile-Zeit erledigt werden. In beiden Fällen wirkt sich die Anwendung positiv auf das Laufzeitverhalten und die Code-Größe aus. Der Einsatz von Move-Semantics verspricht bei Kopieroperationen schneller und effizienter zu sein. Teilnehmer lernen, wie Move-Sematics funktionieren, was bei ihrem Einsatz zu beachten ist und in welchen Situationen das Feature vom Compiler deaktiviert wird.

Die mit C++11 eingeführten variadischen Templates werden erklärt. Diese sind u.a. für Softwareentwicklung im MISRA-Umfeld interessant, da sie deterministisch eine variable Anzahl von Argumenten entgegennehmen können. Thematisiert wird auch, wie es mit constexpr möglich ist einigen Code nicht nur zur Compile-Zeit zu instantiieren, sondern auch direkt dort zu evaluieren und nur das Ergebnis im resultierenden Binary zu haben.

Im Verlauf des Seminars lernen die Teilnehmer, welche neuen Features von C++1x sie nutzbringend in ihre Code-Basis aufnehmen können. Komplexe Probleme lassen sich durch die erweiterte Unterstützung des Compilers einfacher formulieren. Der neu entstandene Code wird dadurch oft robuster und weniger fehleranfällig. Alle Teilnehmer, die mit einem älteren Compiler ohne C++1x arbeiten, erhalten Tipps und Anregungen, wie sie neue Features in ihrem Code verwenden können.

Nach dem Seminar schreiben Teilnehmer klareren und präziseren Code. Sie werden u. a. Code-Reviews einfacher und sicherer bestehen.

Zielgruppe/Voraussetzung

Entwickler oder Architekten von C++ basierten Systemen. Gute Kenntnisse der Sprache C++ sind vorausgesetzt. Konzepte und Neuerungen aus C++1x werden eingeführt.

Die Themen in Stichworten

  • Sauberer und moderner C++ Code
  • Dinge zur Compile-Zeit erledigen: constexpr, constexpr if
  • Die richtige Wahl zur richtigen Zeit: Präprozessor, inline oder constexpr
  • ROM-barkeit
  • Interessante C++1x Elemente für eingebettete Systeme: override, auto, literal-operator, alignof, alignas
  • Einfluss von C++1x auf Performance und Code-Größe
  • GSL als Unterstützung: narrow_cast, not_null, finally
  • Templates: die richtige Dosis
  • Template-Arten (Klassen-, Funktions-, Variablen-Templates)
  • Variadische Templates
  • Fold Expressions
  • Class Template Argument Deduction (CTAD)
  • Verwendung der neuen initializier-Listen
  • Neue Features in eine existierende Code-Basis portieren

Format

Interaktive Vorlesung. Die Teilnehmer sind herzlich eingeladen, während des Seminars mit dem Kursmaterial zu experimentieren.

Testimonials

“Verständliche Erklärung & kollegiale Atmosphäre :-)”
N.N.

“Andreas Fertig ist sehr kompetent und vermittelt das Thema in einer verständlichen und unterhaltsamen Art. Merci!”
T. Kopp, Securiton AG