Keynote: Live Compiler Development with Cross-Platform Tooling

Sy 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!

What’s new in .NET 5 and Visual Studio for .NET developers

Steve Carroll

In this talk, Steve Carroll, the director of development for .NET Base, will walk you through demos of many new features from Blazor with WebAssembly, early previews of .NET 5 features, and all the latest and greatest productivity improvements in Visual Studio.

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++ Anwendungen

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.

Paralleles Programmieren 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 Bereichen, insbesondere aber aus dem 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.

QML für eingebettete Systeme: Beste Praxis und Zukunftsaussichten

Frank Mertens

Die QML führte ein neues Konzept zur Kodierung von erstaunlich reichhaltigen interaktiven Benutzeroberflächen ein: die Eigenschaftsbindungen. Mit dem Aufkommen von Qt 6 können die in QML-Anwendungen verwendeten Konzepte direkt in C++ angewendet werden. Aber QML wird auch in den kommenden Jahren die primäre Benutzeroberflächensprache von Qt bleiben. Ihre einfache Anwendung, geringe Lernkurve und dennoch relativ hohe Leistung machen sie zu einer idealen Sprache für Front-End-Entwickler im Umfeld eingebetteter Systeme.

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++.

Schöne neue Welt der Konfigurationen

Paul Targosz

Jeder kennt es, Software wird geschrieben und besteht aus mehreren Komponenten, die verbunden werden. Alles muss definiert und an Kundenwünschen angepasst werden, egal ob Desktopanwendungen mit Firmenbranding oder mit Mikrocontrollern angesteuerte Sensorik. Softwareentwickler müssen deswegen eine Vielzahl an Konfigurationen implementieren. Wenn Performanceoptimierung, Wartbarkeit und die Kompilierdauer sich gegenseitig ausspielen, wird es kompliziert und dann kommen noch industrielle Normen, verfügbare Compiler und zugelassene C++-Standards hinzu. Dieser Talk zeigt einen Überblick über mehrere Möglichkeiten SW zu konfigurieren und welche Konsequenzen diese Entscheidungen mit sich führen können.

Eine Einführung in die Parallelisierung und Optimierung Tiefer Neuronaler Netze

Georg Zitzlsberger

Tiefe Neuronale Netze (engl.: Deep Neural Networks - DNNs) erleben dank großer Datenmengen und leistungsfähiger Hardware seit fast zehn Jahren ein Revival. Sie sind heute in vielen Bereichen im Einsatz oder vielversprechende Kandidaten für zukünftige Entwicklungen. Dabei haben sie sich auch jenseits der reinen Bild- oder Signalverarbeitung behauptet und gelten auch in traditionellen Domänen wie dem High Performance Computing (HPC) als aussichtsreiche Technologien.

Wir geben eine Einführung in die Funktionsweise der DNNs und deren Training im Hinblick auf die verschiedenen Parallelisierungsansätze, wie Daten-, Modell- und Hybrid-Parallelisierung. Da das Training von DNNs ein zeitintensiver Prozess ist, beschäftigen wir uns auch mit der Skalierung über mehrere Rechenknoten und -beschleuniger (wie GPUs) hinweg. Wir zeigen diese Parallelisierungen anhand der bekanntesten und am meisten eingesetzten Frameworks, wie TensorFlow, Caffe und PyTorch.

Die Inferenz, also die Verwendung eines eingelernten DNNs, stellt andere Anforderungen an die Ausführung als das Training. Wir gehen daher auch auf Optimierungen für die Inferenz ein, die mittels Nvidia TensorRT oder Intel Deep Learning Deployment Toolkit (OpenVino) möglich sind. Wir berücksichtigen eine breite Palette verschiedener Zielarchitekturen wie CPUs, GPUs, FPGAs, VPUs etc.

Vorkenntnisse
  * Der Vortrag richtet sich an angehende Entwickler und Anwender von DNNs. Lernziele
  * Entwickler erfahren State-of-the-art-Ansätze zur Parallelisierung des Trainings Tiefer Neuronaler Netze.   * Anwender finden in den Optimierungswerkzeugen von Nvidia und Intel Hilfestellung zum Vorbereiten eingelernter DNN auf verschiedene Zielarchitekturen.

C++ Insights: Sehen Sie Ihren Quellcode mit den Augen eines Compilers

Andreas Fertig

C++ ist keine einfache Sprache. Während insbesondere mit den neuen Standards seit C++11 mehr Arbeit vom Entwickler auf den Compiler verlagert werden kann, wird dies manchmal als undurchsichtig empfunden. Zu wissen, was eine Ausdruck bewirkt, ist nicht nur bei der Entwicklung eingebetteter Software von entscheidender Bedeutung. Beim Unterrichten von C++ ist es auch wichtig, wenn Fragen wie "Wann und Wo sind Operatoren beteiligt?" Oder "An welchen Stellen erhalten wir eine implizite Typkonvertierung?" aufkommen.

Es gibt Tools wie Matt Godbolt's Compiler Explorer oder Clang's AST Dump, die uns die resultierende Ausgabe zeigen können. Die resultierende Ausgabe ist jedoch nicht C++. Dies macht es für einen C++-Entwickler schwerer zu verstehen. Als C++-Programmierer ist meine erste Sprache schließlich C++. Das Clang-basierte Tool C++ Insights (https://cppinsights.io) behebt dies. Ziel ist es, den Quellcode mit den Augen eines Compilers durch eine Source-to-Source-Transformation zu zeigen, bei der die resultierende Ausgabe immer noch C++ ist. All die absichtlich verborgenen Dinge werden sichtbar.

In diesem Vortrag werde ich vorstellen, wie C++ Insights Sie beim Unterrichten oder Programmieren unterstützen kann. Wir werden einen Blick auf die Implementierung von C++ Insights werfen, um zu sehen, wie es implementiert ist und über die Grenzen des Programms sprechen.

Visual Studio Code mit Native(C++) Entwicklung und Package Management

Cosmin Dumitru

In dieser Vortrag wird gezeigt wie mit neue Open Source Editor – Visual Studio Code, C++ Entwickler können multi- Plattform Applikationen entwickeln und liefern on premise sowie on Cloud mit den Mitteln und Möglichkeiten des aktuellen C++ Standards. Lernen Sie auch wie DevOp Automation und Testing in mit Docker Containers eine groß Produktivität Vorteil bringen kann durch ganze ALM /DevOps Prozess für Native Applikationen.

Modern C++ Applikationen mit Desktop Bridge & C++/WinRT/.NetCore

Cosmin Dumitru

Bereits seit einiger Zeit wird über Desktop Bridge gesprochen. In dieser Vortrag wird dargestellt wie mit neue Desktop Bridge & C++/WinRT, Moderne C++ Applikationen entwickelt werden können sowie auch Migration und Integrationsszenarien für alte Applikationen. Die moderne C++ Bibliothek stellt eine Standard c++ sprach Projektion für die Windows-Runtime bereit die Bequemlichkeit einer Klasse-basierte API hat oder Fähigkeit "unter-the-Hood" für die, die mehr Kontrolle wollen.



Änderungen vorbehalten