C++ Schulung: Modernes C++ - Wenn es auf Effizienz ankommt


In dieser Schulung lernen Sie modernes und effizientes C++ zu schreiben, in Situationen wo Dinge wie Laufzeit oder Code-Größe zählen. Entdecken Sie Leistungsoptimierung, Speicherverwaltung und erweiterte Funktionen für robuste Systeme.

Teilnehmende lernen

  • Datenlayout und Caching Verhalten kennen
  • static und inline korrekt anwenden
  • effizienten Code dank CTAD schreiben

Dauer

3 Tage

Zielgruppe

Entwicklerinnen und Entwickler von C++ basierten Systemen. Gute Kenntnisse der Sprache C++ sind vorausgesetzt

Beschreibung

Obwohl wir in einer Zeit leben, in der Computer immer mehr Ressourcen haben, gibt immer noch Systeme, bei denen Speicher, CPU oder andere Hardware eingeschränkt sind.

Um auch für solche Projekte guten Code zu erhalten, ist es hilfreich zu wissen, wie bestimmte Funktionen in C++ funktionieren. In dieser Klasse sprechen wir über die neuen Funktionen seit C++11 und wie sie in Code übersetzt werden.

Dies gibt Ihnen ein gutes Verständnis dafür, was jede Funktion kostet. Dazu verwenden wir C++ Insights und den Compiler Explorer, um einen Einblick in die Welt des Compilers zu erhalten.

Neben der Steuerung des resultierenden Codes werden wir auch versuchen, Dinge mit weniger Code zu implementieren. Dies hilft, die Personalressourcen bei Wartung und Debugging zu schonen.

Agenda

  • Kleinere Sprachfunktionen
    • Uniforme Initialisierung
    • std::initializer_list - Im Hintergrund
    • Platzhalterdatentyp für Variablen: auto
    • range-based for-Schleifen
    • if & switch mit Initialisierung
  • Gute Performance erhalten
    • Daten in der richtigen Reihenfolge verarbeiten
    • alignas & alignof
    • Padding
    • Die Wichtigkeit von Caching
    • Wie noexcept funktioniert
    • static oder inline
    • Standardargument
    • CTAD oder make_NNN-Funktion?
    • Übergabe per Kopie oder Referenz
  • Berechnungen zur Compile-Zeit
    • Kompilierzeit vs. Laufzeit
    • constexpr
    • Optimierung vs. Garantie
  • Lambdas
    • Lambda Ausdrücke
    • Lambda Erfassungen
    • Generische Lambdas
    • Lambdas angewandt
    • Callables in C++
    • Lambdas - Platz sparen
  • Schnelle Templates
    • Variadische Templates
    • Faltausdrücke
    • Variablen Templates
    • CTAD
    • constexpr if oder enable_if
    • Rekursion vs. Faltausdrücke
    • Verbessern Sie die Kompilierungszeiten mit Variablen-Templates
    • extern template
  • Move Semantik
    • Die Wertekategorien
    • Move Semantik: Verschieben oder Duplizieren
    • std::move
    • Move-Semantik & die STL
    • Abhängigkeiten von spezielle Mitgliedsfunktionen
    • Die STL, move, und eigene Klassen
    • Perfect Forwarding
    • Noch stärkere Nutzung von Move Semantik: Ref-Qualifizierer
  • Die Kosten von Abstraktion
    • Lambda vs. Funktion
    • static
    • std::unique_ptr
    • std::shared_ptr - Backstage
    • std::weak_ptr - Backstage
  • Die Standard Template Library effizient nutzen
    • Allgemeine STL-Richtlinien
    • std::vector: push_back oder emplace_back
    • Daumenregeln für STL Container
    • std::string_view

Neugierig, wie meine C++-Kurse ablaufen?

Möchten Sie sich vorab ein besseres Bild von mir und meinem Unterrichtsstil machen? Dann lade ich Sie herzlich ein, diesen Ausschnitt einer Aufzeichnung eines einstündigen Online-Workshops anzusehen.

Mit der Schulung erhalten Sie

  • Ein qualitativ hochwertiges Handout als farbiges PDF, das alle Verweise und eine Liste der Akronyme enthält. Sodass Sie nach dem Training jederzeit nachlesen können.
  • Den Quell-Code für die Übungen inklusive Musterlösungen als ZIP-Datei.
  • Teilnahmebescheinigung für Ihren Lebenslauf.
  • Eins meiner Bücher kostenlos, damit Sie Ihr Wissen vertiefen können.
Notebook C++ - Tips and Tricks with Templates
Notebook C++ - About move semantics
Programming with C++20

Was Sie von meinen Schulungen erwarten können.

Mein Motto lautet "Schreibe einzigartigen Code.". Ich mag es, den Code auf die notwendigen Teile zu reduzieren. Die Vervielfältigung kann durch Templates oder Funktionen erfolgen, sodass am Ende jeder einzelne Code eindeutig zur Codebasis beiträgt. Nur der einmalige Code reduziert die Wartung. Er gibt Ihnen mehr Zeit, sich auf Ihre nächsten Kundenbedürfnisse zu konzentrieren.

Um in der Praxis einmaligen Code zu schreiben, haben alle Schulungen einen hohen praktischen Anteil. Impulse und Präsentationen ergänzen Übungen aus der Praxis. In jedem Fall sind meine Sitzungen sehr interaktiv. Ich höre gerne, was die Teilnehmer denken, um die richtigen Tipps zu geben. So entsteht ein Schulungserlebnis, in dem jeder Teilnehmer Neues lernt und eigene Lernerfolge erzielt. Die Trainingsbestandteile bauen didaktisch und inhaltlich aufeinander auf. Und Fragen beantworte ich jederzeit.

Die Live-Demo-Teile sind ein wesentlicher Bestandteil meines Unterrichts. Ich nutze dort die folgenden zwei Tools:

Schulung jetzt anfragen

Nicht die richtige Schulung?

Sie haben die passende Schulung nicht gefunden oder wünschen eine Modifikation? Gerne erstelle ich Ihnen eine Schulung für Ihre Bedürfnisse. Kontaktieren Sie mich einfach mit Ihrem Anliegen: Jetzt kontaktieren

Soll es lieber Englisch sein? Ich biete alle meine Schulungen auch in Englisch an.

Informiert bleiben

Von Zeit zu Zeit biete ich eine offene Schulung an. Diese findet aktuell online via Zoom über 5 Tage jeweils ca. 16:00 - 20:00 statt. Bei Interesse können Sie sich für Updates dazu hier eintragen.

Diese Felder sind erforderlich.