C++17: 5 Fragen – 5 Antworten mit Ulrich Breymann

5 Fragen – 5 Antworten, das neue Fachformat unserer Autoren: diesmal mit Ulrich Breymann über die Programmiersprache C++ 17!

1. Herr Breymann, Sie haben gerade die 5. Auflage Ihres Buches „Der C++ Programmierer“ veröffentlicht. Warum jetzt eine neue Auflage?

Das C++-Standardkomitee arbeitet kontinuierlich an der Verbesserung von C++. Alle drei Jahre wird der aktuelle Stand der Technik als ISO-Standard veröffentlicht. Nach C++ 14 geht es jetzt um C++ 17 – und in drei Jahren um C++ 20. Das Buch soll den aktuellen Stand der Technik widerspiegeln – deswegen die neue Auflage. Weil auch die C++-Compiler nachziehen, können Leserinnen und Leser die neuen Möglichkeiten ab sofort nutzen.

2. Was sollte der Leser über Ihr Buch wissen?

Das Buch führt in die Programmiersprache C++ ein. Es ist für Anfänger geeignet, aber auch für diejenigen, die bereits Kenntnisse in einer anderen Programmiersprache haben. Das Buch beschreibt auch die C++-Standardbibliothek und ist deshalb als Nachschlagewerk geeignet. Die Neuerungen von C++ 17 im Vergleich zu C++ 14 sind im Buch kenntlich gemacht.

3. Was wird im Bereich C++ gerade diskutiert?

In den Diskussionsbeiträgen des C++-Standardkomitees werden so viele Fragen behandelt, dass sie hier nicht aufgeführt werden können. Darunter sind viele Detailfragen. Deshalb nur ein paar Beispiele: Es wird überlegt, Netzwerkoperationen zu integrieren und eine Schnittstelle für eine grafische Benutzungsoberfläche zu schaffen. Ein anderer Aspekt ist das Sicherstellen bestimmter Eigenschaften des Programmcodes schon zur Compilationszeit, Stichwort Concepts.

4. Mit C++11 wurden weitreichende Neuerungen in C++ eingeführt. Welche haben sich aus Programmierersicht als am sinnvollsten erwiesen? Und wie schaut es mit C++ 17 aus?

Meiner Meinung nach sind besonders die damaligen Neuerungen sinnvoll, die eine eigene Speicherverwaltung vermeiden helfen. Eine eigene Speicherverwaltung ist fehlerträchtig, besonders bei Unerfahrenen. Die mit C++11 eingeführte Move-Semantik erspart unnötige Kopien von  Objekten im Programm. C++ 14 brachte gegenüber C++11 nur wenige Änderungen, C++ 17 bietet einiges mehr. So ist die Arbeit mit Dateien in C++ integriert worden, sodass die bisher dafür notwendigen externen Bibliotheken entfallen können. C++ unterstützt nun noch mehr als vorher die Ausführung von Programmcode zur Compilationszeit (soweit möglich), sodass in manchen Fällen Teile des Codes beim Laufen des Programms nicht mehr ausgeführt werden müssen, weil das Ergebnis schon vorab vom Compiler berechnet und im Programm eingetragen wurde. Das erhöht die Ausführungsgeschwindigkeit. Es gibt neue syntaktische Mittel, um die Verarbeitung einer unbekannten Anzahl von Parametern zu erleichtern, Stichwort Fold Expressions. Auf die vielen weiteren neuen Elemente in C++ 17 einzugehen ist hier nicht möglich, weil es zu sehr in technische Einzelheiten gehen würde und gute C++-Kenntnisse zum Verständnis vorausgesetzt werden müssten.

5. Wie wird das Lernen von C++ vom Buch unterstützt?

Es gibt mehr als 400 Beispiele und 92 Übungsaufgaben. Die Lösungen sind im Anhang abgedruckt bzw. sind wie die Beispiele von www.cppbuch.de herunterladbar. Es gibt einfache, aber auch schwierigere Aufgaben, um den verschiedenen Anforderungen gerecht zu werden. Ein Glossar erklärt die wichtigsten Begriffe ergänzend zum Text. Hinweise auf C++-Referenzseiten und C++-Foren im Internet helfen, wenn noch Fragen offen bleiben. Im Kapitel 21 „Sichere Programmierung“ gibt es Empfehlungen, die die Qualität von C++-Software verbessern helfen. Es geht ja nicht darum, die neuesten Features anzuwenden, sondern qualitativ gute Software zu schreiben. Dabei können natürlich neue Features von Nutzen sein. Ein klarer, verständlicher Programmierstil trägt ebenfalls zur Qualität bei, weswegen das Buch zahlreiche Tipps dazu enthält.