Wilkening-Online Logo

C++ User-Treffen in Aachen am 10.11.2016



Von Detlef Wilkening

28 C++ Interessierte waren zum ersten Treffen bei Utimaco gekommen, um einigen wahrscheinlich sehr interessanten Vorträgen über C++ zu lauschen und über C++ zu diskutieren.

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

Zuerst aber einen herzlichen Dank an Utimaco, die uns ab jetzt auch regelmäßig beherbergigen werden, und uns mit einem reichhaltigen Essens-Buffet und Getränken willkommen hießen. Vielen Dank nochmal für die tolle Bewirtung.

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

Wie immer begann der Abend mit einer kleinen Einleitung von mir. Ich kündigte das aktuelle Programm an, blickte kurz auf die Vorschau für das Treffen im Januar 2017, und appellierte wie immer an die Teilnehmer das ich auf der Suche nach Freiwilligen, Vorträgen und Events für 2017 bin.

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

Bevor es dann zu den echten C++ Themen ging, stellte Galina Dyck die Firma Utimaco vor, ihre Historie, ihre Produkte und Anwendungs-Gebiete, und vergaß natürlich auch nicht zu erwähnen, dass sie C++ Programmierer suchen.

C++ User-Treffen Aachen 10.11.2016 - Bild 4
Foto 04: Galina Dyck bei der Vorstellung von Utimaco

Außerdem hatte Utimaco für jeden Teilnehmer Willkommens-Geschenke in Form von Tassen, Schreibblöcken, Stiften und Power-Banks aufgebaut - auch dafür nochmal vielen Dank.

Den ersten realen C++ Part übernahm dann Daniel Evers, der seine String Library "SPSL" ("special purpose strings library") vorstellte. Natürlich ist die Standard-String Klasse von C++ sehr schön und mächtig - trotzdem gibt es Spezial-Situationen, wo sie nicht optimal ist. Daniel hatte 2 Problemfälle ausgemacht, die die Standard String Klasse nicht gut abdeckt.

C++ User-Treffen Aachen 10.11.2016 - Bild 5
Foto 05: Daniel Evers mit seiner "special purpose strings library"

Problemfälle: Daniel ging in seinem Vortrag neben der Vorstellung des Interfaces und den String-Varationen stark auf die Probleme der Implementierung ein, z.B. wie er es löst, dass die Compiler-Optimierung nicht das Löschen der Passwort-Strings wegoptimiert. Daher war der Vortrag nicht nur eine Vorstellung der SPSL, sondern bot auch viele sehr interessante Detail-Informationen - ich werde Daniel auf einige Folge-Vorträge ansprechen müssen...

C++ User-Treffen Aachen 10.11.2016 - Bild 6
Foto 06: Probleme bei der Implementierung der "SPSL"

Daniel will seine String-Library Open-Source zur Verfügung stellen. Sobald ich den entsprechenden Link habe, werde ich ihn hier zur Verfügung stellen. Update: Mittlerweile stehen die Klassen auf GitHub online.

Der zweite C++ Vortrag von Andreas Milton Maniotis drehte sich um eine Beispiel für die Nutzung des C++ Type-Trailings. Andreas stellte das Problem des Flattens (Platt-Klopfens) von mehr-dimensionalen Strukturen (z.B. verschachtelten Containern) vor. Dann zeigte er eine allgemeine Lösung in C++, die ohne Typ-Trailing nicht implementierbar wäre.

C++ User-Treffen Aachen 10.11.2016 - Bild 7
Foto 07: Andreas Milton Maniotis mit "C++ Type-Trailings"

In wie fern ein so allgemeines Flatten von mehr-dimensionalen Strukturen ein typisches praktisches Programmier-Problem darstellt, möchte ich hier nicht diskutieren - ich hatte das Problem noch nicht. Aber es war interessant zu sehen, wie die C++ Sprach-Features zusammenspielen können, und sich so sehr allgemeine Lösungen entwickeln lassen. Danke für diesen interssanten Vortrag. Der Quelltext steht hier zum Studium oder praktischen Einsatz zur Verfügung.

Den dritten C++ Vortrag hatte ich dann übernommen und ich stellte das Coverage-Tool OpenCppCoverage vor. Lange Zeit hatte ich das Problem, dass ich als hauptsächlicher Microsoft Visual-Studio Nutzer kein kostenloses Coverage-Tool zur Verfügung hatte - und damit z.B. zuhause doch etwas eingeschränkt war. Anfang des Jahres war ich während der Diskussionen bei einem C++ User-Treffen auf dieses Tool aufmerksam gemacht worden, und habe es seitdem viel im Einsatz.

C++ User-Treffen Aachen 10.11.2016 - Bild 8
Foto 08: Detlef Wilkening mit "OpenCppCoverage"

Da aber nicht alle Teilnehmer unserer C++ User-Treffen Experten der Programmierung sind, sondern wir auch immer Anfänger und Einsteiger zu Besuch haben - begann ich den Vortrag erstmal mit der Frage was überhaupt ein Coverage-Tool ist, und welche Arten von Coverage es denn gibt.

Danach stellte ich das Coverage-Tool "OpenCppCoverage" vor, das auf den PDB-Dateien des Microsoft Visual-Studios aufsetzt. Dies hat einige Vorteile (Code muss nicht instrumentiert werden, die Coverage-Analyse verlangsamt die Code-Ausführung kaum,...), aber auch einige Nachteile (nicht ausgeführter Code wird manchmal nicht erkannt, ...). Ich stellte die Nutzung und die aus meiner praktischen Anwendung aufgefallenen Vor- und Nachteile vor. Und obwohl ich technisch verstehe, warum OpenCppCoverage zum Teil nicht ausgeführten Code nicht erkennen kann - halte ich dies neben der nur unterstützten Anweisungs-Coverage für einen schwerwiegenden Nachteil. Auf der anderen Seite ist ein durchschnittliches Coverage-Tool immer noch um Klassen besser als gar keins - und so gehört es heute zu meinen Standard-Tools bei der Entwicklung - man muss halt auf die Probleme achten. Den Vortrag findet ihr hier als PDF.

Nach sovielen Informationen konnten erstmal alle Teilnehmer eine Pause und Stärkung gebrauchen, und so machten wir einen Break, "stürzten" uns auf Essen und Getränke und diskutierten die bisherigen Vorträge. Ich war wieder unterwegs auf der Suche nach neuen Freiwilligen und Vorträgen - und wie eigentlich immer sehr erfolgreich - die nächsten Treffen sich thematisch gesichert.

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

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

Frisch gestärkt ging es dann in die letzte Runde des Abends. Daniel Frey stellte seine Json-Library "taocpp/json" vor. Diese Json-Library ist header-only und basiert auf C++11. Sie zeichnet sich durch Einfachheit in der Nutzung aus, und unterstützt z.B. "JSON Pointer", "JSON Patches" oder die Standard C++ Container

C++ User-Treffen Aachen 10.11.2016 - Bild 11
Foto 11: Daniel Frey mit "taocpp/json"

Daniel stellte nicht nur die Schnittstelle vor, sondern zeigte auch viele Teile der Implementierung, präsentierte Performance-Vergleiche, und machte mit vielen Code-Beispielen auch die einfache Nutzung von "taocpp/json" greifbar. Gerade seine Logging-Beispiele kamen bei vielen Teilnehmern gut an und führten zu mancher regen Diskussion und vielen Nachfragen.

C++ User-Treffen Aachen 10.11.2016 - Bild 12
Foto 12: Teile des Designs von "taocpp/json"

Interessant an "taocpp/json" war auch, dass die Bibliothek sowohl eine DOM- als auch eine SAX-artige API anbietet, und hier viele Eingriffsmöglichkeiten und komfortable Schnittstellen zur Verfügung stellt. Viele Teilnehmer waren hinterher jedenfalls sehr motiviert, Daniel bei der Portierung der Bibliothek auf Windows zu helfen, oder sie in ihren Projekten zu nutzen. Der Vortrag steht hier als PDF zur Verfügung. Danke nochmal an Daniel von hier für diesen interessanten Vortrag.

Insgesamt war der Abend wieder sehr erfolgreich - viele interessante Themen, spannende Vorträge, und angeregte Diskussionen bis spät in die Nacht hinein - die letzten Teilnehmer gingen erst um kurz vor 24:00 Uhr. Wir freuen uns schon auf das nächsten C++ User-Treffen am 12. Januar 2017.



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: