Buchbesprechung: Eine Tour durch C++

Nun auch auf Deutsch: C++-Erfinder Bjarne Stroustrup liefert einen praxisnahen Leitfaden für Ein- und Umsteiger in die Programmiersprache C++.

In Pocket speichern vorlesen Druckansicht 130 Kommentare lesen
Buchbesprechung: Infrastructure as Code

(Bild: TravelNerd/Shutterstock.com)

Lesezeit: 7 Min.
Von
  • Annette Bosbach
Inhaltsverzeichnis

Bjarne Stroustrup
Eine Tour durch C++ – Der praktische Leitfaden für modernes C++
mitp, 1. Auflage, 2023
408 Seiten, ab 34,99 Euro
ISBN: 978-3-7475-0626-4

Seit dem Erscheinen von Borland C++ 3.0 hat die Programmiersprache C++ eine umfassende Weiterentwicklung durchgemacht. Während viele der damaligen Strukturen insbesondere QT-Entwicklern auch heute noch vertraut erscheinen mögen, kennen viele Programmiererinnen und Programmierer diese nur vom Hörensagen. C++ ist in den aktuellen Versionen eine komplett andere Programmiersprache geworden. Ihr Erfinder und Urvater, Bjarne Stroustrup hat unter dem Titel „Eine Tour durch C++“ ein Lehrbuch vorgelegt, das sich als eine Art Wegweiser durch den Dschungel des neuen C++ sieht, und das nun auch in deutscher Sprache vorliegt.

Vergleichbar zu Guido Krügers Klassiker zum Programmieren in C beginnt auch das vorliegende C++-Werk mit einer Betrachtung des Kompilationsprozesses. Überlegungen zu Datentypen, Funktionen und grundlegender Programmierung finden sich ebenfalls im Einstieg. Wer in der Vergangenheit beispielsweise mit C oder Java programmiert hat, kann so ohne großen Aufwand in C++ einsteigen.

Die „Tour durch C++“ erhebt nicht den Anspruch, die Programmiersprache komplett-zu besprechen, es handele sich vielmehr um eine „Vorstellung der empfehlenswerten Teile“, die sich an den Bedürfnissen fortgeschrittener Entwickler orientiere. Das Buch geht daher vor allem auf die Syntax von C++ ein und stellt beispielsweise exotischere Elemente wie Unions und andere benutzerdefinierte Typen in den Vordergrund. Modularisierung und die Behandlung von Fehlern kommen ebenfalls zur Sprache.

Stroustrups Erfahrung spiegelt sich in der Themenauswahl wider: Besonders beeindruckend empfand die Rezensentin das Kapitel zur Fehlerbehandlung, das neben Sprach-Konstrukten wie Exceptions generische Patterns vorstellt. Das Durcharbeiten dieses Abschnitts lohnt sich auch für Personen, die mit anderen Programmiersprachen arbeiten – denn Design Patterns lassen sich unabhängig von der vorliegenden Host-Plattform beziehungsweise -Sprache einsetzen.

Der Themenbereich, mit dem klassische Informatik-Lehrbücher Leserinnen und Leser häufig am meisten ärgern, ist nach Einschätzung der Rezensentin die objektorientierte Programmierung (OOP). Da sich Stroustrup ausschließlich an fortgeschrittene Entwickler wendet, setzt er an dieser Stelle Vorkenntnisse voraus und illustriert verschiedene Design-Paradigmen der OOP anhand der umfangreichen Standardbibliothek. Den Fokus legt er dabei auf das Vermitteln einer sauberen Handhabung der OOP-Funktionen, um Entwicklerinnen und Entwickler in die Lage zu versetzen, fehleranfälliger Teile des Sprachstandards vermeiden zu können.

Die Überlegungen zu Konstruktoren, Destruktoren, Kompilierung und vergleichbaren Funktionen des hauseigenen Klassensystems gelingen ihm vorbildlich. Lobenswert ist, dass das Lehrbuch in diesem Bereich auch Hintergrundwissen dazu vermittelt, wie sich die Operationen in der Praxis auswirken. Entwicklerinnen und Entwickler erlangen damit ein tiefergehendes Verständnis, wie sich bei effizienter Nutzung der C++-Sprachstruktur performantere Applikationen erzeugen lassen.

Für Ein- und Umsteiger bespricht Stroustrup in zwei Kapiteln zudem ausführlich die „gefürchteten“ Templates, und liefert neben grundlegenden Überlegungen auch praktische Handreichungen zu deren effizienten Einsatz.

Bemerkenswert an C++ ist, dass die Standardbibliothek nahezu zwei Drittel des Umfangs der Spezifikation einnimmt: Vieles, was in anderen Programmiersprachen Teil der Syntax ist, wird in C++ über die Standardbibliothek abgebildet. Stroustrup beginnt mit einer Vorstellung der in der Bibliothek enthaltenen Elemente und greift anschließend einzelne Aspekte heraus, um diese in eigenen Kapiteln näher zu betrachten.

Insbesondere Umsteiger von C dürften sich über die sehr detaillierte Besprechung der String-Klasse freuen, die hilft, den in C häufig unvermeidlichen Auseinandersetzungen mit einem Array aus Char-Variablen aus dem Weg zu gehen. Um insbesondere in der Mikrocontrollerprogrammierung einen sanften Umstieg in die Welt der String-Verarbeitung unter Einsatz der Standardbibliothek zu ermöglichen, geht Stroustrup auch auf die im Hintergrund stattfindenden Speicher-Operationen ein.

(Bild: mitp)

Die Besprechung der Standardbibliotheks-Container meistert der Autor weitestgehend vorurteilsfrei. Stroustrup beginnt seine Überlegungen mit der Vorstellung des Vektors. Das Herausarbeiten der Unterschiede zwischen Vektor und Array gelingt ihm so elegant, dass Leserinnen und Leser die bei der Array-Verarbeitung erlernten Konzepte mühelos in die Welt von C++ übertragen und übernehmen können.

Zur Überraschung der Rezensentin geht das Werk auch auf die Rolle der Allokatoren im Bereich der Container ein. Kurze, demonstrative Beispiele zeigen, wie die Nutzung des korrekten Allokators zur Reduktion des Speicherbedarfs und zur Erhöhung der Performance eines C++-Programms beiträgt.

Stroustrup widmet sich darüber hinaus auch ausführlich Pointern und der dazugehörenden Pointer-Arithmetik – er stellt alle in der Standardbibliothek enthaltenen Pointer-Typen vor. Dabei vermittelt er ein solides Grundverständnis dazu, wie die verschiedenen Pointer-Typen funktionieren und praktisch zusammenarbeiten.

Ein weiterer Block des Werks behandelt das Durchführen mathematischer Berechnungen in C++, einschließlich der in der Standardbibliothek dazu verfügbaren Funktionen. Wer hier lediglich gewöhnliche Berechnungsmethoden erwartet, den dürfte Stroustrup positiv überraschen. Da zudem einige der numerischen Operationen beziehungsweise Algorithmen in der Standardbibliothek von Haus aus – zumindest teilweise – parallelisiert sind, leitet der Autor an dieser Stelle auch gleich zum Erzeugen nebenläufiger Programme über.

Das betreffende Kapitel liefert alle dazu notwendigen Grundlagen, von einer Besprechung der Thread-Klassen über Ausführungen dazu, wie man Daten zwischen Threads teilt und den Zugriff auf gemeinsam genutzte Ressourcen synchronisiert – ohne dabei spürbare Performanceverluste zu riskieren.

Dem mitp-Verlag ist mit der Übersetzung der dritten Auflage des englischen Originals ein lesenswertes Buch gelungen, das sich zudem durch eine sinnvolle didaktische Struktur auszeichnet. Alle Kapitel enden mit einer Liste von Ratschlägen, mit zum Teil kontroversen Empfehlungen, die Leserinnen und Lesern aber in jedem Fall wertvolle Hilfestellung bei der Umsetzung von Programmierarbeiten in der Praxis leisten dürften.

Insbesondere, wer mit C oder einem QT-Dialekt a la „C mit Klassen“ arbeitet und einen soliden Überblick der Möglichkeiten von C++ haben möchte, wird Stroustrups Werk schätzen lernen. Anders als ein Besuch auf den bisweilen esoterisch anmutenden C++-Konferenzen hilft das Buch dabei, die wichtigen Aspekte von C++ zu erkennen und die weniger wichtigen Aspekte zu ignorieren.

Als interessanten und eher unterhaltsamen Abschluss reflektiert der Autor am Ende des Buchs schließlich über die lange und bewegte Geschichte „seiner“ Programmiersprache und lässt nochmals die wichtigsten Ereignisse chronologisch Revue passieren.

Annette Bosbach
betreut die Legacysysteme der Tamoggemon Holding k.s. und befasst sich darüber hinaus seit Jahren mit dem Einfluss, den Technik und Menschen aufeinander nehmen.

(map)