Session Details


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

Type-Traits mit modernen C++ Features

Peter Gottschling

Type-Traits beschreiben Eigenschaften von Typen und sind ein fundamentaler Bestandteil der Metaprogrammierung. Sie lassen sich mit klassischen C++03 über Template-Spezialisierung implementieren. Damit kann man Typeigenschaften für bestimmte Typen oder Muster von Typen (mittels partieller Spezialisierung) definieren. Unglücklicherweise erstrecken sich die Spezialisierungen einer Klasse nicht auf die davon abgeleiteten, so dass für jede neue Klasse die Type-Traits erneut spezialisiert werden müssen, auch wenn es schon eine geeigneten Trait für die Basisklasse gibt. Eine weitere Unannehmlichkeit in C++03 ist, dass man auf Typresultate mittels "typename ...::type" zugreifen muss. C++11 bietet uns constexpr-Functionen, deren Compilezeitauswertung uns erlaubt, mit Funktionsüberladung statt mit Spezialisierung zu arbeiten. Dafür benötigen wir allerdings Compiletimeobjekte und die lassen sich nun mal nicht von jedem Typ erzeugen. Das wirft die Frage auf, ob es sinnvoller ist, Type-Traits für Objekte oder für Typen zu definieren. Oder beides? Und wie behandelt man Typen, deren Objekte nicht an constexpr übergeben werden können. Unter Verwendung von Template-aliases, decltype, declval und eines obskuren C-Features (welches ich geschworen hatte, nie zu verwenden) ist eine hybride Lösung für die obigen Probleme gelungen.

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.

C++17 - Was gibt's Neues?

Rainer Grimm

Die Erwartung in der C++-Community war sehr groß, dass 2017 ein ähnliches Revolution von C++ vor der Tür steht wie 2011. Die Erwartung war zu groß, den der neue C++ Standard C++17 bringt zwar einige großartige Features mit. Auf die lang ersehnten Feature Concepts Lite, die Ranges Bibliothek oder auch verbesserte Futures muss die C++-Community mindestens noch weitere 3 Jahre bis 2020 warten. Die anfängliche, leichte Enttäuschung hat sich im letzten Jahr gewendet. Den nun stehen neben der wichtigen Feature wie einer Bibliothek fürs Dateisystem oder auch eine parallelisierten Versionen der STL-Algorithmen wichtige Neuerungen in der C++ Kernsprache an. Die Evolution von C++ geht in drei Jahres Schritten weiter.

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.

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.

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!

Soft Skills – Nur was für Dampfplauderer?!

Christoph Menzel

Wie erklären wir es, dass ähnliche Organisationen mit ähnlich qualifizierten Menschen extrem unterschiedliche Ergebnisse liefern? Indem wir uns nur auf die mutmaßlich wesentlichen beruflichen Fähigkeiten konzentriert und den Wert der eigentlich wichtigen Fähigkeiten abgewertet oder unterschätzt haben. Die meisten Bücher und Prüfungen in unserer Ausbildungszeit, sei es in der Schule, der Berufsausbildung oder im Studium, beschäftigen sich nur mit den vermutet wichtigen Fähigkeiten. Dabei respektieren wir die wirklich wichtigen Fähigkeiten zu wenig. Indem wir sie als „soft" bezeichnen, implizieren wir, dass sie optional wären. Es stellt sich jedoch heraus, dass die schwierig zu messenden Eigenschaften der Mitarbeiter eine erfolgreiche Organisation erst ausmachen, , nämlich eben diese Soft Skills.

Software engineering through the eyes of a role playing gamer

Christoph Menzel

Der Vortrag stellt den Zuhörern typische Situationen aus dem Alltag der Software-Entwicklung vor. Angelehnt an das Setting eines klassischen Pen-and-Paper Rollenspiels hat das Publikum die Möglichkeit selbst zu entscheiden, wie es in den jeweiligen Situationen reagieren möchte, und bestimmt so den Verlauf des Vortrags maßgeblich mit. Je nach Entscheidung wird anschließend analysiert, welche Auswirkung diese Entscheidung hat, inwiefern sie negative Konsequenzen mit sich bringen kann und wie man diesen entgegenwirkt. Der Themenbereich dieses Rollenspiels ist naturgemäß sehr weitläufig. So umfasst er zum einen technische Aspekte, wie beispielsweise die Bedeutung von Unit Tests. Aber auch der Umgang mit organisatorischen Fragestellungen und die Wichtigkeit von Soft Skills werden behandelt. Die Herausforderung, wie auf kleine bis große Änderungen der Anforderungen während eines Sprints reagiert werden kann, ist hierfür nur ein Beispiel.