Session Details


Der Call for Papers ist geöffnet.
Für Session Sumbissions direkt das ppedv Event Team per Mail kontaktieren.

Quo vadis multithreading in C++?

Rainer Grimm

Was haben Threads, atomare Variablen, Mutexe und Bedingungsvariablen gemein? Sie sind die elementaren Bausteine jeder Multithreading Anwendung in C++, die selbst dem erfahrenen Programmierer zu viel abverlangen. Umso besser, dass mit C++17 und C++20 zwei neue C++ Standards vor der Tür stehen. Was können wir mit C++17 erwarten, auf was können wir mit C++20 hoffen? Mit C++17 wird die meisten Algorithmen der Standard Template Library in einer sequentiellen, parallelen und vektorisierten Variante vorliegen. Drei Jahre später können wir uns auf Transaktional Memory, deutlich verbesserte Futures und Koroutinen freuen. Das sind aber nur die Highlights aus Multithreading Sicht. So besteht die begründete Hoffnung, dass in zukünftigem C++ Abstraktionen wie Transaktional Memory, Futures und Koroutinen zum Einsatz kommen und dass Threads, atomare Variablen, Mutexe und Bedingungsvariablen zu Implementierungsdetails degradiert werden.

Multithreading mit modernem C++

Rainer Grimm

Dieser Workshop zu Multithreading mit modernem C++ wird die High-Level Schnittstelle und die Low-Level Details behandeln. In der High-Level Schnittstelle werden sie Threads, Locks und Mutexe, Thread-lokale Daten, Bedingungsvariablen und Tasks genau kennen lernen. Dies nicht nur in der Theorie, sondern vor allem in der Praxis. In den Low-Level Details bekommen Sie eine Idee, welche Probleme das C++ Speichermodell adressiert und was es heißt, lockfrei zu programmieren. Da dies ein Workshop und keine Schulung ist, können wir zu jeder Zeit den Inhalt des Workshops anpassen.

Direkte Anschlüsse - Socketprogrammierung mit C++

Matthias Wedemeyer

Windows umzusetzen. Lernen Sie in dieser Session, wie Sie das Socketinterface von Windows mit C++ effektiv nutzens und welche Stolperfallen es gibt. Zusätzlich betrachtet diese Session selbstverständlich auch das Thema Sicherheit: welche Möglichkeiten bietet das Interface von Haus aus, um die Zugriffsberechtigungen auf eine Serveranwendung einzuschränken und wie bekomme ich die Serveranwendung auch unter hoher Last verfügbar, damit diese nicht zum Flaschenhals wird.

Ich schau Dir in die Augen, Service! C++ REST-clients mit Microsoft Casablanca

Matthias Wedemeyer

Viele Internetdienste wie Bing, Facebook oder die Clouds bieten heute eine REST-Schnittstelle zur Kommunikation an. REST hat sich zum Standard entwickelt. Mit C++ sind Sie hier nicht außen vor sondern mitten drin. Microsoft bietet über sein C++ REST SDK, Codename Casablanca, eine mächtige auf C++ 11/14 aufsetzende Bibliothek an, mit welcher Sie auf diese Dienste zugreifen können. Casablanca bietet dabei neben der reinen Kommunikation mit REST-Services auch eine JSON-Schnittstelle und asynchrone Tasks und Streams an. Lernen Sie, Casablana zu nutzen und Ihre C++ Programme an die Dienste des Internets anzuschließen.

Mit Polymorphie zur fachlichen Systemmandantenfähigkeit

Matthias Wedemeyer

Wer Anwendungen für Kunden erstellt in welchen Ihre Kunden verschiedene Mandanten/Systemmandanten abbilden müssen steht über kurz oder lang vor dem Punkt, dass die fachlichen Logiken in der Anwendung nicht für alle Systemmandanten identisch sind. Der Wunsch Ihres Kunden: „ich möchte einen neuen Systemmandanten erfassen können, ohne eine neue Version einspielen zu müssen, weil andere fachliche Logiken zu nutzen sind". Utopisch. Nicht ganz. Klar, die fachlichen Logiken müssen Sie implementieren, aber eine neue Programmversion ist nicht notwendig. Lernen Sie in dieser Session, wie Sie in C++ Desktopanwendungen durch Nutzung der Polymorphie fachliche Systemmandantenfähigkeit abbilden und Ihre Anwendung dabei übersichtlich und wart bar bleibt und lediglich über eine Konfiguration neue fachliche Implementierungen ergänzt werden.

Kontrolle mit Hash - Deep Dive in GIT

Marko Beelmann

Endlich mal verstehen was unter der Haube von git passiert! Nach der Session sollten Sie git deutlich besser verstehen. Ob Branching, Merging oder Rebase alles wird detailliert anhand von Bespielen live besprochen. Ein Deep Dive mit hohem Lernfaktor.

Verteilter Schatz - GIT innerhalb von Visual Studio und TFS/VSTS

Marko Beelmann

Seit Version 13 unterstützt Visual Studio und TFS das Revision-Control-System git. Wie sieht die Integration von git in diesen beiden Produkten aus? Die Session beleuchtet beide Produkte und zeigt was heute schon geht und in Zukunft noch kommen (kann).

Der Alptraum des einfachen C++ Programmierers

Nicolai Josuttis

Stellen wir uns mal vor wir haben eine einfache Klasse mit ein oder zwei String-Membern. Wie programmiert man diese Klasse mit bester Performance? Klar, seit C++11 muss man dazu einfach Move-Semantik unterstützen. Doch das ist leicher gesagt als getan. Dieser Vortrag führt anhand eines trivialen Beispiels in die Untiefen und Grausamkeiten von "uinversal references", "overload resolution" und "enable_if". Das will keiner wissen, aber man sollte es kennen...

Programmieren mit C++17

Nicolai Josuttis

C++17 ist der nächste Schritt in der Evolution zum modernen C++-Programmieren. Auch wenn der Schritt nicht so groß ist wie bei C++11, so gibt es doch eine große Anzahl neuer Sprachmittel und Bibliotheksfeatures, die das Programmieren mit C++ ändern. Dieser Workshop präsentiert sowohl die Sprachmittel als auch die Bibliotheks-Komponenten von C++17. Neben Motivation und Kontext werden auch Beispiele und Konsequenzen für die praktische Programmierung aufgezeigt. Ziel ist, die C++17-Features einschätzbar und im Alltag nutzbar zu machen.

C++11/C++14 Erweiterungen in Visual Studio 2015/2017

Richard Kaiser

Visual Studio 2015/2017 enthält eine Vielzahl von Neuerungen für C++-Entwickler: Einerseits wurde die Entwicklungsumgebung stark weiterentwickelt, andererseits wurden die C++11-Erweiterungen nahezu vollständig übernommen, außerdem zahlreiche neue Sprachelemente von C++14 und C++17. Diese Erweiterungen werden in diesem Workshop umfassend und kompakt vorgestellt.

Modern Backends - Native Micro Services in the Cloud

Cosmin Dumitru

Ein Überblick wie kann im jetzige Zeit moderne Architektur Patterns mit Native Code und Azure Service Fabric Plattform, Reliable Distributed Systems abbilden die sowie im bestehende oder neue Applikationen integrieren kann. Erfahren Sie Was bringt die nächste Generation des Applikation Plattform mit C++ und mehr über die Hintergründe, die technische Umsetzung sowie die Vorteile (Entwicklung Prozess/Kostenoptimierung).

Code Qualität & Entwicklerproduktivität mit TFS & Visual Studio Tools

Cosmin Dumitru

Mit Visual Studio und TFS als wichtige zentraler Entwickler Werkzeuge wird analysiert und dargestellt die Möglichkeiten, wie man die Produktivität steigen kann und technische schuld abbauen, im Konkrete Szenarien mit Produktivität Tools & Add-ons von Microsoft Team im alle ALM Etappen.

GPU-Acceleration in C++

Patrick Charrier

GPU-Acceleration in C++ is not just an idea anymore, but a reality. Libraries like Boost.Compute, VexCL, and ViennaCL seamlessly integrate GPU-acceleration with C++. If you are familiar with the C++ Standard Templating Library (STL), you will be able to use these libraries out-of-the-box. But what about one step further? The new OpenCL SYCL standard allows for C++ code running on OpenCL-supported devices. While this is already possible with OpenCL 2.0, SYCL makes the integration much more seamless. This talk will have a look into this bright future on the basis of Codeplay’s SYCL implementation ComputeCpp.

Modernes C++ und propietäre Komponenten, ein einfacher Webserver

Volker Hillmann

In diesem Vortrag wird auf die Entwicklung eines Internetservers eingegangen. Dabei werden die proprietären Komponenten des Embarcadero C++Builder 10.1 Berlin genutzt. Das Ziel dieser Präsentation ist dabei aber nicht die Darstellung dieser Komponenten, vielmehr steht die Sprache C++ und deren Möglichkeiten Probleme zu lösen im Vordergrund. Ziel ist es, einen allgemeingültigeren Ansatz zu finden. Dabei sollte kein Unterschied mehr zwischen einer Bildschirmliste, die beispielsweise mit den VCL- oder FMX- Komponenten oder direkter Nutzung einer API und einer einfachen Anzeige im Internet bestehen. Dabei wird an die Vorträge vom letzten Jahr angeknüpft, und die Header only Klassen zur Umsetzung des Zugriffs auf den MS SQL Server und die Abstraktionen für die Bildschirmanzeige genutzt. Dieses Beispiel ist Schulungen der adecc Systemhaus GmbH entnommen, und zeigt die Möglichkeiten von modernem C++ und dem aktuellen C++Builder.

Erstellen einer mobilen Anwendung (für Desktop-Entwickler)

Volker Hillmann

In diesem Vortrag steht die Enwicklung von eigenen Apps mit Hilfe von C++ im Mittelpunkt, nicht die Verwendung der speziellen IDE. So wird auch nur auf die für die konkrete Anwendung benötigten Eigenschaften der IDE eingegangen. Im Vordergrund steht die Nutzung der Programmiersprache C++. Erklärt wird dieses durch die Lösung einer einfachen, konkreten Aufgabe. Diese ist aus dem 33. Bundeswettbewerb Informatik 2014 herausgegriffen, sollte aber nicht nur für Schüler interessant sein. Bei der Aufgabe geht es um die Erzeugung von Übungsaufgaben für das Kürzen von Brüchen, kann aber auf allgemeine Übungen für das Rechnen mit Brüchen erweitert werden. Diese Aufgabe wird mit der IDE C++Builder vollständig mit modernem C++ implementiert und abschließend auf einem mobilen Gerät (Android) bereitgestellt. Generell ist die App- Entwicklung eine neue Herausforderung und eröffnen die Apps eine neue Zielgruppe für Entwickler. Dabei scheint es parallelen zu den 80iger und 90iger Jahren zu geben, so dass sich einige in die Zeit von Commodore und Atari zurückversetzt fühlen könnten. Oder wir haben einfach den Wunsch nach sinnvollen Anwendungen, die wir für unsere Kinder auch selber schreiben können, oder die Schüler selber entwickeln können, um die tägliche Lernarbeit zu vereinfachen. Natürlich sind die Inhalte auch auf übliche Businessprobleme übertragbar, so ist dieser Tag nicht auf die spezielle Aufgabe, sondern die App- Entwicklung fokusiert.

Back to C++, Migration zurück zu C++

Volker Hillmann

Durch den Wildwuchs an Anbietern und das Fehlen eigener Bibliotheken für die Ein- und Ausgabe auf grafischen Oberflächen, das Arbeiten mit Datenbanken oder die Behandlung von Ini- Dateien, hat sich eine Abhängigkeit von Bibliotheken und Anbietern (Microsoft, Embarcadero, qt, …) ergeben, die zum einen sehr alt sind, zum anderen den Paradigmen einer anderen Programmierwelt entsprechen. Selbst innerhalb der Embarcadero- Welt steht diese Frage oft und verursacht hohe und oft vermeidbare Kosten (VCL vs. FireMonkey, ADO vs. FireDAC, AnsiCode vs. Unicode, …) Dadurch wird der Wechsel eines Compilers, das Erweitern von nationalen zu internationalen Zeichensätzen oder der Wechsel der Datenbankzugriffsschicht oft zu einem Desaster. Eine Big Bang- Migration ist hier oft unrealistisch. In diesem Vortrag werden Konzepte besprochen, wie sie die Kontrolle zurückgewinnen, wie aus einer „Wunschliste" Wrapper- Klassen werden, und sie ihre Business- Algorithmen, und damit die Investitionen ihrer Firma, wieder schützen können. So können sie eine Reise beginnen, die in Monaten, vielleicht auch in Jahren endet, und ihre Anwendung am Ende wieder eine C++ Anwendung ist. Warum uns auf diesem Weg Metadaten helfen können, und warum wir nicht alles selber schreiben müssen, und warum uns gerade aktuelles C++ helfen kann, erleben sie in diesem Vortrag aus der täglichen Praxis.

Nutzen Sie die Macht der Sprache - Programmieren einmal anders

Andreas Fertig

Programmieren ist heute ein leichtes. Es gibt dutzende Programmiersprachen und viele Möglichkeiten sie zu erlernen. Ein wichtiger Teil welcher hier oft in Vergessenheit gerät, ist der zweite Teil des Wortes Programmiersprache: die Sprache. Meist konzentrieren wir uns darauf den Teil "programmieren" zu erledigen. Im Embedded Umfeld haben Programme eine Lebensdauer von vielen Jahren. Das fehlerfreie Programmieren ist deshalb eine wichtige Aufgabe. Oft vergessen ist, dass es beim Programmieren noch ein weiteres wichtiges Ziel gibt: die Kommunikation mit den anderen Entwicklern. Dieses Ziel findet sich im Wort "Sprache" wieder. Mithilfe der Sprache können wir unsere Intention über Jahre hinweg kommunizieren. Die Fehlersuche wird unterstützt und das bestehende Programm lässt sich leichter erweitern. Mit C++11 und 14 ergeben sich neue Möglichkeiten unsere Ausdrucksweise weiter zu verbessern.

Schnell und klein - was kostet ein Sprachfeature

Andreas Fertig

Ein Feature kostet typischerweise Geschwindigkeit oder Code-Größe. Mit C++11 und seinen Nachfolgern haben sich Neuerungen ergeben. Sie lernen die Kosten verschiedener Features wie Lambdas oder static kennen und können sie besser bewerten.

(UML) Modell - basiert Code generieren und debuggen - ja es funktioniert wirklich!

Daniel Siegl

Modell-basierte Entwicklung ist in der Embedded Industrie State-of-the-Art, mit diesen Methoden lassen sich aber jegliche Softwareprojekte effizienter umsetzten. Anhand eines konkreten Beispiels (Demo) wird gezeigt wie man aus einem UML Modell einen lauffähigen Code erzeugt. Dieser wird dann zur Laufzeit mit einem grafischen Debugger untersucht. Es wird dabei nicht nur Code für Klassenrümpfe sondern auch verhalten aus Zustandsautomaten und Aktivitätsdiagrammen generiert. Dieses Vorgehen hat viele Vorteile unteranderem das die Doku dem Code entspricht – aber auch noch viele andere. Lassen Sie sich überraschen!