Embedded C++ Aufbaukurs

Embedded Programme sind oft durch besondere Einschränkungen (wie z.B. kleiner Speicher, man darf keinen Heap verwenden) und Anforderungen (hohe Geschwindigkeit, hohe Zuverlässigkeit usw.) gekennzeichnet.

Traditionellerweise werden embedded Programme oft in C geschrieben. Mit der Weiterentwicklung der Compiler haben die meisten Sprachelemente von C++ heute in Bezug auf Codegröße und Geschwindigkeit keine Nachteile mehr gegenüber C. Durch die neuen C++-Standards (C++11, C++14 und C++17) wurden neue Sprachelemente in C++ aufgenommen, die zu schnellerem und kleinerem Code führen als die C-Alternativen.

Eines der wichtigsten Argumente für C++ ist aber, dass embedded Programme immer komplexer und größer werden. Diese Komplexität ist mit den Mitteln von C oft nur noch schwer zu bewältigen. Hier bietet C++ enorme Vorteile, die Entwicklungskosten sparen und zur Zuverlässigkeit der Anwendungen beitragen.

Ziele des Seminars:

In diesem Seminar werden weiterführende Sprachelemente von C++ unter dem Gesichtspunkt der besonderen Anforderungen an embedded Systeme vorgestellt und mit C-Alternativen verglichen. Ein Schwerpunkt liegt auf den neuen Sprachelementen von C++11, C++14 und C++17, die für embedded Systeme viele Vorteile haben. Zusammen mit den Sprachelementen werden auch die AUTOSAR C++14 und MISRA Regeln für sicherheitsrelevante Systeme vorgestellt.

Programm

  1. Embedded Systeme
    • Einsatzbereiche und Besonderheiten
    • spezielle Anforderungen bei Embedded Anwendungen
    • Überblick: C und C++ im Vergleich
  2. Namespaces
  3. Exception-Handling
    • try/catch, throw undstack unwinding
    • Exception Dispatcher
    • RAII
    • noexcept
  4. Containerklassen der C++-Standardbibliothek
    • vector, sequentielle Container, Iteratoren
    • Die bereichsbasierte for-Schleife
    • Allokatoren und polymorphic memory ressources (pmr)
    • Assoziative Container (set, map, multimap und Hash-Container)
    • Zusammenfassungen von Datentypen (pair, tuple)
    • std::optional und std::variant, Zustandsautomaten
  5. Dateibearbeitung mit den Streamklassen
  6. Funktoren, Funktionsobjekte und Lambda-Ausdrücke
  7. Templates
    • Funktions-Templates
    • Klassen-Templates
    • type traits
    • Variadische Templates
    • Concepts
  8. STL-Algorithmen und Lambda-Ausdrücke
    • Iteratoren
    • Parallele Algorithmen der Standardbibliothek
  9. Zeiten und Kalenderdaten mit std::chrono
  10. Multithreading
    • Funktionen mit Lambda-Ausdrücken als thread starten
    • future und promise
    • Kritische Abschnitte
  11. Zeiger und Smart Pointer
    • Schwächen von Zeigern im Stil von C
    • Gemeinsamkeiten von shared_ptr und unique_ptr
    • shared_ptr
    • unique_ptr

Weiteres:

Zielgruppe: Software-Entwickler in Firmen, die C++ für den professionellen Einsatz von embedded Anwendungen lernen wollen.

Sprache: Das Seminar kann in Deutsch oder Englisch gehalten werden.

Voraussetzungen: Dieser Kurs richtet sich an erfahrene C-Programmierer mit Kenntnissen der objektorientierten Programmierung im Umfang des Embedded C++ Grundkurses.

Unterrichtsstil: Vortrag mit vielen Beispielen, die das Wesentliche auf den Punkt bringen. Eine ausgewogene Verbindung von Theorie und Praxis.

  • Zu Beginn eines neuen Themas wird zunächst ein Überblick über die Einsatzmöglichkeiten, Grundideen und die Syntax gegeben. Diese werden an sorgfältig ausgewählten und bewährten Beispielen illustriert.
  • Das Verständnis wird oft durch den Vergleich ähnlicher (auch älterer) Sprachelemente und ihrer Vor- und Nachteile vertieft. Dabei werden oft “best practises” empfohlen.
  • Falls die Teilnehmer ihr Wissen selbständig vertiefen wollen: Das Manuskript enthält zahlreiche praxisnahe Übungsaufgaben. Auf Wunsch können nach vorheriger Absprache auch Aufgaben aus der Arbeit der Seminarteilnehmer behandelt werden.

Flexibilität: Falls sich im Lauf des Seminars  zeigt, dass Grundlagen bei den Teilnehmern fehlen oder weitere Themen gewünscht werden, kann die Agenda auch noch während des Seminars an die Wünsche der Teilnehmer angepasst werden.

Manuskript: Ausführliche und detaillierte Schulungsunterlagen (ca. 200 Seiten) – Vollständiger Text, keine Powerpoint Folien, die nur Stichworte enthalten. Deshalb können die Kursunterlagen auch als Referenz bei der Arbeit verwendet werden.

Ort und Zeit: Dieses Seminar wird als Firmenseminar (inhouse) angeboten.

Dauer: 5 Tage

Dozent: Prof. Richard Kaiser führt seit vielen Jahren Seminare für Firmen durch, vor allem über Software-Entwicklung und die Programmiersprachen C#/C++/C. Zu seinen Kunden gehören renommierte Weltkonzerne und kleine und mittelständische Unternehmen. Er ist der Verfasser der Bücher „C++ mit Visual Studio 2017“ und „C++ mit Microsoft Visual C++ 2008“. Er war viele Jahre Mitglied im DIN Normierungsausschuss Informationstechnik NI-22.

Öffentliche Seminare von Prof. Kaiser finden Sie bei der Technischen Akademie Esslingen.

Beurteilungen der Seminare durch die Teilnehmer finden Sie hier.

Kontakt: Richard Kaiser, Schwärzlocher Straße 53, 72070 Tübingen, .img, .img@.img