Wilkening-Online Logo

C++ User-Treffen in Aachen am 12.4.2018



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 C++ Treffen fand mal wieder bei ModuleWorks statt, und war mit 33 Teilnehmern gut besucht. Da gleichzeitig nicht weit entfernt der Aachener Bend statt fand, hatten einige Teilnehmer Parkplatz-Probleme und kamen etwas später. Aber zum fachlichen Teil waren dann glücklicherweise alle rechtzeitig da.

C++ User-Treffen Aachen 12.04.2018 - Bild 1
Foto 01: C++ User-Treffen Aachen 12.4.2018

Danke nochmal an ModuleWorks für den Raum, die Getränke und das Essen. Frisch gestärkt und gut versorgt konnten sich so alle Teilnehmer konzentriert auf die Vorträge einlassen. Wie fast immer began ich den Abend mit einer kurzen Begrüßung, einer Vorstellung der Themen des heutigen Abends, einem Ausblick auf die nächsten Treffen, und dem selbstverständlichen Aufruf dass ich immer Vorträge für die kommenden Termine suche.

C++ User-Treffen Aachen 12.04.2018 - Bild 2
Foto 02: C++ User-Treffen Aachen 12.4.2018

Den fachlichen Abend began dann Sven Johannsen mit einem Basis-Vortrag über Exception-Safety. Es gibt viele sehr viel ausführlichere Vorträge, Artikel und Bücher zu diesem wichtigen Thema - aber Sven wollte gerade so etwas nicht machen. Die ausführlichen Vorträge sind deshalb so lang, da sie detailliert auf alle Probleme eingehen, die auftauchen könnten - und dann wird das Thema lang und kompliziert. Sven ging es gerade darum, nur die absoluten Basics zu benennen, die jeder C++ Entwickler unbedingt einhalten sollte - und deren Einhaltung auch wirkliche keine Probleme oder Arbeit bereitet.

C++ User-Treffen Aachen 12.04.2018 - Bild 3
Foto 03: Sven Johannsen mit "Exception Safety"

Neben den Exception-Hierarchien sprach Sven das RAII Idiom an, nutzte natürlich Smart-Pointer, und zeigte die Nutzung von Code-Guards. Im Prinzip ist das alles ganz einfach und selbstverständlich, und daran sollte man sich auf jeden Fall halten. Für alles andere - siehe die ausführlichen Vorträge.

Den zweiten Vortrag hielt Caspar Kielwein, und er sprach über "Strong Types as negativ cost abstraction". Auch ein sehr wichtiges Thema, was Anfänger oft nicht sehen. Statt alles direkt mit den elementaren Datentypen oder Strings abzubilden - ist es auf Gründen der Korrektheit, Lesbarkeit, Wartbarkeit und Verständlichkeit oft viel viel sinnvoller mit eigenen semantischen Typen zu arbeiten. Diese drücken direkt aus welchen Typ man hat, was der Programmierer sich gedacht hat, ermöglichen dem Compiler Typ- und Fehler-Überprüfungen, und können zusätzliche semantisch sinnvolle Funktionen tragen. Ein großes Bündel an Vorteilen, weshalb dies ein selbstverständliches Werkzeug in der Toolbox eines jeden C++ Programmierers sein sollte.

C++ User-Treffen Aachen 12.04.2018 - Bild 4
Foto 04: Caspar Kielwein mit "Strong Types as negativ cost abstraction"

Caspars Vortrag ging aber noch weiter. Strong Types ermöglichen dem Compiler sogar bessere Optimierungen. Der Compiler weiß nämlich, dass in C++ 2 Variablen unterschiedlichen Typs niemals an der gleichen Speicher- Adresse liegen dürfen - es also kein Aliasing geben darf. Dies kann der Compiler zu weitergehenden Optimierungen nutzen. Caspar zeigte ein kleines Beispiel mit und ohne Strong-Types und den entsprechenden Compiler-Output mit dem Compiler-Explorer von Matt Godbolt. Und hier konnte man sehen, dass der erzeugte Code kein Reload mehr durchführte - da dies nun nicht mehr nötig ist. Sehr beeindruckend! Strong Types sind echt empfehlenswert.

Nach diesen beiden ernsten C++ Vorträgen stellte sich Daniel Evers der Gruppe und bekannte dass er immer mal wieder schlechten Code schreibt. Das sein Code nicht immer Unit-Tests enthält, und dass er manchmal ohne Tests Code ändert. Aber Daniel ist sich seiner Fehler bewußt, und bat die Gruppe um Verständnis und Vergebung.

C++ User-Treffen Aachen 12.04.2018 - Bild 5
Foto 05: Daniel Evers mit "C++ Selbsthilfegruppe"

Am Ende seines offenen und mutigen Bekenntnisses bat er dann alle Anwesenden mit ihm das Mantra des Refactorings anzustimmen...

C++ User-Treffen Aachen 12.04.2018 - Bild 6
Foto 06: C++ User-Treffen Aachen 12.4.2018

Nach soviel Selbstkritik und Selbsterkenntnis tat uns allen eine Pause gut, und wir erfreuten uns nochmal an Speisen und Getränken. Außerdem gab es nach den Vorträgen natürlich genug fachliches zu diskutieren, und manche kleinere Gruppe folgte dem Beispiel von Daniel und berichtete von ihren Code-Vergehen.

C++ User-Treffen Aachen 12.04.2018 - Bild 7
Foto 07: C++ User-Treffen Aachen 12.4.2018

C++ User-Treffen Aachen 12.04.2018 - Bild 8
Foto 08: C++ User-Treffen Aachen 12.4.2018

Den zweiten Teil des Abends übernahm dann Christian Terboven mit dem Thema OpenMP. Christian arbeitet an der RWTH Aachen im Bereich des High-Performance-Computing (HPC) - der Performance-Optimierung von Programmen für stark parallele Großrechner-Systeme. Ein typisches Werkzeug in diesem Bereich ist eben OpenMP, das die automatische Parallelisierung von Schleifen, aber auch task-oientierte Parallel-Programmierung ermöglicht.

C++ User-Treffen Aachen 12.04.2018 - Bild 9
Foto 09: Christian Terboven mit "OpenMP"

Da Christian selber seit Jahren in der Standardisierung von OpenMP mitarbeitet, steckt er tief in dem Thema drin - und das merkte man dem Vortrag und vor allem den Antworten bei Nachfragen auch an. Zuerst aber holte er alle Anwesenden ab. Da nicht jeder schon mit OpenMP gearbeitet hat, bzw. sogar noch gar nichts davon gehört hatte, stellte er OpenMP erstmal vor. Er sprach auch die Historie von OpenMP, zeigte die kommenden Versionen auf, und erzählte einige Stories aus der Standardisierung. Aber auch die Parallelisierung von Schleifen, OpenMP Tasks, die Verteilung auf mehrere Rechner und das Nutzen von GPUs waren seine Themen.

Wie jeder Vortrag führte auch dieser zu vielen Nachfragen und Diskussionen. Für einige Anwesenden war OpenMP komplett neu - andere arbeiten seit Jahren damit. Egal, wer was fragte - Christian konnte immer wieder versiert und hilfreich antworten. Am Ende hatte jeder was gelernt - die einen Grundlagen, die anderen interessante Details. Ein richtig schöner Vortrag.

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: