Keynote: Live Compiler Development with Cross-Platform Tooling

Simon Brand

Can a cross-platform compiler be written from scratch, live on stage, in an hour? It can with the right tools!
In this session I will talk about many challenges in cross-platform C++ development and how tools can help: what options do I have if my production environment is different than my dev box? How can I efficiently build and debug CMake projects? How can I easily find and acquire open sourced libraries? Come to see what Visual Studio 2019, CMake, WSL2, vcpkg and more have to offer to make cross-platform C++ development easier.
Even if you're not using these tools, there's still a lot to make you think about how your tools can help you in your development, so come along!

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.

Tour of Windows Defenses

T. Roy

The Windows PC continues to be the primary productivity device in enterprises small and large alike. Due to its ubiquity, the Windows desktop remains the preferred platform for attackers to gain initial foothold into an organization. Microsoft has been busy adding defenses to the platform as the security posture of the Windows PC remains of paramount importance to organizations worldwide. This talk will the you through a whirlwind tour of the defenses that have been added to Windows from Windows XP all the way through to the latest version of Windows 10 to improve the security of applications. Learn about the meaning of acronyms such as DEP, ASLR, ACG, ASR, CFG, CET etc. and the types attacks they are designed to thwart.

Template Specialization + More

AJ Orians

C++ is all about abstractions. And C++ has been doing more to help with generic programming. Some notable examples are templates, concepts, auto return type deduction, CTAD, and much more. You are encouraged to use these features where it makes sense but you should know there is a way to specialize your code for a certain type when needed. There are several ways to do this which I'll show them. This way you can write your programs to simultaneously work for any type and for a specific type(s). With this you'll be able to solve problems using some of the most modern features of C++.



Änderungen vorbehalten