Wilkening-Online Logo

C++ User-Treffen in Aachen am 15.2.2018



Von Detlef Wilkening

Das C++ User-Treffen Aachen fand mal wieder bei Schlumberger statt, und 41 C++ interessierte Teilnehmer waren gekommen. Über den großen Zuspruch habe ich mich diesmal besonders gefreut, da wir den Termin wegen Karnevals ja relativ kurzfristig um eine Woche verschieben mussten. Scheinbar hatten aber alle die Verschiebung rechtzeitig mitbekommen und konnten so in Ruhe Karneval feiern und auch das C++ User-Treffen mitbekommen. Eine echte Win/Win Situation.

C++ User-Treffen Aachen 15.02.2018 - Bild 1
Foto 01: C++ User-Treffen Aachen 15.2.2018

41 Teilnehmer waren für den Raum bei Schlumberger wieder eine Herausforderung, aber natürlich bekamen wir das gut gemeistert. Witzigerweise kommen gerade zu Schlumberger immer sehr viele Teilnehmer, obwohl der Raum eher einer der Kleineren ist. Vielleicht lieben die C++ Entwickler es kuschelig eng - oder es liegt am besseren Standort - die Pascalstraße ist schon weit draussen.

Wie immer Danke an Schlumberger für die Räumlichkeiten und die Getränke.

C++ User-Treffen Aachen 15.02.2018 - Bild 2
Foto 02: C++ User-Treffen Aachen 15.2.2018

Der Abend began mit den obligatorischen Einleitungen. Sven Johannsen führte die Sicherheitsbelehrung durch, und ich läutete den Abend thematisch ein. Wichtig war mir diesmal, dass uns langsam die Lightning Vorträge ausgehen. Also auch nochmal von hier der Aufruf: wer bei den nächsten Treffen einen kleinen Vortrag halten möchte (von 5-40 Minuten, einfach oder schwer) - soll sich bitte bei mir melden. Es gibt zwar noch einige Anmeldungen für kleinere Vorträge - aber nur sehr wenige konkrete Zusagen für die nächsten Male.

C++ User-Treffen Aachen 15.02.2018 - Bild 3
Foto 03: Detlef Wilkening und Sven Johannsen bei der Einleitung und der Sicherheitsbelehrung

Der fachliche Abend konnte damit aber immer noch nicht starten. Wolfram Rösler hat einen Google Kalender mit den Terminen der C++ Treffen angelegt - und stellte ihn vor und zur Verfügung. Wer Interesse hat, und immer über z.B. Verschiebungen (wie diesen oder nächsten Monat) informiert sein möchte, sollte ihn in seine Terminverwaltung importieren. Hier ist der Link: https://calendar.google.com/calendar/ical/ogb1opic5qllggh4v5l6m5ghvk@group.calendar.google.com/public/basic.ics.

C++ User-Treffen Aachen 15.02.2018 - Bild 4
Foto 04: Wolfram Rösler stellt den C++ User-Treffen Kalender vor

Und endlich war es soweit - die fachlichen Vorträge konnten starten. Den Anfang machte Michael Becker mit einem Vortrag über "reinterpret_cast". "reinterpret_cast" gehört ja eher zu den dunklen Seiten der Macht, und ist vielen Programmierern ein Greul. Michael konnte sehr schön zeigen, was "reinterpret_cast" kann - und was nicht - und wofür man ihn zwingend benötigt. Die vielen Fragen und Diskussionen während des Vortrags zeigten, dass hier sicher noch Bedarf für mehr Vorträge ist - denn manches Detailthemen musste letztlich ungeklärt bleiben. Im Nachhinein kann man nur sagen: hätte ich Michael man zu einem Hauptvortrag überredet - das Thema gibt es lässig her. Trotzdem haben wohl alle was gelernt und die Angst vor "reinterpret_cast" wurde hoffentlich etwas abgebaut.

C++ User-Treffen Aachen 15.02.2018 - Bild 5
Foto 05: Michael Becker mit "reinterpret_cast"

Auf "reinterpret_cast" folgte Daniel Evers mit "Trace yourself for fun and profit". Wer regelmäßiger Besucher des Aachener C++ User-Treffens ist - der weiß, dass Daniel sich stark mit Sicherheits-Aspekten beschäftigt. Auch hier ging es wieder um diesen Bereich - konkret darum den Zugriff auf programm-interne Abläufe durch z.B. Debugging oder Tracing zu erschweren. Unmöglich machen kann man es nicht - aber die Hürde immer mehr anheben - häufig reicht das ja schon.

Daniels Trick war sich einfach selbst zu tracen. Unix unterstützt nur eine Debug- bzw. Tracing-Session pro Prozess - und so würde der Versuch einer externen Debug- bzw. Tracing-Session schief gehen. Im Detail gibt es dabei natürlich noch einiges zu beachten - aber Daniel zeigte viele (alle?) Fallen und Probleme, und wie man sie umgehen kann.

C++ User-Treffen Aachen 15.02.2018 - Bild 6
Foto 06: Daniel Evers mit "Trace yourself for fun and profit"

Sicher kein Thema für jeden Tag, aber wer wie Daniel in einem solchen Umfeld tätig ist - für den war der Vortrag sehr hilfreich - für alle anderen (wie auch mich) nur super spannend und interessant. Hier findet ihr die Präsentation und die Sourcen.

Der letzte Lightning-Vortrag des Abends war wieder von einem Daniel, aber diesmal von Daniel Frey. Er stellte Todos im Code mit Ablaufdatum vor. Sein Vortrag war vielleicht nicht ganz ernst gemeint - die Umsetzung trotzdem fachlich sehr aufschlußreich.

C++ User-Treffen Aachen 15.02.2018 - Bild 7
Foto 07: Daniel Frey mit "Constexprs Todos"

Daniel stellte Todos vor, die direkt im Code stehen können (nicht im Kommentar). Das Besondere war aber, dass man sie mit einem Ablauf-Datum versehen muss - und nach dem Datum compilieren sie nicht mehr. Während vorher alles okay war, führen sie nach dem Ablauf-Datum zu einem Compiler-Error. Der Trick basierte natürlich auf Constexpr Ausdrücken - und das Prinzip war schnell klar. Im Detail war es dann wieder spannend zu sehen, wie man z.B. Daten zur Compile-Zeit parst - ein wunderschöner kleiner Vortrag.

Dann war erstmal Pause. Und nach soviel Input waren wir alle froh über eine Unterbrechung und die Möglichkeit das Gehörte zu diskutieren und etwas zu Trinken und zu Knabbern.

C++ User-Treffen Aachen 15.02.2018 - Bild 8
Foto 08: C++ User-Treffen Aachen 15.2.2018

C++ User-Treffen Aachen 15.02.2018 - Bild 9
Foto 09: C++ User-Treffen Aachen 15.2.2018

C++ User-Treffen Aachen 15.02.2018 - Bild 10
Foto 10: C++ User-Treffen Aachen 15.2.2018

Auf die Pause folgte der Hauptvortrag über "Fun with User-defined Attributes" von Jonathan Müller (foonathan). Jonathan stellt erstmal vor, was Attribute in C++ überhaupt sind - sie sind ja erst mit C++11 eingeführt worden und relativ wenig genutzt. Auch wir hatten leider noch keinen einzigen Vortrag in Aachen über dieses Thema. Aber was nicht ist, kann ja noch werden.

C++ User-Treffen Aachen 15.02.2018 - Bild 11
Foto 11: Jonathan Müller mit "Fun with User-defined Attributes"

Eigentlich sind die Attribute in C++ Mitteilungen an den Compiler - z.B. das eine Funktion nicht normal zurückkehrt oder sich Speicherbereiche nicht überschneiden. Der Compiler kann diese Informationen dann nutzen um effizienteren Code zu erzeugen. Alle Attribute sind aber im Standard fest definiert - es gibt gar keine "User-defined Attributes" in C++.

Der Trick ist, dass der C++ Standard mittlerweile festlegt, dass Compiler unbekannte Attribute zu ignorieren haben. Denn natürlich dürfen auch die Compiler eigene Attribute implementieren - und die sollen auf anderen Compilern nicht zu Warnungen führen. Dies hat übrigens den Nachteil, dass wenn man sich bei den Attributen vertippt - dann meckert kein Compiler - es funktioniert nur nicht.

Wenn jetzt der Compiler unbekannte Attribute ignoriert, dann kann man sich auch selber welche ausdenken und in den Quelltext einfügen - und schon hat man user-definierte Attribute. Nur, was macht man dann damit?

C++ User-Treffen Aachen 15.02.2018 - Bild 12
Foto 13: Jonathan Müller mit "Fun with User-defined Attributes"

Zur Zeit gibt es nur eine Möglichkeit - man schreibt sich selber ein Tool, dass diese Attribute auswertet und nutzt. Also z.B. für Generatoren, Code-Analyser, oder Dokumentations-Tools. Jonathan zeigte genau solche Dinge. Aber er sagte auch - so richtig interessant wird dies alles erst dann werden, wenn wir im C++ Standard Compile-Zeit Reflection-Mechanismen haben werden, die uns dann helfen diese Attribute on-the-fly auszuwerten und darauf basierend Meta-Programmierung zu machen. Proposals hierfür gibt es - aber noch ist das Zukunftsmusik.

C++ User-Treffen Aachen 15.02.2018 - Bild 13
Foto 13: Jonathan Müller mit "Fun with User-defined Attributes"

Es war ein sehr interessanter Vortrag von Jonathan über ein Thema in C++, über das man oft viel zu wenig weiß. Selbst wenn einiges erst in Zukunft so richtig hilfreich wird - schon jetzt kann man mit den Attributen viel machen und es war gut mehr darüber zu erfahren. Die Fragen und Diskussionen während des Vortrags zeigten auch hier wieder, dass es viel Bedarf gibt.

Nochmal am Ende der Hinweis - das nächste Treffen im März 2018 wird am dritten Donnerstag stattfinden, d.h. am 15.3.2018 - und nicht am zweiten Donnerstag. Also gut merken - oder den Kalender von Wolfram (s.o.) nutzen.



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: