Seminarziel
Dieses Seminar vermittelt einen praxisorientierten Überblick über die wichtigsten Neuerungen der Programmiersprache C++20 und C++23. Im Fokus stehen moderne Sprachfeatures wie Coroutinen und Concepts sowie neue Bibliotheksfunktionen wie Ranges, std::format und Synchronisationsmechanismen. Anhand praxisnaher Beispiele und Übungen lernen die Teilnehmenden, wie sich Code lesbarer, sicherer und ausdrucksstärker gestalten lässt. Ziel ist es, die neuen Möglichkeiten nicht nur kennenzulernen, sondern sie effektiv im Arbeitsalltag einzusetzen.
Seminarinhalt
Programmierung - C++20 und C++23 in der Praxis (inkl. Ausblick auf C++26)
Ranges
Motivation: Algorithmen, Iteratoren und lesbarer Code
- Einführung in C++20 Ranges
- Views und Pipelines mit std::views
- Lazy Evaluation und Komposition
Concepts
Motivation: bessere Fehlermeldungen und klare Schnittstellen
- Constraints und Concepts
- Standard-Concepts (std::integral, std::same_as, std::ranges::range)
- Eigene Concepts mit requires
Modules
- Einführung in C++20 Modules
- Module Interfaces und export
Weitere Sprachfeatures in C++ 20
- Spaceship Operator (<=>)
- std::format für moderne Textformatierung
- Synchronisation: Latches, Barriers, Semaphores
Coroutinen
- Grundlagen asynchroner Programmierung
- Einführung in C++20 Coroutinen
- Einsatz von Boost.Asio als Event Loop und Scheduler
- Von Callbacks zu co_await
- Generatoren mit co_yield (C++23)
Neuerungen in C++23
- Mehrdimensionale Subscript-Operatoren
- std::expected (Ergebnis- oder Fehlerbehandlung)
- Monadic Operations für std::optional und std::expected
- Vereinfachte formatierte Ausgabe
Weitere Features in C++23
- std::to_underlying
- std::flat_map und std::flat_set
Ausblick auf C++26
- Überblick über kommende Entwicklungen
Zielgruppe
- Softwareentwickler:innen mit C++-Erfahrung
- Systementwickler:innen
- Entwickler:innen im Bereich Embedded Systems oder High-Performance Computing
- Alle, die ihre C++-Kenntnisse auf den neuesten Stand bringen möchten
Voraussetzungen
Gute Kenntnisse in C++ (mindestens C++11/14) und Erfahrung im Umgang mit Templates und Standardbibliothekwerden vorausgesetzt.