Bjarne Stroustrup: Jeder C++-Standard ist eine Momentaufnahme

Im Gespräch mit heise Developer erzählt der Vater von C++, welche neuen Features von C++20 für Entwickler langfristig bedeutend sind und wo die Reise hingeht.

In Pocket speichern vorlesen Druckansicht 160 Kommentare lesen
Dr. Bjarne Stroustrup hält eine Vorlesung vor Studierenden der Shanghai Jiao Tong University (2014)

Dr. Bjarne Stroustrup hält eine Vorlesung an der Shanghai Jiao Tong University (2014)

(Bild: Bjarne Stroustrup)

Lesezeit: 9 Min.
Von
  • Silke Hahn
Inhaltsverzeichnis

Als Vater der Programmierspache C++ hat Bjarne Stroustrup einige Berühmtheit erlangt; auch heutzutage noch ist er an der Standardisierung von C++ beteiligt. Im Gespräch mit heise Developer erklärt Stroustrup, was bei C++20 für Entwickler langfristig Bedeutung haben wird und wie die weitere Zukunft der Programmiersprache aussieht.

heise Developer: Welche neuen Features aus C++20 werden langfristig am meisten Bedeutung für C++ haben und wieso?

Dr. Bjarne Stroustrup: Module, Concepts und Coroutinen.

Module werden uns endlich bessere Code-Hygiene bringen (weniger Makro-Verschmutzung), die einfachere Zusammenstellung von Code aus Libraries und viel schnellere Kompilierung. Ich freue mich auf reife Modulimplementierungen, die sich gut in die Umgebung der Programmentwicklung allgemein integrieren lassen. Das wird Zeit brauchen.

Bitte seid euch darüber bewusst, dass C++20 jetzt noch einige Monate lang nicht offiziell sein wird, bis das ISO-Sekretariat in Genf seine nichttechnische Review abgeschlossen hat [Anm. Red.: das Interview stammt aus dem Sommer 2020]. Deshalb sollten wir uns zufrieden geben mit frühen Implementierungen und nicht zu ungeduldig sein bei Unvollkommenheiten. Wir müssen auch erst lernen, Module gut zu nutzen. Vieles von dem, was wir tun, ist durchsetzt von schlechten Angewohnheiten aus fast 50 Jahren von #include und #define. Nur weil der Präprozessor uns geläufig ist, muss das nicht heißen, dass er auch einfach zu handhaben ist.

Concepts werden wohl generisches Programmieren stark dem annähern, was heute gewöhnliches Programmieren ist. Sie werden unseren Code deutlich flexibler machen, wiederverwendbar und effizient. Als ich die Templates entworfen habe, wollte ich drei Dinge:

  • Expressiveness Generality, wobei „Expressiveness“ für die Fähigkeit steht, eine Idee konzise und direkt auszudrücken. „Generality“ ist das Vermögen, das für eine breite Spanne an Themen zu tun, statt nur einen vom Designer so vorgesehenen begrenzten Satz an Auswahlmöglichkeiten zu haben.
  • Unübertroffene Effizienz.
  • Type Checking als "präzise Spezifikation".
Tief verwurzelt in C++: Bjarne Stroustrup

(Bild: Bjarne Stroustrup)

  • Dr. Bjarne Stroustrup ist der Vater von C++. Der Mathematiker und promovierte Informatiker ist Technical Fellow in der Technologieabteilung bei Morgan Stanley in New York City und Gastprofessor an der Columbia University. Er ist Mitglied der US-amerikanischen National Academy of Engineering (NAE) und Träger des Charles-Stark-Draper-Preises.
  • Seit über 30 Jahren wirkt er im ISO-Standard-Komitee mit. Sein Ziel ist es, C++ zu einer stabilen, zeitgemäßen Basis für Softwareentwicklung "für das echte Leben" zu machen.

Die ersten beiden habe ich hinbekommen, nicht aber den dritten Punkt. Das genügte, um generisches Programmieren und Metaprogrammieren mit Templates zu einem durchschlagenden Erfolg zu machen, aber es strapazierte die Möglichkeiten der Programmiersprache und ihre Implementierung über ein vertretbares Maß hinaus. Der Umstand, dass vernünftige Leute bereit waren, diese Unvollkommenheiten zu ertragen, um die Vorteile zu erlangen, ist ein starkes Argument dafür, dass die grundlegenden Ideen von C++ gesund sind.