Exceptional C++
Exceptional C++
Zusammenfassung:
Einleitung
Das Buch „Exceptional C++“ (1999) von Herb Sutter ist kein Lehrbuch für Anfänger, sondern eine Sammlung von 50 ingenieurtechnischen Aufgaben, die Sie wirklich dazu bringen, darüber nachzudenken, wie Sie Code in C++ schreiben. In einer Welt, in der die Zuverlässigkeit von Software höher geschätzt wird als die Geschwindigkeit des Schreibens, bleibt dieses Buch ein Maßstab für tiefes Sprachverständnis. Sutter gibt nicht einfach Antworten – er lehrt, in Kategorien von Ausnahmesituationen, Ressourcenverwaltung und dem Entwurf fehlertoleranter Schnittstellen zu denken.
Obwohl das Buch vor über 20 Jahren erschienen ist, sind seine Ideen (RAII, Ausnahmegarantien, intelligente Zeiger) zum Fundament des modernen C++ (C++11 und neuer) geworden. Wenn Sie aufhören wollen, Angst vor Ausnahmen zu haben, und beginnen möchten, Code zu schreiben, der nicht im ungünstigsten Moment „abstürzt“ – dann ist dieses Buch für Sie.
Worum geht es in dem Buch
„Exceptional C++“ ist im Frage-Antwort-Format aufgebaut (Problem – Lösung – Analyse). Jedes Kapitel behandelt einen separaten Aspekt zuverlässiger Programmierung:
- Ausnahmen und Sicherheit: Wie schreibt man Funktionen, die keine Ressourcen verlieren und Objekte auch bei Fehlern in einem konsistenten Zustand hinterlassen.
- RAII (Resource Acquisition Is Initialization): Warum dies das wichtigste C++-Idiom ist und wie man es zur Verwaltung von Speicher, Dateien und Mutexen einsetzt.
- Templates und generische Programmierung: Feinheiten der Instanziierung, partielle Spezialisierung, SFINAE.
- Vererbung und Polymorphie: Wie man Klassenhierarchien richtig entwirft, um das Liskovsche Substitutionsprinzip nicht zu verletzen.
- Speicherverwaltung: Operatoren new/delete, placement new, Überladen von Operatoren.
- Schnittstellendesign: Wie man eine API erstellt, die schwer falsch zu verwenden ist.
Für wen ist dieses Buch geeignet
Das Buch richtet sich an C++-Programmierer, die bereits Erfahrung haben (mindestens 1-2 Jahre aktive Entwicklung). Es ist nützlich für:
- Entwickler, die zuverlässigen Production-Code schreiben möchten.
- Diejenigen, die sich auf technische Vorstellungsgespräche vorbereiten (Aufgaben aus dem Buch kommen häufig bei Google, Microsoft, Yandex vor).
- Dozenten und Mentoren, die nach Beispielen für die Besprechung in Seminaren suchen.
- Alle, die das „Warum“ hinter den Standard-C++-Idiomen verstehen wollen, nicht nur das „Wie“.
Was der Leser lernen wird
Nach der Lektüre werden Sie in der Lage sein:
- Ausnahmegarantien (grundlegend, streng, nothrow) für Ihre Funktionen zu formulieren und zu überprüfen.
- std::auto_ptr (und seine modernen Äquivalente unique_ptr/shared_ptr) zur automatischen Ressourcenverwaltung korrekt einzusetzen.
- Fallstricke beim Überladen von Operatoren (insbesondere operator= und operator[]) zu vermeiden.
- Klassen zu entwerfen, die korrekt in STL-Containern funktionieren.
- Zu verstehen, wann und wie man mutable, volatile, const_cast ohne Schaden für die Architektur verwendet.
- Template-Funktionen zu schreiben, die bei der Substitution ungeeigneter Typen nicht explodieren (SFINAE).
- Das Copy-and-Swap-Idiom für sichere Zuweisung zu implementieren.
Stärken
- Tiefe und Praxisnähe. Jede Aufgabe ist ein reales Problem aus der Erfahrung des Autors. Sie werden keine abstrakten Beispiele wie „Katze-Hund“ finden.
- Frage-Antwort-Format. Kann ab jedem Kapitel gelesen werden. Ideal für „Kurzpausen“ – 15 Minuten pro Aufgabe.
- Fokus auf das „Warum“. Sutter erklärt nicht nur die richtige Lösung, sondern auch die Motivation: warum andere Optionen schlecht sind, welche Kompromisse es gibt.
- Schreibstil. Lebendig, mit einem Hauch von Humor und Selbstironie. Das Buch fühlt sich nicht wie ein trockenes Nachschlagewerk an.
- Zeitloser Wert. Selbst im Zeitalter von C++20/23 bleiben die Prinzipien von RAII und Ausnahmesicherheit unverändert. Das Buch lehrt ein Fundament, das nicht veraltet.
Für wen empfohlen
Empfehlungen
Clean Python. Feinheiten der Programmierung für Profis
Refactoring von C++-Code: Ein praktischer Leitfaden zur Verbesserung von Architektur und Lesbarkeit
Asynchrones Kotlin: Das vollständige Handbuch
PHP und Kubernetes: Vollständiger Leitfaden zur Orchestrierung
Asynchrones Kotlin: Das vollständige Handbuch
WordPress 3. Entwicklung von Plugins. Grundlagen