**Wählen Sie auf der Anmeldeseite, ob Sie virtuell oder präsenz teilnehmen möchten.
Design Patterns haben sich über mehrere Jahrzehnte als nützlich erwiesen. Das Wissen über Entwurfsmuster verhilft immer noch dabei, robuste und entkoppelte Systeme zu entwickeln. Allerdings hat modernes C++ die Art und Weise, wie wir C++ verwenden, über Design nachdenken und Lösungen implementieren, grundlegend verändert. Dieser Kurs erläutert Design mit modernem C++ und die modernen Formen der klassischen Entwurfsmuster. Er bietet Ratschläge zu nachhaltigem und wartbarem Design, das in Hinblick auf Kopplung, Benutzerfreundlichkeit und Performance dem alten Design überlegen ist. Unter anderem wird es die folgenden Fragen beantworten: - Wie sieht guter C++ Code mit einem Minimum an Abhängigkeiten aus? - Warum versagt klassisches, auf Vererbungshierarchien basiertes C++ Design so häufig? - Welche Vorteile bietet Design basierend auf "Value Semantics"? - Wie werden die klassischen Design Patterns in modernem C++ realisiert? - Was sind die Alternativen zu den klassischen Design Patterns? Nach diesem Kurs werden die Teilnehmer ... - ... einen Eindruck von den modernen Alternativen der klassischen Design Patterns haben; - ... Wissen über die neuesten Design-Techniken gewonnen haben; - ... verstehen, wie std::function, std::any, und Ranges funktionieren; - ... die üblichen Fallstricke bei Vererbungshierarchien vermeiden; - ... die Wichtigkeit der "Value Semantics" verinnerlicht haben. Inhalt: - Die Risiken von Vererbungshierarchien - Klassische Design Patterns (Command, Prototype, Strategy, Visitor, Factory, External Polymorphism) - Moderne C++ Design Patterns (Type Erasure, Expression Templates, Policy Based Design)
C++20 ist der nächste große Meilenstein von C++. Die dazugehörigen Sprachmittel und Bibliotheken werden bereits nach und nach in Visual C++ integriert. C++20 ist groß: Sprachmittel wie Concepts, Ranges, Modules, und Coroutinen werden die Programmierung nachhaltig verändern. Daneben werden neue Operatoren eingeführt und sind immer mehr Features zur Compile-Zeit verwendbar. Neue Bibliotheken für Kalender/Zeitzonen, Text-Formatierung, Teilmengen und etliche Features für Concurrency erleichtern die Programmierung ungemein. Und jede Menge kleine Features runden Sprache und Bibliothek weiter ab. Dieser ganztägige Workshop gibt einen ausführlichen Überblick über die Neuerungen von C++20. Nicolai Josuttis, der an der Standardisierung als deutscher Vertreter aktiv beteiligt war, diskutiert dabei Hintergründe und zeigt an konkreten Beispielen auf, inwiefern sich das Programmieren mit C++ im Entwickleralltag verändern wird.
Ich möchte mit einer Frage beginnen: Warum benötigen wir Best Practices wie die C++ Core Guidelines für modernes C++? Meine Antwort besteht aus drei einfachen Beobachtungen: C++ ist anspruchsvoll für den C++ Anfänger, herausfordernd für den erfahrenen C++ Entwickler und wird darüber hinaus in sicherheitskritischen Umgebungen verwendet. Best Practices wie die der C++ Core Guidelines erlauben es Code zu schreiben, der per Design typsicher ist, Containergrenzen respektiert und nur auf gültige Variablen zugreift. Die C++ Core Guidelines werden von den weltweiten C++ Experten unter Leitung von Bjarne Stroustrup und Herb Sutter verfasst um umfassen die folgenden Themen: - Philosophie - Interfaces - Funktionen - Klassen und Klassenhierarchien - Enumerations - Ressource Management - Ausdrücke und Anweisungen - Performanz - Concurrency - Error Handling - Konstanten - Templates - C-Style Programmierung - Die Standard Library Variablen zugreift.
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. 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.
Änderungen vorbehalten