Wilkening-Online Logo

C++ User-Treffen in Aachen am 12.1.2017



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.

45 C++ Interessierte waren zum ersten C++ User-Treffen bei ModuleWorks gekommen, und füllten den Raum gut aus. Vielen Dank an die fleissigen Helfer von ModuleWorks, die immer wieder Stühle holten, damit jeder einen Platz fand.

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

Auch nochmal vielen Dank an ModuleWorks für den Raum, Getränke und die Verpflegung. Am Ende was das Buffet ratzekahl geleert - was bei 45 Teilnehmern kein Wunder war.

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

Aber zurück zum eigentlichen Treffen. Wie immer eröffnete ich den Abend mit einer kurzen Vorstellung der geplanten Vorträge, einem kleinen Ausblick auf das nächste C++ Treffen im März, und der schon normalen Ankündigung das ich auf Suche nach weiteren Vorträgen - und in der Pause für Vorschläge offen bin.

C++ User-Treffen Aachen 12.1.2017 - Bild 3
Foto 03: Detlef Wilkening bei der obligatorischen Einleitung des C++ User-Treffens

Den Reigen der fachlichen Vorträge eröffnete dann Sven Johannsen mit "Clang im Visual-Studio mit CMake". Zuerst erzählte Sven, wie er auf diesen Vortrag gekommen ist. Er hatte ein nettes Test-Framework kennengelernt, und wollte es ausprobieren - es compilierte aber nicht mit dem Microsoft Visual-Studio 2015, sollte aber mit dem Clang funktonieren. Zum Glück liefert Microsoft ja mittlerweile den Clang als Option beim Visual-Studio mit.

C++ User-Treffen Aachen 12.1.2017 - Bild 4
Foto 04: Sven Johannsen mit "Clang im Visual-Studio mit CMake"

Leider existieren im Visual-Studio nur Projekt-Vorlagen für Libs und Dlls. Die Idee dahinter ist, dass man eine Lib in sein Visual-Studio Projekt integrieren möchte, die nur mit dem Clang compiliert - das eigentliche Projekt aber noch immer mit dem Visual-Studio Compiler compiliert.

Nun war dies nicht der Use-Case von Sven - er wollte das "main" mit dem Clang compilieren. Aber man kann ja einfach das Toolkit in den Projekt-Eigentschaften vom Visual-Studio umstellen. Gesagt, live getan...

C++ User-Treffen Aachen 12.1.2017 - Bild 5
Foto 05: Sven Johannsen mit "Clang im Visual-Studio mit CMake"

Aber es funktionierte nicht. Es sind viele weitere Einstellungen notwendig, um z.B. auch die Visual-Studio Header mit dem Clang übersetzen zu können. Und hier kam jetzt CMake ins Spiel. Wird das Visual-Studio Projekt mit CMake und dem Clang-Toolkit generiert, dann stimmen direkt alle Einstellungen, was uns Sven dann auch erfolgreich vorführte. Sein Vortrag und seine Sourcen stehen demnächst online - ich werde den Link dann nachliefern.

Nach Sven kam Abhijit Sovakar mit einem Vortrag über ein Funkions-Repository - auch "Named Methods" genannt - ins Spiel. Abhijit hatte das Problem lösen müssen, das eine DLL Funktionen aus einer anderen DLL aufrufen sollte, ohne das sich die DLLs näher kennen dürfen. Dazu hatte Abhijit eine Funktions-Registry entwickelt, in der man Funktionen mit einem beliebigen Namen registrieren und aufrufen konnte.

C++ User-Treffen Aachen 12.1.2017 - Bild 6
Foto 06: Abhijit Sovakar mit seinem "Funktions-Repository (Named Methods)"

Eine Besonderheit seiner Funktions-Registry war hierbei, dass sie Überladen unterstützt. Daher man kann unter einem Namen mehrere Funktionen mit unterschiedlicher Signatur registrieren - und sie auch entsprechend (d.h. über die Signatur) auffinden und aufrufen.

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

Die Implementierung von Abhijit nutzte hierbei viele Templates und machte auch sehr viel Gebrauch von "Boost.function", "Boost.bind" und vielem mehr. Der Vortrag war spannend und interessant - aber allen Details zu folgen war schon eine Herausforderung. Sobald ich die Folien und Sourcen habe, werde ich sie hier zur Verfügung stellen.

Der letzter kleine Vortrag vor der Pause kam von Daniel Evers und handelte von der Einbettung des Python-Interpreters in ein C++ Programm um es scriptfähig zu machen: "Scripting your C++ application - integrating the Python runtime".

C++ User-Treffen Aachen 12.1.2017 - Bild 8
Foto 08: Daniel Evers mit "Scripting your C++ application - integrating the Python runtime"

Für viele Anwendungen ist dies ein sehr interessanter Use-Case. Sei es, um eine komplexere Konfiguration on-the-fly zu ermöglichen, Benutzer-Workflows einfach automatisieren zu können, oder einfach die Turn-Around Zeiten beim Entwickeln zu minimieren - ein integrierter Python-Interpreter bietet viele Möglichkeiten.

C++ User-Treffen Aachen 12.1.2017 - Bild 9
Foto 09: C++ User-Treffen Aachen 12.1.2017

Daniel hatte ein kleines GUI Programm vorbereitet, bei dem er sowohl mehrere Buttons als auch mehrere Images durch den Python-Interpreter ansprechen konnte. Und so konnte er nun mit einem kleinen Skript die Images steuern, oder an die Buttons Aktionen hängen. Echt eindrucksvoll, wie einfach sich der Python-Interpreter integrieren ließ und sich dann dynamisch Button und Images umkonfigurieren ließen. Seinen Vortrag und die Sourcen findet man hier auf GitHub.

Nach den 3 Vorträgen waren fast 1 1/2 Stunden rum, und es war Zeit für eine Pause. Die Anwesenden sprachen den Getränken und Speisen zu und diskutierten über das Gehörte - während ich auf der Suche nach weiteren Vorträgen viele Anwesende ansprach. Wie fast immer war meine Jagd auch diesmal erfolgreich - freut euch - ich konnte viele interessante Vorträge für die nächsten Treffen rekrutieren.

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

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

C++ User-Treffen Aachen 12.1.2017 - Bild 12
Foto 12: C++ User-Treffen Aachen 12.1.2017

C++ User-Treffen Aachen 12.1.2017 - Bild 13
Foto 13: C++ User-Treffen Aachen 12.1.2017

Nach der Pause ging es weiter mit dem letzten großen Vortrag: Volker Aßmann mit "Serialisierungs-Bibliotheken im Vergleich". Volker stellte zuerst vor, welche Serialisierungs-Bibliotheken er vergleichen wollte und ging dann auf die Kriterien ein, nach denen er die ausgewählten Serialisierungs-Bibliotheken einordnen wollte. Schon allein dieser Teil war den Abend wert - da man nochmal merkte, wieviele unterschiedliche Kriterien es für Serialisierungs-Bibliotheken gibt - nicht nur Performance oder Daten-Größe spielen eine Rolle.

C++ User-Treffen Aachen 12.1.2017 - Bild 14
Foto 14: Volker Aßmann mit "Serialisierungs-Bibliotheken im Vergleich"

Nach der Vorstellung der Kriterien arbeitete Volker alle angekündigten Serialisierungs-Bibliotheken ab und zeigte, wie sie sich unterscheiden. Neben einer allgemeinen Einordnung zeigte er Beispiel Code, wie man Objekte mit ihnen speichert und wieder lädt. Außerdem ging er immer kurz auf spezielle Besonderheiten oder Features der Serialisierungs-Bibliotheken ein.

C++ User-Treffen Aachen 12.1.2017 - Bild 15
Foto 15: Volker Aßmann mit "Serialisierungs-Bibliotheken im Vergleich"

Am Ende ging es dann natürlich auch noch um Performance und die Größe der Datenpakete. Volker hatte intensive Messungen an allen Serialisierungs-Bibliotheken vorgenommen und zeigte uns die Gewinner und Verlierer seiner Tests. Wobei man hier vorsichtig sein muss - eine Json Datei ist immer langsamer zu erzeugen und größer, als ein hochoptimiertes Binär-Format - ist dafür aber portabel und lesbar. Man muss eben seine eigenen Anforderungen gegen die Features der Serialisierungs-Bibliotheken mappen - und dabei Performance und Daten-Größe nur als ein weiteres Feature betrachten.

Die anschließende Diskussion zeigte, dass Serialisierungs-Bibliotheken ein Thema ist, dass wohl fast jeden Programmierer betrifft - viele hatten schon Kontakte mit ihnen gehabt und eigene Erfahrungen gesammelt. Viele Fragen und Anmerkungen lieferten für alle Anwesenden viele neue Hinweise und Ideen - es hat sich sehr gelohnt zu kommen. Seinen Vortrag findet man hier auf GitHub inkl. Sourcen.

Danach war das C++ Treffen vorbei - und auch noch nicht. Während mancher aufgrund der späten Stunde das Treffen direkt verließ, blieben andere noch da. Einige Anwesenden halfen beim Aufräumen, andere diskutierten noch lange das Gehörte oder auch andere Themen rund um C++.

C++ User-Treffen Aachen 12.1.2017 - Bild 16
Foto 16: C++ User-Treffen Aachen 12.1.2017

Irgendwann war es dann wirklich spät, und die letzten wurden hinauskatapultiert. Wir haben dann noch länger an der Straße gestanden und geredet - aber Stück für Stück löste sich das Treffen dann doch endgültig auf.



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: