ESE-Kongress Keynote 2018 Parallele Programmierung: Ein Ausblick auf kommende Änderungen in C++20
Erst Ende 2017 wurden mit C++17 wesentliche Änderungen in die Programmiersprache C++ übernommen. Doch die Anforderungen an moderne Softwareentwicklung verändern sich kontinuierlich. In seiner Keynote „Parallel Programming in a C++20 World and Beyond“ zeigte Michael Wong, was 2020 von C++ zu erwarten ist. Die Keynote steht in voller Länge kostenlos als Video bereit.
Anbieter zum Thema

Nach ihrer Entstehung 1985 hatte sich an der Programmiersprache C++ über viele Jahre hinweg nur sehr wenig verändert. Um an die Verbreitung der Programmiersprache C anzuknüpfen, wurde C++ als Erweiterung von C gemäß dem damaligen Stand von 1990 (ISO/IEC 9899:1990, auch kurz C90 genannt) entworfen. Erste Änderungen wurden 1999 in den Standard übernommen – danach kam allerdings lange Zeit nichts mehr. Viele Programmierer, die C++ gelernt haben, sind noch am ehesten mit der Revision C++99 vertraut. Zwischenzeitlich wurde diese Programmiersprache für viele Entwickler von Embedded Software daher uninteressant, so mancher Softwareingenieur blieb lieber bei seinem gewohnten, altbewährten C.
2011 kam allerdings Bewegung in die Entwicklung der Programmiersprache selbst – was ihre Versatilität und Flexibilität enorm steigerte. Mit der Norm ISO/IEC 14882:2011, auch bekannt als C++11, wurden viele weitreichende Neuerungen in C++ eingeführt; die wohl wichtigste davon eine Portabilität der Concurrency, welche den Einsatz desselben Codes auf unterschiedlichen Systemen deutlich vereinfachte. Seitdem hat sich die Programmiersprache konstant weiterentwickelt.
Die Standard C++ Foundation ging dabei konsequent auf die sich stets ändernden Anforderungen an die Softwareentwicklung und Ansprüche der Softwareentwickler ein. So wurde etwa in C++ das Speichermodell um eine bessere Definition von lock-free vs. obstruction-free erweitert sowie shared locks hinzugefügt, was die Parallelität der entstehenden Software deutlich verbesserte. Auf die gleiche Weise brachte das Konsortium mit C++17 die ersten parallelen Programmierprimitive in die Sprache, indem es erlaubte, die Parallelität zu vielen STL-Algorithmen festzulegen.
Was man von C++20 erwarten kann
2020 steht laut Fahrplan der Standard C++ Foundation die Verabschiedung des nächsten C++ Standards an. Es gibt eine Reihe von laufenden Bemühungen, mehr Parallelität in C++20 und darüber hinaus einzuführen. In seiner Keynote auf dem ESE-Kongress 2018 sprach Michael Wong daher nicht nur über den aktuellen Stand der parallelen Programmierung in C++17, sondern gewährte einen Überblick über die kommenden Features im Zusammenhang mit Parallelität in C++20 und die damit verbundenen technischen Spezifikationen.
Insgesamt zeigte sich Michael Wong stolz, welche Fortschritte C++ allein in den letzten sechs Jahren gemacht hat. Bis zur Verabschiedung von C++20 wurde in der Programmiersprache unter anderem Folgendes erreicht:
- Ein Low-Level-Support, der höhere Abstraktionen ermöglicht
- Eine deutliche Vereinfachung der Programmierung von richtigem, konkurrentem Code
- Eine Portabilität des Codes bei gleichbleibender natürlicher Sytax
- Ein stabiles Speichermodell (verbessert durch die Implementierung von fixed gaps in C++20)
- Interoperabilität auf Systemebene
- C++ teilt sich mit anderen Programmiersprachen Threads
Damit ist die Evolution der Programmiersprache aber noch lange nicht abgeschlossen. Solange sich die Herausforderungen an die Entwicklung von Embedded Software stetig verändern, wird auch C++ entsprechend weiterentwickelt werden. Für C++23 sind bereits folgende Schwerpunkte ins Auge gefasst:
So peilt die Kommission die Möglichkeit für raffinierte, höhere parallele Abstraktionen an. Dazu zählen etwa
- TM, atomic<shared<T>>, queues und counters,
- SIMD, Task Blocks und Co-Routinen
- Verteilte (Distributed) und Heterogene Programmierung
- Reaktive Programmierung
Ferner werden eine vollständige Kompatibilität zwischen C und C++ sowie die Möglichkeit zur vollständigen Isolation von Programmier(er)fehlern angestrebt.
Insbesondere Parallelisierung und Speichermodelle sind zwei Bereiche, in denen die Programmiersprache seit C++11 massive Fortschritte gemacht hat. Über die Evolution von C++, gerade in den Bereichen Portabilität, Parallelisierung und Heterogenes Programmieren, hat Michael Wong in seiner Keynote des ESE-Kongress 2018 ausführlich referiert.
Registrierte Leser können sich die Keynote in voller Länge im Online Stream jederzeit ansehen.
:quality(80)/images.vogel.de/vogelonline/bdb/1498200/1498224/original.jpg)
Software Engineering im Zeitalter künstlicher Intelligenz
:quality(80)/images.vogel.de/vogelonline/bdb/1492000/1492037/original.jpg)
Der verkannte Kontinent: „Wir müssen bei KI auf den Stärken Europas aufbauen“
:quality(80)/images.vogel.de/vogelonline/bdb/1342100/1342124/original.jpg)
C++17 – Was gibt’s Neues? Ein Überblick über die wichtigsten Erweiterungen
(ID:45700035)