Wilkening-Online Logo

C++ User-Treffen in Aachen am 12.11.2015



Von Detlef Wilkening

Wie immer am Anfang des Berichts kurz der Hinweis, dass alle Vorträge, Quelltexte, usw. - soweit vorhanden bzw. mir bekannt - auf der Vortrags-Übersichts-Seite verlinkt sind.

Das diesmalige C++ User-Treffen in Aachen fand bei Schlumberger statt. Diesmal konnten wir nicht mit einem prominenten Gastredner wie beim letzen Mal am 1.10.2015 mit Michael Wong aufwarten. Trotzdem waren 30 C++ Programmierer gekommen, und sie erwartete ein spannender Abend mit vielen interessanten Themen.

C++ User-Treffen Aachen 12.11.2015 - Bild 1
Foto 01: C++ User-Treffen Aachen 12.11.2015

Schlumberger sponsorte das Treffen nicht nur mit dem Raum, sondern stellte auch wieder Getränke zur Verfügung. Außerdem versorgte uns Sven Johannsen mit ersten Weihnachts-Süßigkeiten - danke von hier aus. Bis zum Ende des Abends hatten die "Heuschrecken" dann auch gut zugeschlagen...

C++ User-Treffen Aachen 12.11.2015 - Bild 2
Foto 02: C++ User-Treffen Aachen 12.11.2015

Der Abend began - wie bei Schlumberger üblich - mit einer Sicherheitseinweisung. Sven Johannsen brachte und kurz das Verhalten im Notfall nahe und wies uns auf die Fluchtwege hin.

C++ User-Treffen Aachen 12.11.2015 - Bild 3
Foto 03: Sven Johannsen bei der Sicherheitseinweisung

Danach gab es meinen kurzen traditionellen Einführungs-Vortrag für den Abend. Ich stellte kurz die Themen vor und fragte explizit nach Vorträgen für die nächsten C++ User-Treffen. Das Glück war uns hold, denn es gab direkt mehrere Meldungen, die ich im Laufe des Abends konkretisieren konnte. Danke schon mal an alle aktiven Teilnehmer.

Und dann endlich ging es mit dem eigentlichen Abend los. Als erstes stellte Georg Hellack das Unit-Test Framework "Boost.Test" vor. Über die Strukturierung der Tests, den Aufruf auf der Kommandozeile und die eigentlichen Test-Makros ging es dann zu fortgeschrittenen Konzepten wie Vergleiche von Containern, Template-Tests mit Typlisten, datengetriebene Tests und automatische Daten-Kombinationen verschiedener Inputs für Testfälle. Am Ende des Vortrags stellte Georg noch eine grafische Oberfläche für "Boost.Test" und eine Extension für "Boost.Test" für das Microsoft Visual-Studio vor.

C++ User-Treffen Aachen 12.11.2015 - Bild 4
Foto 04: Georg Hellack mit "Boost.Test"

Obwohl ein scheinbar so langweiliges da oft wiederholtes Thema, war der Vortrag eine echte Bereicherung des Abends. Viele Nachfragen und Diskussionen zeigten, dass Unit-Tests ein ewig-junges Thema sind und es außerdem viele konkrete Detailfragen zu "Boost.Test" gibt. Auch für mich selber kann ich nur sagen: obwohl ich "Boost.Test" schon seit Jahren einsetze, stellte der Vortrag noch manches für mich unbekannte Feature vor. Ein sehr gelungener Einstieg in den Abend. Die Folien findet man hier als PDF.

Nach den Unit-Tests ging es zu einem ganz anderen Thema. Maximilian Florkowski, Fabian Kantereit und Cedric Hanebaum stellten einen "Man in the Middle Netzwerkangriff in C++" vor.

C++ User-Treffen Aachen 12.11.2015 - Bild 5
Foto 05: Maximilian Florkowski, Cedric Hanebaum & Fabian Kantereit (v.l.) mit "MITM Netzwerkangriff in C++"

Im Studium hatten die drei eine Vorlesung über Netzwerk-Technologien gehört, und sie mussten im Rahmen der Vorlesung u.a. einen Netzwerk-Client schreiben, der das Spiel "Das verrückte Labyrinth" spielen musste. Um nicht zu verlieren, klingte sich ihr Client im Falle eines kritischen Spielverlaufs in die Kommunikation zwischen dem Server und den weiteren Clients ein und holte sich so den Sieg.

Über die moralische Komponente mussten wir nicht reden - die Vorgehensweise war vorher mit dem Dozenten abgeklärt und offen gegenüber den anderen Studenten kommuniziert worden. Statt dessen zeigten die drei zuerst in einem kleinen isolierten Netzwerk die Ausensicht und den Erfolg ihres MITM Angriffs.

C++ User-Treffen Aachen 12.11.2015 - Bild 6
Foto 06: Das verrückte Labyrinth kurz vor dem "MITM Angriff"

Danach stellten sie vor, wo im ISO Schichtenmodell sich ihr Client einklingt und welche Sicherheitslücke sie ausnutzen. Als letztes führten sie direkt am Code vor, wie sie die entsprechenden Schritte umgesetzt hatten.

Der Vortrag sorgte natürlich für viel Heiterkeit auf der einen Seite - und ernste Diskussionen auf der anderen Seite. Vom C++ Standpunkt aus war er nicht besonders aufregend, da der eingesetzte C++ Code relativ einfach, gradlienig und unspektakulär war - aber der ernste Hintergrund, die Fragen & Antworten und die erfolgte Sensibilisierung machten auch ihn zu einer echten Bereicherung des Abends - nochmal vielen Dank an alle drei von hier aus.

Folien und Sourcecode des Vortrags findet man auf "git.dark-dev":
Nach soviel Stoff war erstmal eine kleine Pause angesagt - genug Diskussionsstoff war ja nun vorhanden. Und nebenbei ließ sich ja auch noch manches Getränk und einige Süßigkeiten vertilgen. Ich bekam meine Vortrags-Zusagen für das nächste Treffen, und so war auch das Thema zufriedenstellend erledigt.

C++ User-Treffen Aachen 12.11.2015 - Bild 7
Foto 07: C++ User-Treffen Aachen 12.11.2015

Den Hauptvortrag mit dem Thema "Template-Meta-Programmierung ohne Rekursion mit Variadic-Templates" hatte Daniel Frey übernommen. Dieser Vortrag war beim letzten Treffen zustande gekommen, als ich ja spontan einen älteren einführenden Vortrag über "TMP" herausgekramt und gehalten hatte - um die Zeit bis zur Ankunft von Michael Wong zu überbrücken. Mein Vortrag basierte noch komplett auf C++98 Techniken, mit extensiver Nutzung von Rekursion in den Templates. Daniel hatte mich daraufhin angesprochen und gemeint, dass diese Techniken nicht mehr angemessen wären für C++11 & C++14. Natürlich gab ich ihm damals sofort recht - ich hatte aber keinen moderneren Vortrag fertig in der Schublade liegen gehabt. Daniel bot sich damals direkt an, einen Folge-Vortrag zu halten, der zeigen sollte wie sich mit Hilfe von C++11 & C++14 Techniken (primär "Variadic-Templates") "TMP" vereinfachen und beschleunigen läßt. Soviel sei im Vorgriff schon verraten: es ist ihm mehr als gelungen.

C++ User-Treffen Aachen 12.11.2015 - Bild 8
Foto 08: Daniel Frey mit "TMP ohne Rekursion mit Variadic-Templates"

Daniel zeigte dann verschiedene TMP Algorithmen wie z.B. "is_all" oder "is_any" mit nicht rekursiven Implementationen mit Hilfe von Variadic-Templates. Er baute dabei auf die "std::tuple" als Typ-Listen und verschiedene Tupel-Algorithmen auf. Manche seiner Implementierungen, wie z.B. von "tuple-cat", waren hierbei wirklich beeindruckend kurz und ausdrucksstark - selbst wenn die verschiedenen Parameter-Packs nicht immer für jeden direkt leicht lesbar waren. Besonders schön waren dabei auch mehrere Implementierungen basierend auf Fold-Expressions, die so erst in C++17 enthalten sein werden.

C++ User-Treffen Aachen 12.11.2015 - Bild 9
Foto 09: Ein Blick auf "TMP ohne Rekursion mit Variadic-Templates"

Daniel beließ es dann aber nicht nur bei den nicht-rekursiven Implementierungen, sondern zeigte auch direkt die praktischen Vorteile der C++11/C++14 Techniken. Er hatte mehrere Vergleiche von Compile-Zeiten und Template-Intanziierungs-Tiefen mit zwei Compilern (GCC & Clang) vorbereitet. Z.B. ein kleiner Quelltext mit Template-Rekursion führte beim Clang zu über 70 Sekunden Compilezeit, bei der gleichwertigen nicht-rekursiven Variante waren es dann keine Sekunde mehr. Die Template-Instanziierungs-Tiefen führten beim klassischen Ansatz beim Clang dazu, dass schon Tuple mit 25 Typen nicht mehr erzeugbar waren - mit Variadic-Templates waren dann problemlos größere Tuple instanziierbar.

Variadic-Templates und nicht-rekursives TMP ist also einfach nur etwas besser, sondern kann in der Praxis den Unterschied zwischen "benutzbar" und "unbenutzbar" ausmachen. Außerdem vereinfacht es die Quelltexte immens, so dass Lesbarkeit und Ausdrucksstärke stark zunehmen. Als Abschluß des Abends war dies ein ganz starker und interessanter Vortrag, und die Diskussionen mit und Fragen an Daniel erstreckten sich noch über einen langen Zeitraum.

Folien und Sourcecode des Vortrags findet man auf "github":

Danach ging der Abend in den ruhigeren Modus über. Es wurde noch lange diskutiert, und auch einfach nur erzählt. Stoff genug war ja vorhanden.

C++ User-Treffen Aachen 12.11.2015 - Bild 10
Foto 10: C++ User-Treffen Aachen 12.11.2015


C++ User-Treffen Aachen 12.11.2015 - Bild 11
Foto 11: C++ User-Treffen Aachen 12.11.2015

Stück für Stück löste sich dann der Abend auf. Wir räumten noch auf, und dann war auch dieses C++ User-Treffen leider vorbei.



Den nächsten Termin, weitere Berichte und andere Informationen zu den C++ User-Treffen in Aachen finden sich auf meiner "C++ User-Treffen in Aachen" Seite.

C++ User-Treffen: