Wilkening-Online Logo

C++ User-Treffen in Aachen am 10.3.2016



Von Detlef Wilkening

Das diesmalige C++ User-Treffen in Aachen fand bei Schlumberger statt, und da 41 C++ Interessierte gekommen waren wurde es wieder schön kuschelig, obwohl im Vorfeld zwei Tische herausgeräumt und durch Stühle ersetzt worden waren.

C++ User-Treffen Aachen 10.03.2016 - Bild 1
Foto 01: C++ User-Treffen Aachen 10.3.2016

Wie immer bei Schlumberger startete der Abend mit einer Sicherheitseinweisung von Sven Johannsen. Er unterwies uns kurz und prägnant über das Verhalten im Notfall, klärte über die Fluchtwege und Notausgänge auf und beschrieb den Sammelpunkt für den Fall eines Feuers.

C++ User-Treffen Aachen 10.03.2016 - Bild 2
Foto 02: Sven Johannsen bei der Sicherheitseinweisung

Danach übernahm ich die Begrüßung und stellte das Programm des Abends vor. Leider mußten 2 Lightning-Vorträge kurzfristig verschoben werden. Damit der Abend trotzdem eine gewisse Bandbreite hatte, hatte ich spontan einen Lightning-Vortrag übernommen - und so waren wir wieder bei 3. Außerdem nutze ich die Begrüßung wie immer für den Hinweis, dass ich Vorträge für die nächsten Treffen suche und in den Pausen alle ansprechen würde auf der Suche nach Freiwilligen. Dabei war der Druck diesmal nicht so groß für mich, da schon das gesamte Mai-Treffen mit 4 Lightning-Vorträgen und auch dem Haupt-Vortrag schon vergeben war.

C++ User-Treffen Aachen 10.03.2016 - Bild 3
Foto 03: Detlef Wilkening bei der Begrüßung

Da ich nun schon mal den Beamer übernommen hatte, stieg ich direkt in meinen Vortrag ein. Er hatte kein hochtrabendes, schweres oder besonderes Thema, sondern entwickelte nur eine kleine C++ Klasse, die einen "uint32_t" kapselte, und einen Zugriff auf die Bits mit dem Index-Operator "[ ]" ermöglichte.

Im Prinzip eine ganz einfache Sache, aber mit dann doch mit dem ein oder anderen kleinen Trick oder Aha-Effekt, der für Anfänger nicht sofort ersichtlich ist - z.B. kann man den Operator nur mit "const" überladen, dass der Compiler sich nicht um Semantik wie "Lesen" oder "Schreiben" kümmert sondern seine Auflösung rein über das Typsystem ausführt, wie man Bits aus- und einmaskiert, das man mit einem Proxy-Objekt auch einzelne Bits adressieren kann, u.v.m.

C++ User-Treffen Aachen 10.03.2016 - Bild 4
Foto 04: Detlef Wilkening mit "Bit-Access"

So war der Vortrag dann für die Nicht-Experten in der Runde hoffentlich doch sehr aufschlußreich und lehrreich - den Vortrag kann man hier als PDF herunterladen.

Nach mir betrat Guido Küpper die Bühne und stellte den relativ neuen Visual Studio Editor "Code" vor. In Zeiten von mächtigen IDEs mag manchem ein einfacher Editor wie ein Überbleibsel aus einer längst vergangenen Zeit vorkommen - aber Editoren haben immer noch ihre Berechtigung. Gegenüber großen IDEs können sie in Sekunden starten und trotzdem viele Features anbieten.

C++ User-Treffen Aachen 10.03.2016 - Bild 5
Foto 06: Guido Küpper mit "Visual Studio Editor Code"

"Code" basiert intern auf "Electron" und läuft unter Windows, Linux und Max OS-X. Obwohl er noch recht neu ist, unterstützt er schon viele Sprachen und Features und läßt sich mit hunderten von Extensions an seine eigenene Bedürfniss anpassen und erweitern. Microsoft entwickelt "Code" mit Hochdruck weiter und bringt jeden Monat eine neue Version raus. Guido stellte einige Features vor, der in seiner täglichen Praxis besonders hilfreich für ihn waren - z.B. die Nutzung ganzer Verzeichnisse, die integrierte 2- und 3-Dateien Diff-Optionen, u.v.m. Selbst wenn wahrscheinlich schon jeder Entwickler seinen Lieblings-Editor hat - einen Blick ist "Code" sicherlich immer wert.

Selbst wenn der Vortrag von Guido hauptsächlich aus praktischem Vorführen von "Code" bestand, so hat er seinen Vortrag zusätzlich hier als PDF zur Verfügung gestellt.

Sven Johannsen ergänzte dann spontan den Vortrag von Guido und stellt die Möglichkeit vor Ligaturen in "Code" zu nutzen. Ligaturen sind Zeichen, die eigentlich auf mehreren Zeichen basieren und im normalen Modus nicht zur Verfügung stehen.

C++ User-Treffen Aachen 10.03.2016 - Bild 6
Foto 06: Sven Johannsen mit "Ligaturen im Editor Code"

Z.B. schreiben wir in C++ "!=" für "ungleich" - während es in der mathematischen Schreibweise ein durchgestrichenes Gleichheitszeichen hierfür gibt. Oder wir nutzen "<=" für "kleiner-gleich" - obwohl es auch hierfür ein Zeichen gibt. Mit der Unterstützung von Ligaturen im "Code" können jetzt solche Zeichen genutzt werden - schauen Sie sich mal in Ruhe den Quelltext auf dem nächsten Foto an.

C++ User-Treffen Aachen 10.03.2016 - Bild 7
Foto 07: C++ Quelltext mit Ligaturen

Ich hoffe, Sie haben die ungewohnten Ligaturen für "ungleich", "kleiner-gleich" oder den "Pfeil-Operator" bemerkt. Ob man solchen Quelltext nun besser lesbar findet, ungewohnt oder gewöhnungsbedürftig, oder einfach nur furchtbar häßlich - das mag jeder für sich entscheiden. Das Feature selber ist aber schon erwähnenswert, nicht wahr?

Nach Guido folgte Georg Hellack mit dem letzten Lightning-Vortrag über "Broadcasts mit Boost.Asio". Georg stellte zuerst den Anwendungsfall vor, der ihn zu diesem Problem geführt hatte: die Suche aller aktiven Sensoren und Aktoren in einem Industrie-Netzwerk.

C++ User-Treffen Aachen 10.03.2016 - Bild 8
Foto 08: Georg Hellack mit "Broadcasts mit Boost.Asio"

Danach ging Georg auf technische Details ein und stellte die wichtigsten Elemente von "Boost.Asio" vor, die er bei der Umsetzung genutzt hatte. Hierbei stellte er noch einige Details und Lösungen vor, die Daniel Evers in seinem Vortrag über Boost.Asio am 14.8.2015 am gleichen Ort nicht erwähnt hatte.

C++ User-Treffen Aachen 10.03.2016 - Bild 9
Foto 09: Georg Hellack mit "Broadcasts mit Boost.Asio"

Den Vortrag von Georg kann man hier als PDF herunterladen.

Mit Georgs Vortrag endete der erste Teil des Abends. Obwohl eigentlich nur Lightning-Vorträge - hatten die drei Vorträge und die Diskussionen doch weit über einer Stunde gedauert, und alle freuten sich auf eine Pause mit Getränken (danke an Schlumberger) und interessanten Gesprächen über die bisherigen Themen.

C++ User-Treffen Aachen 10.03.2016 - Bild 10
Foto 10: C++ User-Treffen Aachen 10.3.2016

Danach war der Haupt-Vortrag über "SQL++ - C++ DB Libraries im Überblick" von Volker Aßmann an der Reihe. Volker ging zuerst kurz auf Datenbanken im Allgemeinen und dann besonders auf SQL-Datenbanken ein. Dann sprach er das Problem an, in C++ auf Datenbanken zuzugreifen - ISO C++ enthält ja keine Mittel hierfür. Natürlich ist der Zugriff trotzdem möglich - benötigt aber immer eine entsprechende Bibliothek.

C++ User-Treffen Aachen 10.03.2016 - Bild 11
Foto 11: Volker Aßmann mit "SQL++ - C++ DB Libraries"

Und hier trennen sich die Wege dann - es gibt ganz einfache Bibliotheken mit einer C-API, die typischerweise von den Datenbank-Herstellern selber zur Verfügung gestellt werden. Da diese bei der Nutzung relativ viel händische Arbeit erfordern, spezifisch für die jeweilige Datenbank sind, und auch keine besonders gute Abstraktion darstellen gibt es viele weitere Bibliotheken, die hier mehr Komfort anbieten.

Volker hatte sich vorgenommen, neben zwei einfachen C-APIs detailiert drei weitere DB-Access Bibliotheken vorzustellen, die auf unterschiedlichen Abstraktions-Ebenen angesiedelt sind. Als Beispiel Datenbanken hatte er PostgreSQL und SQLite ausgewählt. Obwohl ja schon die ersten drei Vorträge recht lang gewesen waren, fesselte Volker mit diesem Thema und seinem Vortrag fast alle Anwesenden für weitere 1 1/2 Stunden.

C++ User-Treffen Aachen 10.03.2016 - Bild 12
Foto 12: C++ User-Treffen Aachen 10.3.2016

Als Beispiele für die C-API Bibliotheken stellte Volker die elementaren Zugriffs-Bibliotheken von PostgreSQL ("PostgreSQL libpq API") und SQLite ("SQLite C API") vor. Schon etwas abstrakter und dadurch leichter zu nutzen, vor allem aber portabel da die Unterschiede zwischen den Datenbanken weggekapselt sind, war dann der DB-Access-Teil "QtSql" von "Qt".

Die nächste Abstraktions-Stufe in Volkers Vortrag bot dann die C++ Bibliothek Wt::Dbo. Zu guter Letzt stellte Volker noch Sqlpp11 vor - eine typsichere template-basierte C++ Bibliothek. Das Besondere an Sqlpp11 ist hierbei, dass alle Abfragen in einer DSEL formuliert werden, bei der alle SQL Syntax-Fehler zu C++ Compile-Fehlern führen und sich gar keine unvollständigen oder fehlerhaften Abfragen forumlieren lassen. Mit allen diesen Bibliotheken hatte Volker die gleiche Aufgabe umgesetzt, und er stellte den jeweiligen Code jeweils detailiert vor.

C++ User-Treffen Aachen 10.03.2016 - Bild 13
Foto 13: Volker Aßmann mit "SQL++ - C++ DB Libraries"

Da in fast allen ernsthaften Programmen Datenbanken eine große Rolle spielen, waren fast alle Anwesenden von diesem Thema betroffen - und viele konnten aus eigener Praxis Erfahrungen beisteuern oder sehr konkrete Fragen stellen. Die Folien und Code-Beispiele von Volker finden sich hier auf GitHub.

Während viele Teilnehmer nach Volkers Vortrag den Abend direkt beendeten - es war ja auch spät genug - blieb ein größerer harter Kern noch eine Stunde bei Schlumberger, half mit aufzuräumen und diskutierte noch über die Themen des Abends. Neben allen Diskussionen war aber Konsens, dass es wieder ein sehr lohnender und interessanter Abend gewesen war.



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: