Session Details



Keynote: Cross-platform C++ development is challenging - let tools help!

Marc Goodner

Writing high-quality error-free C++ code itself is a challenging task, let alone when having to juggle multiple platforms at the same time! In this session, we 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? Can I be as productive when working with remote Linux machines? Is there any good C++ editor that works consistently on all platforms I work on? How can I efficiently build and debug CMake projects, or even get IntelliSense? How can I easily find and acquire open sourced libraries? Is there an easy way to write and run cross-platform tests? Come to see what Visual Studio 2017, Visual Studio Code, CMake, WSL, Vcpkg and more have to offer to make cross-platform C++ development much easier in this demo-heavy talk.

Keynote: What's new in Visual Studio 2019 and .NET Core 3.0

Steve Carroll

In this talk, Steve Carroll, the director of development for .NET Base, will walk you through demos of great new productivity features for .NET developers in Visual Studio 2019 and its latest updates. He'll also give a tour of the major new scenarios available in .NET Core 3.0 especially new support for WPF and WinForms, C# 8.0, and the latest performance improvements for building high performance applications.

New C++ features for writing DSLs

Ivan Cukic

C++ is not the best language for writing domain-specific languages (DSLs), but it does have a few tricks up its sleeves.
Expression templates have been the go-to approach for this for years, but writing them has always been a pain. The recent C++ versions have improved this situation significantly.
We'll demonstrate several new C++ features which make writing DSLs borderline fun.

Reproducibility in Autonomous Intelligent Systems

Theodore Omtzigt

Deep Learning approaches have demonstrated the ability to beat expert level human decision making in a broad swath of commercial endeavors. Armed with promising research results, a new arms race has started to imbue devices and services with different degrees of autonomous intelligence. The problem of course is that if something goes wrong, the operator of the device or service needs to be able to demonstrate that it was not their faulty software that caused the failure. This will be of particular importance for Industry 4.0 and autonomous vehicles that must adhere to strict safety standards. It is therefore surprising that most software still depends on IEEE-754 floating point. This mathematical system does not adhere to arithmetic laws of associativity and distribution. In today's world of many-core CPUs, IEEE floating point software must go through great lengths to order its computations to guarantee reproducibility, destroying all the performance benefits of many-core platforms. The posit number system represents a tapered floating point system that restores associativity and distributive laws of arithmetic in arbitrary concurrency environments. Posit-based software that is deployed in many different performance configurations always produces the same results, even between different platforms. We present the Universal Library, a high-performance, header-only C++17 library that offers this new arithmetic to any program that must guarantee its computational results. We'll show several application examples and demonstrate the benefits over IEEE-754 floating point in solving the problem of reproducibility of results.

Memory Management in kritischen Systemen

Ralph Tandetzky

Beim autonomen Fahren, in Luft- und Raumfahrt steht die Sicherheit an vorderster Stelle. Während des Betriebs dynamisch Speicher zu reservieren, etwa mit new und delete, ist tabu. Wie man es trotzdem schafft, seinen Speicher zu verwalten und dabei Komponenten unabhängig zu halten, wird in dieser Session erklärt.

WebAssembly: nativer Code im Browser - C++ goes Web

Martina Kraus

Eine C++ Anwendung im Web, integriert in einer Single Page Application (SPA) - das geht? Ja, mit WebAssembly (WASM). Nativer Code im Web hat sinnvolle Anwendungszwecke für die unterschiedlichsten Szenarien. Durch die Möglichkeit, existierenden C++-Code speziell kompiliert in den Webbrowser zu laden, können komplexe Algorithmen und Berechnungen - wie sie etwa in Bild- und Videoverarbeitung vorkommen - Cross-Plattform auf nahezu allen Endgeräten ausgeführt werden. In diesem Vortrag zeigt Ihnen Martina Kraus zunächst die Grundlagen von WebAssembly anhand eines kleinen C++-Hello-World-Beispiels. Im Anschluss widmet sie sich dann der Frage, wie man eine existierende C++-Anwendung in eine Angular-basierte SPA integrieren kann, um das Beste aus beiden Welten zu nutzen. Dabei sollen typische Designpatterns und evtl. notwendige Umbauarbeiten an bestehendem Code ebenso beleuchtet werden wie die WASM Toolchain, mit der man zum Ziel einer nativ-angereichten modernen Web-App kommt.

Ein Leben nach dem move

Peter Gottschling

Die ursprüngliche Idee der Move-Semantik war es, Daten von temporären Objekten zu stehlen, die ohnehin kurz nach der Operation sterben werden. Nico Josuttis verglich dies mit einer Organspende. Die Einführung von move zerstörte die Vorstellung vom baldigen Tod der ausgeraubten Objekte komplett. Die Sprache deklariert diese Objekte zwar als abgelaufen. Aber was ist die Konsequenz davon? Nichts. Es liegt weiterhin nicht in der Verantwortung des Compilers, sondern des Programmierers, was mit diesen lästigen Objekten geschieht. Natürlich ist jeder Programmierer aufgefordert, move verantwortungsvoll einzusetzen. Aber können wir uns wirklich in jeder Situation darauf verlassen? Oder besser: Wollen wir uns wirklich darauf verlassen? Wollen wir wirklich die Verantwortung dem Nutzer einer Klasse überlassen? Zurück zu Nicos Metapher: Daten aus I-Werten mit move zu verschieben ist wie Lebendorganspende. Die Spender sind immer noch da, aber in einem desaströsen Zustand und nichts garantiert uns, dass derartige Zombies bald verschwinden werden. Tatsächich könnten es globale oder statische Variablen sein, die bis zum Ende des Programms leben - besser gesagt, dahinsiechen. Und keine Sprachfunktion hindert Programmierer daran, die abgelaufenen Objekte von Funktion zu Funktion weiterzugeben, was im Gegenzug bedeutet, dass wir das Leben unserer Variablen bis zu ihrer Entstehung (unter Berücksichtigung aller möglichen Ausführungspfade) zurückverfolgen müssen, um zu überprüfen, dass kein explizites move irgendwo angewendet wurde. Der Vortrag wird zeigen, dass es ganz einfach ist, diesem Elend ein Ende zu bereiten und Programme ohne x-Werte zu haben, selbst wenn move verwendet wird.

Type driven Development mit C++

Andreas Reischuck

Wie bekommen wir die steigende Komplexität in den Griff? Das Typsystem von C++ könnte ein wichtiger Schlüssel dafür sein. Mit OOP, TMP und funktionaler Programmierung nutzen wir das Potential bei weitem nicht aus. Über die Einführung von Strong Types und Event-getriebener Softwarearchitektur werden wir uns der Idee von abstrakten Daten-Schemas annähern. Aus einem Schema lassen sich Protokolle, Repositories, Speicherformate, Verarbeitungsschritte und GUIs ableiten. Anhand von praxisorientierten Beispielen werden wir die Vorteile und Nachteile dieser Strategie erörtern. Ich hoffe Sie mit diesem Vortrag zumindest dazu zu ermutigen auch außerhalb der bekannten Pfade nach neuen Möglichkeiten zu effektiven Problemlösungen mit C++17 zu suchen. Es gibt noch viel zu entdecken...

C++ Test-driven Development (TDD) with CUTE and Cevelop

Peter Sommerlad

TDD ist nicht Testen. TDD bedeutet qualitativ hochwertige, automatisch getestete Software zu realisieren. Es besteht aus sehr kurzen Entwicklungszyklen von "red-bar" zur "green-bar" (alle Tests OK), die Software Test für Test wachsen lassen. Diese Zyklen beinhalten die Reflexion über existierenden Code und Tests und kontinuierliches Refactoring zur Verbesserung des Designs. Populäre Entwicklungsumgebungen (IDEs) für Sprachen wie Java oder C# bieten TDD Unterstützung, indem sie Coderahmen anhand nicht-kompilierender Testfälle automatisch generieren und Refactoring automatisieren. Die Studierenden und Mitarbeiter des IFS (Institute for Software ) waren vor über 10 Jahren die ersten, die vergleichbare Mechanismen für C++ in einer IDE entwickelt haben. Heute sind diese Features in der freien C++ IDE Cevelop des IFS gratis verfügbare. Man kann TDD auch ohne Werkzeugunterstützung praktizieren, aber eine IDE spart dabei Zeit und Nerven. Einer der Vorteile ist die Vorschau der Änderungen eines Refactorings, deren selektive Auswahl, falls zu viel vorgeschlagen wird und ein einfacher "Undo" Mechanismus, wenn doch einmal die Automatik fehlschlägt oder manuelle Änderungen problematisch waren. Der Vortrag zeigt die Grundlagen von Test-driven Development, hilft beim Einstieg ins Schreiben von Tests mit "ZOMBIES" und demonstriert TDD an einem einfachen Beispiel in C++ mit Hilfe von Cevelop und dem eingebauten CUTE (C++ Unit Testing Easier) Framework. Im Gegensatz zu anderen C++ Testframeworks, versucht CUTE den Einsatz von C-Makros so minimal wie möglich zu halten. Sie werden nur dort genutzt, wo--in Ermangelung von Reflection Mechanismen--die Macros __FILE__ und __LINE__ genutzt werden, um zu den fehlschlagenden Testfällen navigieren zu können. Code-Rahmen für fehlende Teile und für neue Testfälle, sowie der Code für die Registrierung der Testfälle werden automatisch auf Knopfdruck oder Mausklick generiert. Laufende Tests werden per "red bar"/"green bar" visualisiert und bei Fehlern können die Unterschiede zum erwarteten Ergebnis eines Tests angezeigt werden. Nach Änderungen kann man Tests auch selektiv wieder ausführen um rasches Feedback zu erhalten.

Improving Readability With Class Template Argument Deduction

A.J. Orians

Topic is improving the readability of source code though a C++17 feature call Class Template Argument Deducation. The talk is about how this latest feature does wonders to remove unnecessary information to help the average programmer as well as how there is room to improve. A.J Orians mentions some of the umpcoming improvement proposals. This session is something a beginner can attend but he shows information that will delight even the expert programmers.

On Error Handling

Andrei Zlate-Podani

Programming has been historically guided by instinct and/or unsubstantiated claims, and to a lower extent by evidence. This is still the case, even in the presence of a growing body of published research. Given that writing of software involves dealing with the intrinsic complexity of the problem-to-solve and with the messiness of the real world, it is quite often the case that error handling and the testing thereof is poorly done. Especially challenging is the use of exceptions, since there is no direct connection from the place of the detection to the point of handling the error. This talk will explore the various methods of error reporting and handling, discuss some of the findings from published papers and dissect the advantages and drawbacks of the various approaches. Its aim is to inform the audience of the importance of detecting and reporting the errors, as well as having a well-designed strategy for error handling.

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

Cosmin Dumitru

In der Zeit, wo Cloud Native, Performance C++ Lösungen immer wichtiger sind, stoßen viele Möglichkeiten im Software Engineering an ihre Grenzen. Trotz der vielen neuen Technologien, die die Implementierung eigentlich erleichtern sollen, steigen Kosten und Komplexität. Anhand von Demos zeigen wir, wie mit Open Soure Editor - Visual Studio Code, C++ Entwickler multi-Plattform Applikationen entwickeln können und liefern on premise sowie on Cloud mit Mitteln und Möglichkeiten des aktuellen C++ Standard. Unabhängig von Ihrem Business Focus lernen Sie, wie Native Applikationen implementiert werden können, sowohl in der Cloud (nicht nur Azure) als auch On-Premise mit der gleichen Code-Basis. Lernen Sie auch wie DevOp Automation und Testing mit Docker Containers eine große Produktivität Vorteile bringen kann, durch ganze ALM Prozesse für Native Applikationen.

C++ Programmierung in der Blockchain

Patrick Charrier

Blockchain als Technologie ist in den vergangenen Jahren zunehmend bekannter geworden. Eine Blockchain erlaubt es, die Ausführung von Code dem Konsens eines Netzwerkes von Computern zu unterwerfen. In Konsequenz wird der ausgeführte Code somit zu einer Art Vertrag zwischen den ausführenden Maschinen, weshalb für diesen Fall der Begriff des Smart Contract geprägt wurde. Code ist in der Blockchain in gewissermaßen Gesetz ("Code is Law") und diesen Aspekt wollen wir uns in diesem Vortrag etwas genauer anschauen. Nach einer kurzen Einführung in Blockchain-Basics wagt der Vortrag einen Einblick in die Programmierung von Smart Contracts in C++ auf der EOS-Blockchain.

C++ goes Web: REST mit C++

Matthias Wedemeyer

Bereits seit einiger Zeit gibt es das C++ REST SDK, welches Klassen sowohl für REST-Client als auch REST-Serveranwendungen zur Verfügung stellt. C++ Entwicklern wird hierüber eine komfortable Möglichkeit gegeben, Anwendungen nahtlos in ein Web-Environment einzufügen und das als Consumer und Provider. Lernen Sie das C++ REST SDK kennen und erfahren Sie, wie http Client- und auch http Serveranwendungen mit Hilfe dieses SDK erstellt werden. Und das mit den Mitteln und Möglichkeiten des aktuellen C++ Standards.

Sichere Daten in C++ Anwendungen

Matthias Wedemeyer

Die von Anwendungen verarbeiteten Daten sind unterschiedlichster Natur. Je nach Daten ist es erforderlich, das diese von der Anwendung geschützt werden. Eingegebene Kennwörter im Klartext in der Anwendung zu halten ist ebenso keine gute Idee wie zum Beispiel das Übertragen von unverschlüsselten Personendaten. Handelt es sich gar um unternehmenskritische Daten sollte zudem über eine Signatur der Daten nachgedacht werden, damit der Empfänger dieser weiß, dass die Daten korrekt sind. C++ Entwicklern bietet Windows mit seinem Cryptography API Next Generation, oder kurz seinem CNG API, Funktionen, mit denen Schlüssel erstellt, Daten ver- und entschlüsselt und Nachrichten signiert werden können. Lernen Sie CNG und seine Möglichkeiten kennen, um die von Ihren Anwendungen schützenswerten Daten zu schützen und eine sichere Übertragung dieser zu gewährleisten.

Workshop: C# & .NET Deluxe 2019

Christian Giesswein

Und wieder ist ein Jahr vergangen und es hat sich wieder viel verändert mit der Zeit in der .NET Welt. Ein neues Visual Studio 2019, .NET Core 3.0, .NET 4.8 und C# 8.0. In diesem Workshop geht es darum, was sich geändert hat, wo wir als .NET Entwickler 2019 stehen. Dementsprechend wird wieder live programmiert, mit VS 2019 und beispielhaft erklärt was sich neu ergeben hat in den einzelnen Teilbereichen der .NET Entwicklung.

Workshop: Modern Applications with PaaS and Serverless

Damir Dobric

Themen:
• Evolution of Compute Platform
• Docker Containers Overview
• .NET Core in containers
• Azure Container Registry
• Azure Container instances
• AppService Container
• Overview Orchestrators Overview (Overview Kubernetes, Service Fabric)
• Service Bus (Hybrid computation, Point to Point, Pub Sub, Competing Consumer scenarios)
• EventGrid
• Azure Functions
• Logic Apps

Anmelden

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

Ralf Westphal

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

Workshop: C++11/14/17 in Visual Studio 2019

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.

Anmelden

Workshop: ASP.NET Core für den Webforms Entwickler

Hannes Preishuber

In diesem Workshop lernen Sie die Lösungen von üblichen Anforderungen eines Web Entwicklers mit ASP.NET core und der Razor View Engine kennen. Dabei legt der Referent als ausgewiesener ASP.NET Webforms Experte vor allem Wert auf die Analogien. Verzichtet wird dagegen auf alles was theoretisch möglich ist, aber besonders zum Einstieg unnötige Komplexität erzeugt. So einfach wie möglich, so nah an Ihrer bisherigen Erfahrungen wie möglich, so viel wie nötig aus der neuen dotnet core Welt. Am Ende können Sie mit Visual Studio eine gängige LOB Anwendung mit ähnlicher Produktivität wie zu Webforms Zeiten erstellen.

Workshop: Web App mit ASP.NET Core MVC

Gregor Biswanger

In diesem Workshop lernen Sie die Lösungen von üblichen Anforderungen eines Web Entwicklers mit ASP.NET core und der Razor View Engine kennen. Dabei legt der Referent als ausgewiesener ASP.NET Webforms Experte vor allem Wert auf die Analogien. Verzichtet wird dagegen auf alles was theoretisch möglich ist, aber besonders zum Einstieg unnötige Komplexität erzeugt. So einfach wie möglich, so nah an Ihrer bisherigen Erfahrungen wie möglich, so viel wie nötig aus der neuen dotnet core Welt. Am Ende können Sie mit Visual Studio eine gängige LOB Anwendung mit ähnlicher Produktivität wie zu Webforms Zeiten erstellen.

Anmelden

Workshop: Web API Design - REST, OData und GraphQL

Christian Schwendtner

Dass eine moderne Softwarearchitektur Web APIs beinhaltet, steht außer Frage. Auf HTTP und JSON einigt man sich schnell, dann wird es aber schwierig. Wie gestaltet man die API im Detail? Wie soll man umgehen mit Filtern, Blättern, Sortieren, Gruppieren, Aggregieren etc.? Wie veröffentlicht man API-Metadaten? In diesem Workshop widmen sich Rainer Stropek und Christian Schwendtner diesem Thema. Es spielt in nahezu allen Entwicklungsprojekten eine Rolle, da schließlich die Web APIs das Userinterface für die Microservices sind. Rainer und Christian zeigen, welche Antworten das REST-Architekturmuster im Vergleich zu OData und GraphQL haben. Sie stellen am Beginn des Workshops die drei Ansätze gegenüber und diskutieren mit den Teilnehmerinnen und Teilnehmern Vor- und Nachteile sowie Tipps aus der Praxis. Anschließend werden gemeinsam Beispiele auf Basis ASP.NET Core entwickelt.
Voraussetzungen:
• Basiskenntnisse über Web-Entwicklung sowie C# und .NET Core

Anmelden

Workshop: .NET Architektur

André Ruland

Der Workshop bietet einen Überblick über verschiedene Architekturimplementierungen und deren Testbarkeit.
Themen:
• Service Layer
• Security
• MVC und MVVM
• Object Mapping
• Best Practices
• Modernisierung
• Einbindung Azure

Zielgruppe: langjährige .NET Entwickler

Anmelden


Änderungen vorbehalten