Wilkening-Online Logo

C++ User-Treffen in Aachen am 11.4.2019



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 diesmal bei ModuleWorks statt. 31 C++ Interessierte waren gekommen, um sich Vorträge über C++ anzuhören und um über C++ zu diskutieren. Zuerst einmal vielen Dank von hier an ModuleWorks für den Raum und die Bewirtung mit Essen und Getränken.

C++ User-Treffen Aachen 11.04.2019 - Bild 1
Foto 01: C++ User-Treffen Aachen 11.4.2019

C++ User-Treffen Aachen 11.04.2019 - Bild 2
Foto 02: C++ User-Treffen Aachen 11.4.2019

Die Einleitung in den Abend übernahm diesmal nicht ich, sondern Elena Brinster. Sie begrüßte herzlich alle Gäste im Namen von ModuleWorks, und erklärte kurz ein paar organisatorische Details - Danke nochmal von hier aus. Danach übergab sie die Moderation an mich - und ich durfte mich dann um die fachliche Einleitung in den Abend kümmern.

C++ User-Treffen Aachen 11.04.2019 - Bild 3
Foto 03: Elena Brinster bei der Begrüßung bei ModuleWorks

Heute hatte ich mehrere Themen für die Einleitung: Leider musste Alexander Brennecke aufgrund von Krankheit kurzfristig absagen - sein Yocto-Vortrag fiel also aus. Aber keine Panik - er wird laut aktueller Planung im Juni nachgeholt. Zum Glück für den heutigen Abend war es für Mirco kein Problem, spontan seinen OpenGL Vortrag zu verlängern - er hat immer genug Material, wenn es um Computer-Grafik geht. Ein weiterer wichtiger Punkt von mir war, dass die Planung für die nächsten Monate große Lücken aufwies. Feste Zusagen bei den Hauptvorträgen hatte ich nur noch für nächste Treffen - bei den Lightning-Vorträgen war nicht einmal das nächste Treffen abgedeckt, auch wenn es dort schon feste Zusagen für einige andere Termine gab. Also machte ich eine klare Ansage, dass ich in der Pause dringend Zusagen benötige... Und ansonsten blieb mir nur noch, allen Teilnehmern viel Spaß für den heutigen Abend zu wünschen.

Den Anfang des fachlichen Abends machte Mirco Müller mit "OpenGL Live-Coding". Im Prinzip war dies eine Fortsetzung des Vortrags über Sphere-Tracing und Ray-Marching in C++ vom 17.5.2018. Um alle Anwesenden abzuholen, stellte Mirco nochmal ganz kurz die Idee von Ray-Marching und seine Implementierung in C++ vor.

C++ User-Treffen Aachen 11.04.2019 - Bild 4
Foto 04: Mirco Müller mit "OpenGL Live-Coding"

Danach ging es ans Live-Coding. Als Basis war einfach ein leerer Raum vorhanden. Mirco setzte sich an den Rechner und erweiterte das Grundgerüst live und in Farbe weiter. Im ersten Schritt fügte er eine Kugel hinzu - eine noch ziemlich einfache Aufgabe. Im zweiten Schritt erstellte er mehrere Beleuchtungen für die Szene, damit die Kugel nicht mehr so langeweilig aussah - sondern je nach Richtung farbige Schattierungen bekam. In den nächsten Schritten kam dann eine Gitterstruktur hinzu, die aus Balken und Zylindern bestand - Bild 5 vermittelt einen Eindruck von diesem Zwischenstand ohne die noch fehlende Gitterstruktur in der Z-Richtung.

C++ User-Treffen Aachen 11.04.2019 - Bild 5
Foto 05: Mirco Müller mit "OpenGL Live-Coding"

Und so ging es live weiter. Mirco erweiterte die Szene immer mehr, bis er einen unendlichen sich immer wiederholenden Raum mit Gitterstruktur und Beleuchtung stehen hatte. Höhepunkt und Abschluß des Live-Codings war dann die Bewegung der Kamera entlang der Z-Achse - wobei genau genommen die Kamera eigentlich still stand und sich statt dessen der Raum bewegte.

Es war ein sehr schöner und interessanter Vortrag gewesen. Er zeigte sehr schön, wie einfach sich eine solche Szene mit Ray-Marching aufbauen und implementieren läßt - wenn man die entsprechenden Ideen verstanden hat und die OpenGL API kennt. Die vielen Zwischenfragen und Diskussionen zeigten auch, dass Grafik immer wieder ein Thema ist, was viele Programmierer anspricht.

Nach dieser über eine Stunde langen Live-Coding Session waren wir alle froh über eine Pause mit Essen und Getränken - und natürlich vielen Diskussionen über das Gehörte. Für mich hieß das, rumlaufen und alle Anwesenden anquatschen und motivieren auf der Suche nach neuen Vorträgen und festen Zusagen. Und - danke an viele Anwesende - ich war sehr erfolgreich. Ganz viele schlugen Themen vor und waren bereit für feste Termine. Wer sich die aktuelle Planung anschaut, wird sehen, dass nun alle Slots für 2019 belegt sind, und auch schon die ersten Slots in 2020 gefüllt sind. Und es sind so viele interessante Themen dabei - ich freue mich schon sehr auf die nächsten Treffen.

C++ User-Treffen Aachen 11.04.2019 - Bild 6
Foto 06: C++ User-Treffen Aachen 11.4.2019

C++ User-Treffen Aachen 11.04.2019 - Bild 7
Foto 07: C++ User-Treffen Aachen 11.4.2019

Nach der Pause ging es weiter mit Michael Becker, der eine eigene Any-Bibliothek geschrieben hat, und diese vorstellen wollte. Nun gibt es schon ewig eine Any-Bibliothek in Boost, und mit C++17 ist sie auch endlich im Standard vorhanden. Wozu also noch eine eigene Any-Bibliothek, bzw. wo liegen ihre Vorteile (und vielleicht auch Nachteile) gegenüber Boost oder C++17?

C++ User-Treffen Aachen 11.04.2019 - Bild 8
Foto 08: Michael Becker mit "Eine Reise durch eine Any-Bibliothek"

Michael beschrieb erstmal sehr schön, was eine Any-Bibliothek überhaupt ist, und wo man sie einsetzen kann. Dann stellte er das grundsätzliche Design vor, das der Boost- bzw. Std-Implementierung aufgrund der Anforderungen zugrunde liegen muss - u.a. die interne Verwaltung des gespeicherten Objekts in einem dynamischen Speicherbereich über eine abgeleitete Template-Klasse. Das Problem hier ist klar - dynamische Speicherverwaltung ist immer etwas langsamer und speicherverbrauchender als eine stackbasierte Speicherverwaltung - darum basiert Michaels Any-Bibliothek auf stackbasierter Speicherverwaltung. Zweites Problem der Boost- bzw. Std-Lösung: eine sehr eingeschränkte Schnittstelle - im Prinzip kann man nur den Typ abgleichen und das Objekt abfragen - mehr nicht. Michaels Any-Bibliothek setzt auf Type-Erasure und bietet konfigurierbare Schnittstellen, die sein Any erweitern können.

C++ User-Treffen Aachen 11.04.2019 - Bild 9
Foto 09: Michael Becker mit "Eine Reise durch eine Any-Bibliothek"

Zum Schluss ließ es sich Michael nicht nehmen, noch live einen Performance-Vergleich zwischen seiner und den Boost- und Std-Anys vorzunehmen. Und hier zeigte sich, was wir alle erwartet hatten - dass die stackbasierte Speicherverwaltung die dynamische natürlich schlägt. Aber auch die Type-Erasures machen Michaels Any leichter und angenehmer zu benutzen, wie man am Code leicht sehen konnte. Also sicher eine interessante Alternative zu Boost und C++17. Und die vielen Fragen und Diskussionen zeigten, dass selbst eine einfache Klasse wie "any" viel guten und interessanten Stoff für einen Vortrag bietet.

Nach dem letzten Vortrag war der Abend aber noch nicht vorbei. Viele Anwesende blieben noch länger und diskutierten das Gehörte und andere Aspekte von C++ oder allgemein der Programmierung. Gerade der OpenGL Vortrag sorgte noch für viele Fragen und Diskussionen - Mirco war noch lange beschäftigt, alle Fragen zu beantworten.

C++ User-Treffen Aachen 11.04.2019 - Bild 10
Foto 10: C++ User-Treffen Aachen 11.4.2019

Aber irgendwann ist auch der schönste Abend vorbei, und Stück für Stück machten sich alle auf den Heimweg. Bis zum nächsten C++ Treffen, und nochmal Danke an ModuleWorks.



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: