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 Inform statt. Die Inform war wieder so nett und stellte nicht nur den Raum zur Verfügung - sondern sponsorte das Treffen auch mit Getränken und Essen - danke von hier aus.
Foto 01: C++ User-Treffen Aachen 1.10.2015
Für das diesmalige Treffen hatte sich Michael Wong angekündigt. Michael ist der kanadische Vertreter für die ISO C++ und die OpenMP Standardisierung. Er ist bei IBM für die Entwicklung des XL C++ Compilers zuständig, und vertritt IBM auch in den C++ und OpenMP Standardisierungs-Gremien. Viele Features von C++ und OpenMP gehen auf ihn zurück, u.a. user-definierte Literale und Teile des Memory-Models. Seine besonderen Interessen gelten der Parallel-Programmierung, der Performance-Optimierung, HPC und der generischen Programmierung. So hat er z.B. federführend das Proposal für transaktionalen Speicher in C++17 erstellt, aber sein Einfluß findet sich auch in vielen weiteren Propsals.
- Michael Wong auf der ISOCPP Seite: https://isocpp.org/wiki/faq/wg21#michael-wong
Foto 02: C++ User-Treffen Aachen 1.10.2015
Leider mussten wir den Abend mit einer guten und einer schlechten Nachricht starten: Michael würde kommen, sich aber verspäten. Er würde noch bis ca. 20:00 auf der OpenMP Konferenz feststecken, und daher erst gegen ca. 20:30 mit seinem Vortrag starten können. Wir hatten von dem Problem schon am Abend vorher erfahren, selbst wenn es erst Nachmittags wirklich feststand. Und so hatte ich vorsichtshalber einen 3 Jahre alten Vortrag von mir über Template-Meta-Programmierung (TMP) herausgekramt und etwas überarbeitet.
Und so startete ich den Abend nach der obligatorischen kurzen Einleitung und der Aufforderung für neue Vorträge mit einer Einführung in die Grundlagen der Template-Meta-Programmierung (TMP). Nach der Definition von TMP stellte ich zuerst Typ-Listen und Typ-Arrays vor. Für diese entwickelte ich dann einige Algorithmen, wie z.B. "At", "Length", "Reverse" und "PushBack". Die meisten Algorithmen hatte ich in mehreren Versionen dabei - zum Teil basierend auf Abdeckung aller Fälle gelöst, zum Teil funktional gelöst, und auch mit bzw. ohne Fehlererkennung. Zum einen wollte ich zeigen, wie unterschiedlich TMP Lösungen aussehen können - zum anderen sollten die vielen Lösungen der Übung dienen, und so das Verständnis von einer für die meisten C++ Programmierer ungewohnten Materie verbessern.
Foto 03: Detlef Wilkening mit "Einführung in TMP"
Nach Typ-Containern und Typ-Algorithmen stellte ich dann als drittes ein If-Else für Typen vor. Damit war die Grundlage für ein kleines echtes Beispiel gelegt: ein Typ-Template, das eine Byte-Größe bekommt, und sich dann automatisch auf den kleinsten möglichen Integer-Typ abbildet.
Nach etwas über einer Stunde war ich fertig, und wir machten eine größere Pause. Die nutzen die Meisten nochmal für Nachschub an Essen und Getränken, und für zahlreiche Diskussionen. Ich versuchte unter den Anwesenden Freiwillige für Haupt- und Lightning-Vorträgen für die nächsten Treffen zu finden - und war dabei recht erfolgreich. Danke von hier aus an alle, die sich spontan bereit erklärt haben mitzumachen.
Foto 04: C++ User-Treffen Aachen 1.10.2015
Dann war Michael Wong endlich da und der Haupt-Part konnte beginnen.
Foto 05: Michael Wong auf dem C++ User-Treffen in Aachen am 1.10.2015
Michael erinnerte zuerst an die Entwicklungen der letzten 15 Jahre in der C++ Standardisierung, und stellte dann den aktuellen Fahrplan der Standardisierung vor. Nach dem großen Wurf C++11 war C++14 ja nur eine kleine Verbesserung gewesen, selbst wenn z.B. mit generischen Lambdas, einigen vordefinierten Literal-Typen wie "s" und auch "decltype(auto)" auch ein paar wichtige Veränderungen dabei waren. C++17 soll wieder ein großer Wurf werden - C++21 danach wohl wieder ein kleiner Schritt.
Foto 06: Michael Wong auf dem C++ User-Treffen in Aachen am 1.10.2015
Danach ging er detailliert auf die aktuellen Arbeiten bzgl. "Parallelism" und "Concurrency" ein. Parallelism verglich er hierbei mit einem Feld von Läufern, die unabhängig agieren - d.h. es entsteht im Normallfall keine Interaktion zwischen den Threads. Haupt-Neuigkeit bzgl. Parallelism ist die Parallel-STL, d.h. viele Algorithmen die nun durch Angabe von "std::par" parallel ausgeführt werden.
Foto 07: Michael Wong auf dem C++ User-Treffen in Aachen am 1.10.2015
Concurrency dagegen verglich er mit einem Basketball-Spiel, bei dem alle Teilnehmer gleichzeitig spielen - aber auch miteinander interagieren. Hier treten dann Probleme auf, die man mit Synchronisationen, Locks uvm. lösen muss. Gerade im Bereich von Futures wird es in C++17 einiges Neue geben, bis hin zu der Möglichkeit "Continuations" zu nutzen. Danach ging Michael noch auf User-Threads ("Fibers") und Coroutinen ein. Bei Coroutinen scheint sich das Proposal von Microsoft durchzusetzen, selbst wenn es vergleichbare Alternativen gab, die alle Vor- und Nachteile haben. Wichtig beim kommenen Coroutinen-Standard scheint zu sein, dass sie selber "stackless" sind, d.h. effizient kopiert werden können und den Stackbedarf nicht belasten.
Zwischendurch erzählte Michael neben den reinen Fakten auch immer wieder Details aus dem Standardisierungs-Prozess. Und so war der Abend für alle Teilnehmer voller interessanter Ideen und Einsichten.
Foto 08: C++ User-Treffen Aachen 1.10.2015
Fast 2 Stunden später waren Vortrag und Fragerunde vorbei. Damit war es recht spät geworden, und entsprechend schnell verließen die Teilnehmer das Treffen dann auch - aber viele machten vor dem Gehen noch schnell ein Selfie mit Michael - auch ich.
Foto 09: Selfie von Detlef Wilkening & Michael Wong auf dem C++ User-Treffen in Aachen am 1.10.2015
Wir räumten noch auf, und dann war der Abend auch für uns vorbei. Wir freuen uns auf das nächsten C++ User-Treffen in Aachen am 12. November 2015.
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.