Session Details



C++17-Features trickreich kombinieren

Nicolai Josuttis

C++17 ist ein Sammelsurium von vielen kleinen Verbesserungen an der Sprache und der Bibliothek von C++. Wie mächtig dieser Umstieg ist, merkt man aber erst, wenn man all die neuen Features miteinander kombiniert.
Dieser Vortrag zeigt an einigen konkreten Beispielen auf, wie die Kombination von C++17-Features zu einer bemerkenswert verbesserten Programmierung führen kann. Er weist aber gleichzeitig auch auf die ein oder andere damit verbundene Gefahr hin.

C++20 - Die Revolution geht weiter

Rainer Grimm

Mit C++20 steht wieder ein richtiger großer C++-Standard vor der Tür. Concepts, Contracts, die Ranges Bibliothek, Coroutinen und Module werde die Art und Weise, wie wir modernes C++ programmieren, grundlegend neu definieren.
Concepts sind eine Erweiterung von Templates von C++, mit denen sich semantische Kategorien für die Menge der zulässigen Datentypen definieren lassen. Dank Concepts wird das Anwenden und Definieren von Templates deutlich einfacher und ausdrucksreicher.
Contracts definieren Interfaces für Funktionen. Dies Interfaces können aus Vorbedingungen für die Funktionsargumente, Nachbedingungen für das Ergebnis einer Funktion und Zusicherungen während der Ausführung der Funktion bestehen.
Die Ranges Bibliothek erlaubt es, die Algorithmen der Standard Template Library direkt auf den Container anzuwenden, diese mit dem aus der Unix-Shell bekannten Pipe-Operator zu verknüpfen und diese auf unendlichen Datenströmen zu definieren. Mit Couroutinen unterstützt C++20 die asynchrone Programmierung. Damit werden sich in C++20 kooperatives Multitasking, unendliche Datenströme, Event-Schleifen oder auch Pipelines elegant umsetzen lassen.
Module stellen eine Alternative zu Header-Dateien dar und versprechen viele Verbesserung. Die Trennung von Header- und Sourcecodedateien aufzulösen, Präprozessor-Anweisungen zu eliminieren, bessere Kompilierungszeiten zu erzielen und einfacher Pakete zu schnüren.

Debugging C++ Apps mit Beispielen

Matthias Wedemeyer

Fehlersuche ist nach wie vor ein Thema. So gut wie keine Software ist fehlerfrei und die Suche nach einem Fehler kann Minuten, Stunden oder auch Tage in Anspruch nehmen. Gerade bei Fehlern, deren Suche längere Zeit in Anspruch nimmt ist eine gute Vorbereitung und erweiterte Techniken der Fehlersuche entscheidend für den Erfolg. Anhand von verschiedenen Fehlersituationen zeigt diese Session, mit welchen Techniken bei der Fehlersuche vorgegangen werden kann und mit welchen Vorbereitungen in Code selbst die Suche nach Fehlern effektiver gestaltet werden kann.

Fachliche Mandantenfähigkeit in C++ Anwendunge

Matthias Wedemeyer

Schreiben Sie Software, mit welcher Ihre Kunden verschiedene Mandanten/Kunden/Vertriebe verwalten? Benötigen Ihre Kunden in Ihrer Software verschiedene Lösungen für ihre Mandanten? Und Sie wollen keinen Code der Form „wenn Mandant gleich 1 mach dies, wenn Mandant = 2 mach jenes"? Dann sind Sie in dieser Session genau richtig. Wir stellen Ihnen eine Lösungsmöglichkeit vor, wie Sie fachliche Unterschiede zwischen Mandanten abbilden und zugleich neue Mandanten ergänzen können, ohne die bestehende Implementierung anzufassen. Machen Sie Ihre Anwendungen nicht nur technisch sondern auch fachlich Mandantenfähig.

Parallelität mit OpenMP in C++

Michael Klemm

OpenMP?  Ist das nicht dieses Programmiermodell mit Compiler-Direktiven aus dem letzten Jahrtausend?  Wenn Sie das glauben, dann ist dieser Vortrag genau das richtige für Sie.  OpenMP ist seit 1997 das Programmiermodell der Wahl für die Parallelisierung von Anwendungen und Algorithmen aus unterschiedlichsten Bereich, insbesondere aber im High Performance Computing.  Im letzten Jahrzehnt hat sich das Programmiermodel von OpenMP stark verändert.  Mit einem mächtigen Tasking-Modell und heterogener Programmierung haben modernste Programmierkonzepte in OpenMP Einzug gehalten.  In diesem Vortrag zeigen wir, welche Evolution sich bei OpenMP vollzogen hat und zeigen anhand einfacher Beispiele, die Funktionsweise der neuen OpenMP-Direktiven.  Als Schmankerl für C++-Programmierer zeigen wir einen Ausblick auf die derzeit in Entwicklung befindliche OpenMP-Syntax mit C++-Attributes.  Der Vortrag schließt mit einem kurzen Ausblick auf die Zukunft von OpenMP.

Declarative Programming in C++

Frank Mertens

QML führte ein neues Konzept für die Codierung beeindruckender interaktiver Benutzeroberflächen ein: deklaratives Programmieren. Mit dem Aufkommen und der Einführung von C ++ 11 (oder neuer) können die in QML-Anwendungen verwendeten Konzepte ohne großen Aufwand direkt in C ++ verwendet werden. Der Vortrag wird die grundlegenden Konzepte der deklarativen Programmierung (Eigenschaften und Bindungen) vorstellen und zeigen, wie diese Konzepte direkt in C ++ angewendet werden können.

Workshop: C++ Move-Semantik im Detail

Nicolai Josuttis

Mit C++11 wurde Mode-Semantik als ein zentrales Thema eingeführt. Auch wenn dieses Thema "unter der Haube" in erheblichem Umfang genutzt wird, besteht bei vielen Programmierern immer noch ein "ungesundes Halbwissen" dazu. Und da Move-Semantik selbst die Programmierung von einfachsten Klassen mit String-Membern oder Containern beeinflusst, wird damit das Potential für bessere Performance regelmäßig verschenkt.
Dieser Workshop gibt einen Einblick in die Geheimnisse der Move-Semantik und zeigt auf welchen Ebenen man am besten wie davon profitiert. Nach einer ersten Einführung werden die wichtigsten Themen mit den dafür vorgesehenen Sprachmitteln im Detail erläutert. Themen: rvalue referenzen, move(), forward<>(), auto&&, decltype(auto), noexcept, xvalues, move-only Typen.

Anmelden

Workshop: Die Ioda Architecture - Software verständlicher und testbarer strukturieren

Ralf Westphal

Softwarearchitekturen werden an bekannten und beliebten Mustern angelegt. Diese Muster wandeln sich, um Softwarearchitektur noch leichter zu machen. Früher war MVC, dann war Schichtenmodell, heute ist Clean Architektur. Programmiersprachen entwickeln sich und werden besser, Frameworks ebenso, Architekturmuster auch. Sollte man denken. Leider sind die Architekturmuster jedoch steckengeblieben. Sie haben zwei Schritte vorangemacht und das Entwicklerleben vereinfacht. Nun allerdings treten sie auf der Stelle oder erzeugen sogar mehr Komplexität, wo sie reduziert werden sollte. Der Workshop arbeitet funktionale Abhängigkeiten als Kernproblem hinter den klassischen Architekturmustern heraus und stellt den Teilnehmern eine grundlegende Lösung vor - die dann von allen anhand einer Anwendung selbst implementiert wird.

Anmelden

Workshop: C++17 in Visual Studio 2019 - Mit Ausblick auf 2020

Richard Kaiser

Das neue Visual Studio 2019 ist Anfang April 2019 erschienen. Der C++-Compiler setzt den aktuellen C++-17 Standard vollständig um. Die Fülle der Neuheiten seit C++11 ist überwältigend. Sie machen die Programmierung mit C++ einfacher, sicherer, eleganter und effizienter. Wir nehmen die neue Version von Visual Studio zum Anlass, in diesem Workshop einen kompakten Überblick über die C++-Neuerungen seit C++11 zu präsentieren. Themen wie Initialisiererlisten, override, constexpr, if constexpr, benutzerdefinierte Literale, Move-Semantik, Lambda-Ausdrücke, Smart Pointer, variadische Templates, Multithreading, parallele Algorithmen, Filesystem, Module (C++20) usw. werden umfassend dargestellt und an Beispielen illustriert.

Workshop: Embeddded Programmierung mit modernem C++

Rainer Grimm

Embedded Programmierung ist eine der Schlüsseldomänen von modernem C++. Dank C++ können sie direkt mit der Hardware kommunizieren, besitzen aber auch die Abstraktionen, die zum Entwickeln komplexer Systeme notwendig sind. Modernes C++ bietet viele mächtige Feature für die Embedded Programmierung an. Feature wie die Move-Semantik und constexpr Funktion für hohe Performanz, benutzerdefinierte Literale und Type-Traits für sicherheitskritische System, Smart Zeiger und std::array für den sorgfältigen Umgang mit Ressourcen. Hier sind weitere Antworten in C++ auf die besonderen Anforderungen der Embedded Programmierung, die Inhalt des Workshops sein werden.

Sicherheitskritische Systeme

  • Einheitliche Initialisierung mit {}
  • Automatische Typableitung mit auto
  • Benutzerdefinierte Literale
  • Zusicherungen zur Kompilierungszeit

Hohe Performanz
  • Lambda-Funktionen
  • Type-Traits
  • constexpr
  • Assoziative Container

Eingeschränkte Ressource
  • Move-Semantik
  • Perfect Forwarding
  • Speicherallokation
  • Smart Zeiger

Nach dem Workshop werden Sie den bekannten Satz von Bjarne Stroustrup über C++11 in der Embedded-Programmierung verstehen: "... make C++ even better for embedded system programming." Ich kann nicht versprechen, dass wir jedes Thema des Workshops in seiner vollen Detailtiefe behandeln werden; ich kann aber versprechen, dass Sie die vollständige Präsentation einschließlich aller C ++ - Quellcodebeispiele erhalten.

Anmelden


Änderungen vorbehalten