Ein Angebot von

ESE-Kongress Keynote 2018

Parallele Programmierung: Ein Ausblick auf kommende Änderungen in C++20

| Autor / Redakteur: Michael Wong / Sebastian Gerstl

Michael Wong ist Vizepräsident für Forschung und Entwicklung bei Codeplay Software. Er ist zudem Mitglied der offenen Konsortiumsgruppe Khronos, Vorsitzender der C++ Heterogenen Programmiersprache SYCL, der kanadische Delegationsleiter für den ISO C++ Standard und Direktor sowie Vizepräsident von ISOCPP.org.
Michael Wong ist Vizepräsident für Forschung und Entwicklung bei Codeplay Software. Er ist zudem Mitglied der offenen Konsortiumsgruppe Khronos, Vorsitzender der C++ Heterogenen Programmiersprache SYCL, der kanadische Delegationsleiter für den ISO C++ Standard und Direktor sowie Vizepräsident von ISOCPP.org. (Bild: Michael Wong)

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.

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

Shared Memory: Angestrebte Coverage in C++20 und darüber hinaus.
Shared Memory: Angestrebte Coverage in C++20 und darüber hinaus. (Bild: Michael Wong)

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.

Software Engineering im Zeitalter künstlicher Intelligenz

Software Engineering im Zeitalter künstlicher Intelligenz

07.12.18 - Das Thema Software Engineering besteht seit etwa 50 Jahren. Das Engineering sollte helfen, einen Weg aus der „Software-Krise“ zu finden. Ist diese Überwunden? Wie hat sich Software Engineering bis heute verändert? Und welche Rolle spielen modernde Entwicklungen wie KI? Diesen Fragen stellte sich eine Expertenrunde aus unterschiedlichen Branchen auf der Podiumsdiskussion des 11. ESE-Kongresses in Sindelfingen. lesen

Der verkannte Kontinent: „Wir müssen bei KI auf den Stärken Europas aufbauen“

Der verkannte Kontinent: „Wir müssen bei KI auf den Stärken Europas aufbauen“

30.11.18 - Der internationale Wettlauf um die Vorreiterrolle bei KI-Technologien hat begonnen. Welche Trümpfe hält Europa in der Hand? Über Chancen und Perspektiven sowie die Interaktion zwischen KI und Softwaretechnik spricht der Experte Holger H. Hoos in einem kostenlos zugänglichen Internet-Livestream am 5. Dezember. lesen

C++17 – Was gibt’s Neues? Ein Überblick über die wichtigsten Erweiterungen

C++17 – Was gibt’s Neues? Ein Überblick über die wichtigsten Erweiterungen

17.01.18 - Ende 2017 wurde es vollbracht: C++17 ist als neuer ISO-Standard einstimmig verabschiedet. Da stellt sich natürlich die Frage, was gibt es denn an konkreten Neuerungen in C++17? Und wir wirkt sich das für Softwareentwickler aus? lesen

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45700035 / Embedded Programmiersprachen)