14:00 Uhr
Effizientere C++ Entwicklung mit Compile-Time Computations
Die besondere Rolle des Compilers in modernem C++
Details anzeigen
Autor:in:
Stephan Roth | oose Innovative Informatik eG | Germany
Sprache:
Deutsch (Präsentation in Englisch)
Zielgruppe:
Softwareentwickler, Softwarearchitekten
Voraussetzungen:
Grundlegende Kenntnisse in der Programmiersprache C++ sind von Vorteil.
Überblick und Zusammenfassungen:
Seit seiner Modernisierung durch den im Jahr 2011 veröffentlichten Standard C++11, und den darauf folgenden Standards C++14, C++17 und nun C++20, erlebt ein Dinosaurier unter den Programmiersprachen, das gute alte C++, eine Renaissance. Insbesondere im technischen und oftmals sicherheitskritischen Umfeld auf Embedded Systemen, aber auch in der anspruchsvollen Entwicklung von hoch performanten Anwendungen, ist C++ nach wie vor die erste Wahl.
Im Unterschied zu den reinen Übersetzern in vielen anderen, populären Programmiersprachen sind moderne C++-Compiler sehr mächtige Werkzeuge. Sie können sehr viel mehr als nur Sourcecode in eine Binärdatei umwandeln. Template-Metaprogrammierung (TMP) war ja schon immer eine Technik, um den Compiler temporären Quellcode erzeugen zu lassen und Berechnungen zur Compile-Zeit durchzuführen. Mit den neuen Sprachstandards seit C++11 sind weitere Optionen hinzugekommen. So können C++-Compiler nun vom Entwickler geschriebenen Code ausführen (compile time function evaluation), Typ-Prüfungen und Typ-Vergleiche durchführen, und vieles mehr.
In seinem Vortrag zeigt Stephan, wie man dadurch nicht nur die Codequalität steigern kann. Auch für die Effizienzsteigerung des geschriebenen Codes können Compile-Time-Computations ein Zugewinn sein.
Art der Vermittlung:
Vortrag mit praktischen Demonstrationen
Nutzen:
Die Zuhörer kennen die Möglichkeiten (TMP, constexpr, constexpr-if, consteval, SFINAE, usw.) um mit modernem C++ Prüfungen, Vergleiche und Berechnungen bereits zur Compile-Zeit durchführen zu können. Sie wissen weiterhin, für welche Zwecke diese Techniken eingesetzt werden können und wann sie zur Effizienzsteigerung beitragen.
14:50 Uhr
Mehr Performance durch C++ "constexpr"
Compilezeit-Initialisierung in der praktischen Anwendung
Details anzeigen
Autor:in:
Martin Weitzel | Technische Beratung für EDV | Germany
Sprache:
Vortrag deutsch (Unterlagen/Präsentation englisch)
Zielgruppe:
C++ Software-Designer und -Entwickler*innen
Voraussetzungen:
Grundlegende / mäßig fortgeschrittene Kenntnisse von C++
Überblick und Zusammenfassungen:
Schon seit den Anfängen von C++ Mitte der 1980er gab es die "const"-Qualifizierung. Mit C89 (ANSI) bzw. C90 (ISO) wurde diese auch in den Sprachstandard für C übernommen, also vor mehr als 30 Jahren. Vor gut 10 Jahren tauchte im C++11 Sprachstandard dann ein neues, ganz ein ähnlich klingendes Schlüsselwort auf, nämlich "constexpr".
Aber dienen "constexpr" und "const" ein und demselben Zweck? Sicher nicht, sonst hätte man letzteres nicht neu geschaffen.
Dieser Vortrag geht in einer kurzen Einführung auf die Gemeinsamkeiten und Unterschiede ein, insbesondere auf die Motivation, "constexpr" als C++11 Feature einzuführen. Im Hauptteil geht es – unterstützt durch Demo-Code aus der praktischen Verwendung – um folgende Inhalte:
* Unterschiede für "constexpr" angewendet auf Daten und auf Funktionen
* Ursprüngliche Einschränkung in C++11 und Erweiterungen in C++14
* Mischung von Compilezeit- und Laufzeit-Code
* "constexpr" für Konstruktoren und Operator-Überladungen
* Freiheitsgrade für Compiler und Libraries
* Zusammenfassung einiger "Best Practices"
Der Vortrag endet mit einem konkreten Beispiel, in dem eine aufwändige Laufzeitfunktion durch eine tabellengestützte Interpolation ersetzt. Die Stützwerte werden dabei in einem "constexpr"-Konstruktor berechnet, wobei genau dieselbe Funktion zum Einsatz kommt, die ursprünglich zur Laufzeit verwendet wurde.
Art der Vermittlung:
Auf Code-Walks beruhender Vortrag und abschließende Diskussion (Umfang je nach zeitlicher Möglichkeit)
Nutzen:
Kennenlernen eines immer noch relativ wenig benutzten C++11 Features anhand eines praktischen Anwendungsfalles, inkl. der grundlegenden Einschränkungen und Vorsichtsmaßnahmen.
In ähnlich gelagerten Fällen kann durch die Verwendung von "constexpr" Laufzeit-Code eingespart und so die Gesamt-Performance einer Embedded Software verbessert werden.
Der Beispiel-Code ist lizenzfrei und durch die Verwendung von C++-Templates gut auf ähnliche Szenarien übertragbar.
15:40 Uhr
C++20 Templates
Die nächste Generation: Concepts
Details anzeigen
Autor:in:
Andreas Fertig | Trainer und Berater für C++ | Germany
Sprache:
Deutsch
Zielgruppe:
Entwickler*innen
Voraussetzungen:
Kentnisse in C++ und Templates
Überblick und Zusammenfassungen:
Seit ca. 1 Jahr ist der C++20 Standard offiziell. Es ist wahrscheinlich die größte Änderung der Sprache.
In diesem Vortrag konzentrieren wir uns auf Änderungen im Bereich Templates, genauer die Einführung von Concepts. Wir schauen uns an wie wir Konzepte definieren und wie sie sich aus Requirements zusammensetzen. Mit diesem Wissen entwerfen wir ein eigenes Konzept inklusive Tests. Gerüstet damit wenden wir Concepts in Funktions-Templates bzw. Klassen-Templates an. Hier gibt es neue syntaktische Möglichkeiten wie verkürzte Funktions-Templates.
Teilnehmer sind nach dem Vortrag mit den Grundlagen von Concepts vertraut und können Concepts einsetzen.
Art der Vermittlung:
Präsentation mit Code-Beispielen und Live-Demos
Nutzen:
Teilnehmer lernen Concepts und ihre Bausteine kennen. Es werden Beispiele für die Anwendung von Concepts gezeigt welche die Teilnehmer selbst anwenden können.
16:30 Uhr
Rust für Embedded-Systeme
Ein einfacherer und sicherer Nachfolger von C/C++?
Details anzeigen
Autor:in:
Willi Flühmann | Noser Engineering AG | Switzerland
Sprache:
deutsch
Zielgruppe:
Entwickler und Architekten von Embedded-Systemen
Voraussetzungen:
Grundlegende Kenntnisse in der Programmierung von Embedded-Systemen
Überblick und Zusammenfassungen:
Die Sprache C bildet schon seit bald 50 Jahren das Rückgrat vieler Systeme. Damit ist auch eine lange Geschichte vieler berühmter Bugs und Sicherheitslücken verbunden. Eine fehlerarme und sichere Software zu entwickeln stellt auch heute noch eine grosse Herausforderung dar. Gerade in der Low-Level-Programmierung fehlt bisher immer noch der grosse Sprung nach vorn.
Mit der Sprache Rust bietet sich nun ein würdiger Nachfolger an, der im Vergleich etwa zu C++ viel konsequenter auf die Vermeidung von Programmierfehlern setzt und das ohne eine überbordende Komplexität mitzubringen.
In diesem Vortrag wird ergründet, wieso Rust seit mehreren Jahren in der Stack-Overflow-Umfrage zur beliebtesten Sprache gehört und wieso sie sich gerade für Embedded-Systeme mit Safety- oder Echtzeit-Anforderungen besonders eignet.
Ohne zu tief in Sprachdetails einzutauchen wird ein erster Eindruck der Sprache und ihrer möglichen Anwendungsgebiete vermittelt und ein Beispiel einer Software auf einem Microcontroller demonstriert.
Themen:
* Probleme bei C/C++: Memory Safety, Thread Safety, Undefined Behavior
* Anforderungen an einen Nachfolger, mögliche Kandidaten
* Einführung in Rust
* Typische Anwendungsgebiete
* Rust auf Embedded-Systemen
* Beispiel auf einem Microcontroller
* Ausblick
Art der Vermittlung:
Präsentation inkl. praktisches Beispiel
Nutzen:
Der Zuhörer bekommt einen Überblick über das Thema und kann danach besser einschätzen, ob sich die Programmiersprache Rust in seinem Projekt gewinnbringend einsetzen lässt.