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.
Nachdem das erste C++ User-Treffen in Aachen am 13.2.2014 so erfolgreich war, gingen wir das zweite Treffen etwas entspannter an. Trotzdem waren wir natürlich wieder neugierig, wieviele C++ Interessierte diesmal kommen würden. Gerade auch da Einige leider nicht kommen konnten, da die Inform etwas außerhalb von Aachen liegt, und die Busverbindung abends nicht gut ist. Aber das sollte niemanden abhalten zu kommen - auch diesmal ließen sich für alle Mitfahrgelegenheiten organisieren.
Foto 01: C++ User-Treffen Aachen 8.5.2014
Im Gegensatz zum letzten Mal war es diesmal nicht so eng (oder gemütlich), da der Raum größer war, und dann auch nicht ganz so viele Leute da waren. Trotzdem - 34 C++ Interessierte sind auch diesmal wieder ein Erfolg.
Inform war so nett, nicht nur den Raum zu stellen, sondern hatte auch Getränke und Speisen zur Verfügung gestellt - siehe Foto. Danke von hier an Inform für die gute Bewirtung.
Foto 02: C++ User-Treffen Aachen 8.5.2014
Diesmal legten wir ohne große Einleitungen mehr oder weniger direkt mit C++ los - alles Wichtige war ja schon beim letzen Mal gesagt worden.
Frank Birbacher began mit einem Lightning-Vortrag über Fehler-Behandlung bei File-Streams. Typischer Fehler beim Lesen ist der Blick in die Zukunft - typischer Fehler beim Schreiben ist die fehlende Fehlerabfrage der letzten Puffer-Inhalte vor dem Schließen der Datei. Aber auch andere Fehler werden häufig gemacht. Frank führte spaßig, spannend und kurz durch dieses eigentlich einfache und selbstverständliche Thema, das trotzdem so oft falsch gemacht wird.
Foto 03: Frank Birbacher mit "Fehler-Behandlung bei File-Streams"
Der zweite Lightning-Vortrag von Lutz Manuel Rothenbusch betraf den "Ceres Nonlinear-Least-Squares minimizer". Zuerst motivierte Lutz das mathematische Verfahren mit einigen Beispielen aus der Praxis, wo es eingesetzt wird. Z.B. speichert Google-Street beim Erstellen von Fotos natürlich die GPS Koordinaten - muss diese dann aber noch an die echten Koordinaten der Straßen anpassen um kleine Meßungenauigkeiten und Abweichungen zu korrigieren und realistische Daten zu erhalten. Hierfür kann man den "Ceres Nonlinear-Least-Squares minimizer" z.B. einsetzen.
Lutz zeigte dann kurz die Benutzung der Bibliothek, ihre Stärken (z.B. analytische Ableitung der Formeln) und ihre Grenzen (z.B. keine Unterstützung von Constraints). An einem kurzen einfachen Beispiel führte er dann vor, wie die Variation von Parametern durch die Bibliothek die Werte herausfindet, die die Eingangskurve am Besten auf die Ausgangswerte abbildet.
Foto 04: Lutz Manuel Rothenbusch mit "Ceres Nonlinear-Least-Squares minimizer"
Jan Christoph Uhde dann hatte keinen Vortrag vorbereitet, sondern führte eine Live-Demo von Clang-Format durch. Er zeigte direkt an einigen C++ Quelltexten, wie Clang-Format die Sourcen formatiert - seien es komplette Dateien oder nur Teilbereiche einer Datei. Danach stellte er kurz or, welchen Einstellungs-Möglichkeiten Clang-Format bietet. Die Optionen lassen sich zwar nicht mit der Detailfülle von z.B. dem Eclipse-Formatierer bei Java vergleichen - aber alle wichtigen Einstellungen sind vorhanden.
In der anschließenden Diskussion ergab sich dann, dass der vielleicht größte Vorteil von Clang-Format gegenüber anderen C++ Quelltext-Formatierern ist, daß er nicht nur auf Text-Regeln basiert, sondern seine Formatierung auf dem C++ AST durchführt.
Foto 05: Jan Christoph Uhde mit "Clang-Format"
Letzter Lightning-Vortrag war von mir und sollte eigentlich Defaulted- und Deleted-Funktionen in C++11 behandeln. Aber während der Vorbereitung hatte ich gemerkt, dass beide Features soviele Facetten und Details enthalten, dass sie in der Summe den Umfang eines Lightning-Vortrags sprengen. Also beschränkte ich mich diesmal auf Defaulted-Funktionen in C++11 - der Teil über Deleted-Funktionen wird nächstes Mal folgen. Dann werde ich auch die Präsentation zum Download zur Verfügung stellen - wer Interesse hat, schaut also bitte dort nach.
Foto 06: Detlef Wilkening mit "Defaulted-Funktionen in C++11"
Vor dem Haupt-Vortrag nutzen fast alle Teilnehmer nochmal die Gelegenheit, sich mit Trinken und Essen zu versorgen - und dann ging es los...
Foto 07: C++ User-Treffen Aachen 8.5.2014
Matthias Gross stellte seine Bibliothek "Neat SIMD" vor, die die SIMD-Programmierung vereinfachen und vor allem plattform-unabhängig machen soll. Doch zuerst stellte Matthias überhaupt mal vor, was SIMD-Programmierung ist, denn nicht jeder Teilnehmer hatte schon mit "Single-Instruction-Multiple-Data", d.h. der Vektorisierung von Matrizen-Operationen zu tun gehabt.
Nach den Grundlagen zeigte Matthias eine beispielhafte Umsetzung von SIMD-Programmierung mit Intel Intrinsics. Neben dieser doch sehr Low-Level Programmierung, die niemand machen möchte, ist die Nutzung von Intrinsics auch sehr plattform-abhängig. Und hier setzt die Bibliothek "Neat SIMD" - sie kapselt die SIMD-Intrinsics in Template-Klassen und erlaubt die Programmierung der Matrizen-Operationen auf dem Level der mathematischen Operationen.
In der folgenden Diskussion wurde neben den Möglichkeiten von SIMD auch sehr über die ungewünschte Low-Level Programmierung diskutiert, und einige Teilnehmer berichteten von ihren Erfahrungen, wieviel Vektorisierung die Compiler von alleine vornehmen und wo hier die Grenzen sind. Auch die Kombination mit anderen Multi-Core Mechanismen wie z.B. OpenMP wurde diskutiert, und vieles mehr.
Foto 08: Matthias Gross mit "Neat SIMD"
Auch diesmal war nach dem letzten Vortrag noch lange nicht Schluß. Zum einen war noch genug zu Trinken und Essen vorhanden, zum anderen gab es genug Gesprächsstoff über die Vorträge und C++. Ich war - wie schon letztes Mal - wieder direkt auf der Suche nach neuen Beiträgen - und viele erklärten sich bereit. Das C++ User-Treffen im August war damit schnell gesichert.
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.