Quo Vadis - Modernes C++

Modernes C++ Rainer Grimm  –  26 Kommentare

FERTIG: Ich habe um die 100 Artikel zu C++20 geschrieben. In diesem Artikel möchte ich eine Frage stellen: Welches Thema soll ich als Nächstes angreifen? Dazu habe ich eine kleine Umfrage vorbereitet.

Zuerst einmal ist hier die Übersicht zu meinen rund 400 Artikeln. Diese Übersicht schließt natürlich die C++20 Artikel ein.

Jetzt geht es aber um die Zukunft meines Blogs. Drei Ideen habe ich: C++23, Python mit C/C++ erweitern und einbetten sowie Templates. An der Umfrage können alle bis einschließlich 24.04 teilnehmen. Das heißt, dass ich in meinem nächsten Artikel den Sieger nenne und meinen Plan vorstelle, wie ich das nächste große Thema strukturieren werde.

Quo Vadis: Modernes C++

Die Umfrage muss ich aus technischen Gründen auf meinem englischen Blog anbieten. Hier ist der Link.

Mache dein Kreuzchen.

Falls dir die Entscheidung schwerfällt. Hier ist noch mehr Information zu den drei Themen:

C++23

C++20 ist nur der Startpunkt. In C++23 gibt es noch einiges zu tun, um das Potenzial der Big Four in C++ vollständig zu integrieren und zu nutzen. Zu den Ideen bezüglich der nahen C++-Zukunft gehören:

  • Die Standard Template Library wurde von Alexander Stephanov mit Konzepten im Hinterkopf entworfen. Dennoch fehlt die Integration von Konzepten in C++20.
  • Wir können eine modularisierte Standard Template Library erwarten und auf ein System für Softwarepakete in C++23 hoffen.
  • Viele Algorithmen, die aus der funktionalen Programmierung bekannt sind, fehlen noch in der Ranges Bibliothek. Ein zukünftiger C++-Standard sollte das Zusammenspiel der Ranges-Bibliothek und der Container verbessern.
  • Wir haben keine Koroutinen. Wir haben nur ein Framework, um leistungsfähige Koroutinen zu bauen. Eine Koroutinen-Bibliothek wird mit hoher Wahrscheinlichkeit in C++23 enthalten sein.

Ville Voutilainens Proposal P0592R4 "To boldly suggest an overall plan for C++23" gibt einen ersten Ausblick auf den kommenden C++23-Standard. Ville nennt sieben Features:

C++23

  • Library support for coroutine
  • A modular standard library
  • Executors
  • Networking

C++23 or later

  • Reflection
  • Pattern matching
  • Contracts
Erweitern und Einbetten von C/C++ in Python

Python ist sehr kommunikativ. Zum einen ist es einfach, C/C++-Funktionalität aus Python heraus aufzurufen (extend), zum anderen kann Python direkt von einer C/C++-Laufzeitumgebung aus genutzt werden (embed). Mit dem Erweitern lassen sich performancekritische Teile eines Programms nach C/C++ auslagern. Dank der Einbettung eines Python-Interpreters in die C/C++-Anwendung verfügt diese über eine Scripting-Schnittstelle.

Vor ein paar Tagen habe ich auf der EnterPy2021 einen deutschen Vortrag über das Erweitern und Einbetten C/C++ in Python gehalten. Hier ist die Präsentation.

Templates

Die Zukunft von C++ spricht Templates. Leider kennen sich die meisten C++-Profis nicht gut genug mit Templates aus. Meine Idee ist es, die Details zu Templates zu vermitteln. Folgendermaßen sieht mein grober Plan aus:

Grundlagen

  • Funktions-Templates
  • Klassen-Templates
  • Template-Parameter
  • Template-Argumente
  • Spezialisierung

Details

  • Template-Instanziierung
  • Variadic Templates
  • Fold Expressions
  • Freunde
  • Dependent Names

Techniken

  • Automatischer Rückgabetyp
  • Template Metaprogrammierung
  • Type-Traits
  • constexpr
  • constexpr if

Design

  • Statischer versus dynamischer Polymorphismus
  • CRTP (curiously recurring template pattern)
  • Expression Templates
  • Idiome und Pattern

C++20

  • Concepts

Gastbeiträge

Ich freue mich darauf, interessante Artikel zu C++ auf meinen Blogs zu veröffentlichen. Das heißt, ich veröffentliche ihn auf meinen deutschen und englischen Blogs. Der Artikel kann in Englisch oder Deutsch verfasst sein. Ich übersetze ihn dann gerne in die andere Sprache. Du kannst mit 10.000 - 100.000 Lesern rechnen.

Wie geht's weiter?

Abhängig von Ausgang der Wahl, werde ich in meinem nächsten Artikel meinen detaillierten Plan vorstellen, wie ich das neue Thema angreifen werde.