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.
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.
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.
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.
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 Utimaco GmbH vor, ihre Historie, ihre Produkte und Anwendungs-Gebiete, und vergaß natürlich auch nicht zu erwähnen, dass sie C++ Programmierer suchen.
Foto 04: Galina Dyck bei der Vorstellung der Utimaco GmbH
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.
Foto 05: Daniel Evers mit seiner "special purpose strings library"
Problemfälle:
- Strings max. Länge, die vollständig ohne zusätzliche Heap-Zugriffe auskommen, da die Texte komplett im Speicher des String-Objekts liegen. Neben geringerem Speicherverbrauch kann diese Klasse auch einen Performance-Vorteil darstellen, und in Real-Time-Anwendungen umgeht sie die Timing-Probleme der dynamischen Speicher-Allokation und -Deallokation.
- Strings, die ihre Texte am Lebensende oder bei einer Verkleinerung definitiv löschen. Dies ist z.B. bei Strings, die Passwörter oder andere sensible Informationen enthalten sehr wichtig. Außerdem versucht die String-Klasse von Daniel auch bei z.B. Core-Dumps noch den Speicher zu überschreiben, damit auch so keine sensiblen Informationen zugreifbar werden.
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.
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.
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.
Foto 09: C++ User-Treffen Aachen 10.11.2016
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
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.
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.