Programming -- Principles and Practice Using C++ (3rd Edition)
- "Programming -- Principles and Practice Using C++ (3rd Edition)", erschienen bei Addison-Wesley, soll im April 2024 veröffentlicht werden
- ISBN: 978-0-13-830868-1
- Direktkauf über die Website des Verlags möglich
Buchvorstellung
- Dieses Buch soll jedem, der sich ernsthaft bemüht, dabei helfen, die grundlegenden Prinzipien des Programmierens zu erlernen und praktische Fähigkeiten zu entwickeln, die für echtes Programmieren nötig sind
- Frühere Ausgaben wurden von Tausenden von Studierenden erfolgreich verwendet
- Diese überarbeitete Ausgabe hat unter anderem folgende Merkmale:
- Sie geht davon aus, dass das Ziel der Leser darin besteht, ausreichend gute Programme zu schreiben, die von anderen verwendet und gewartet werden können
- Der Schwerpunkt liegt auf grundlegenden Konzepten und Techniken statt auf mehrdeutigen sprachspezifischen Detailfragen
- Sie ist keine Einführung in eine Programmiersprache, sondern eine Einführung in das Programmieren allgemein, einschließlich prozeduraler, objektorientierter und generischer Programmierung
- Sie behandelt sowohl Low-Level-Techniken, die für eine effiziente Nutzung von Hardware erforderlich sind, als auch moderne High-Level-Techniken
- Sie bietet eine solide Grundlage, um nützliche, korrekte und sichere Typen zu verwenden und zu pflegen sowie wartbaren und effizienten Code zu schreiben
- Sie wurde in erster Linie für Menschen ohne Programmiererfahrung konzipiert, aber auch erfahrene Programmierer fanden frühere Ausgaben als Einführung in wirksamere Konzepte und Techniken nützlich
- Sie deckt essenzielle Konzepte, Design- und Programmiertechniken, Sprachmerkmale und Bibliotheken umfassend ab
- Sie verwendet aktuelles C++ (C++20 und C++23)
- Sie behandelt Entwurf und Verwendung eingebauter Typen und benutzerdefinierter Typen zusammen mit Ein-/Ausgabe, Berechnungen und einfacher Grafik/GUI
- Sie bietet eine Einführung in Container und Algorithmen der C++-Standardbibliothek
Über den Autor
- Bjarne Stroustrup ist der Entwerfer und ursprüngliche Implementierer von C++ sowie Autor von "The C++ Programming Language", "A Tour of C++" und vieler populärer wie wissenschaftlicher Veröffentlichungen
- Er ist Professor für Informatik an der Columbia University in New York City
- Dr. Stroustrup ist Mitglied der National Academy of Engineering der USA sowie Fellow von IEEE, ACM und CHM
- Er erhielt den Charles Stark Draper Prize 2018, den Computer Pioneer Award 2018 der IEEE Computer Society und die IET Faraday Medal 2017
Einführung in PPP3
- "Programming: Principles and Practice using C++ (3rd Edition)" (PPP3) ist ein Einstiegsbuch ins Programmieren für Menschen ohne Programmiererfahrung
- Es dürfte auch für Menschen mit etwas Programmiererfahrung nützlich sein, die ihren Stil und ihre Techniken verbessern oder einfach aktuelles C++ lernen möchten
- Es wurde für den Einsatz im Unterricht konzipiert, ist aber aus der Perspektive eines Selbstlern-Tutorials geschrieben
- Frühere Versionen dieses Buchs wurden an der Texas A&M University und vielerorts anderswo als Grundlage für den ersten Programmierkurs von Studierenden der Elektrotechnik, Computertechnik und Informatik verwendet
- Wer PPP2 kennt, wird feststellen, dass PPP3 nur noch etwa halb so groß ist. Zur Reduzierung des Umfangs wurde Folgendes getan:
- Durch Nutzung zentraler Teile von C++20 und C++23 wurden die grundlegenden Kapitel, die typischerweise in einem einsemestrigen Kurs behandelt werden, gestärkt, und der Code der Grafik/GUI-Kapitel wurde aus Portabilitätsgründen auf Basis von Qt neu geschrieben (z. B. für Browser und Mobiltelefone)
- Spezialisiertere Kapitel (in PPP2 als "widening the horizons" bekannt) wurden ins Web ausgelagert, damit sie nach Bedarf verwendet werden können
- Reines Referenzmaterial wurde entfernt. Im Web findet sich inzwischen mehr und aktuelleres Material (z. B. cppreference.com)
- Begleitmaterialien zu PPP2 sind weiterhin verfügbar (Vorlesungsfolien, Code usw.)
PPP3-Beispiele
- Vorwort: Was dieses Buch verspricht und was es nicht verspricht
- Inhaltsverzeichnis
- Kapitel 0: Ein Wort an den Leser. Einige Anmerkungen zum in diesem Buch gewählten Ansatz
- Kapitel 10: Das Display-Modell. Beispielkapitel. Wer völlig neu einsteigt, sollte dieses Kapitel nicht sofort lesen. Es wird veröffentlicht, um Lehrenden und erfahrenen Lesern zu zeigen, wie weit dieses Buch nach etwa fünf Wochen kommt (unter der Annahme von zwei Kapiteln pro Woche). Außerdem, um ein wenig modernes C++ zu demonstrieren
Unterstützende Informationen
- Links zu C++-Implementierungen und Softwareentwicklungsumgebungen (samt einigen Ratschlägen für den Einstieg)
- Verwendung von Modulen (einschließlich einer Erklärung, wie das PPP-Modul mit
PPP_support.h gebaut wird)
- PPP-Modul für den Fall, dass Module verwendet werden können
- Header "PPP.h" für die einfachste Nutzung von
std- und PPP-Modulen
- Header "PPPheaders.h" für den Fall, dass wieder auf die Verwendung von Header-Dateien zurückgegangen werden muss
- GUI-Unterstützung einschließlich der Grafik/GUI-Benutzeroberflächenbibliothek von PPP3 (aus den Kapiteln 10–14). Um diesen Code auszuführen, muss Qt installiert werden. Siehe Benutzerhandbuch
- Beispielcode für mehrere Kapitel (TBD)
- Errata
- Auf Basis von PPP aktualisierte Vorlesungsfolien für PPP3
- PPP-Coding-Style-Guide
- Materialien zu Übungsaufgaben (TBD)
Kapitel aus PPP2
- Diese Kapitel wurden zwar mit C++14 statt C++23 geschrieben, sind aber weiterhin korrekt und führen auf vernünftige Weise in die Themen ein
- Kapitel 1: Computer, Menschen und Programmieren
- Kapitel 11: Anpassung von Ein-/Ausgabe
- Kapitel 22: Ideale und Geschichte
- Kapitel 23: Textverarbeitung
- Kapitel 24: Numerisches Rechnen
- Kapitel 25: Programmierung eingebetteter Systeme
- Kapitel 26: Testen
- Kapitel 27: Die Programmiersprache C
- Glossar
Übersetzungen
- Noch keine. Übersetzungen früherer Ausgaben siehe auf der Buchumschlagseite des Autors
Meinung von GN⁺
- PPP war ein bekanntes Buch für den Programmeinstieg, und nun erscheint die 3. Auflage, die C++20/23 nutzt und den Inhalt stark überarbeitet und gestrafft hat. Das sind erfreuliche Neuigkeiten.
- Besonders die vollständige Neugestaltung des GUI-Teils auf Qt-Basis kann als Beispiel dafür gelten, dass sich Qt als de-facto-Standard-GUI-Framework in der C++-Welt etabliert hat.
- Es scheint, dass moderne C++-Techniken wie Modularisierung aktiv berücksichtigt und die Verzahnung mit dem Web verstärkt wurden. Besonders eine Version, die direkt im Webbrowser ausgeführt werden kann, wirkt wie maßgeschneidert für den Bildungsbereich.
- Andererseits könnte die Verwendung des neuesten C++ Anfänger auch verwirren. Für Einsteiger könnte es nach wie vor besser sein, mit C-artigem C++ zu beginnen.
- Da der Autor Bjarne der Schöpfer von C++ ist und die Standardisierung maßgeblich vorangetrieben hat, dürfte dies eines der maßgeblichsten Bücher sein. Nicht nur Anfänger, sondern auch Experten können daraus von Bjarne ausgewählte Best Practices und Anwendungstipps lernen.
1 Kommentare
Hacker-News-Kommentare
Es wurde die Sorge geäußert, dass die C++20-Modulfunktion noch von den meisten Compilern nicht vollständig unterstützt wird und
import std;daher nicht funktioniert. Das könnte Anfänger verwirren.Die Verwendung von Qt statt FLTK im GUI-Kapitel ist eine große Änderung, von der erwartet wird, dass sie gut aufgenommen wird, da Qt in der Branche weit verbreitet ist. Unklar ist allerdings, wie sich das auf die Lernkurve auswirken wird.
In Stroustrups Code wird
using namespace std;verwendet, sodass das Präfixstd::weggelassen werden kann, was die Lesbarkeit des Codes verbessert.Es wurde die Frage aufgeworfen, warum in Stroustrups Code nach
#includenicht durchgängig Leerzeichen verwendet werden.Früher wurde mit C++ fast alles erledigt, etwa UI oder API-Parsing, heute ist die Rolle von C++ im Entwicklungs-Stack weiter nach unten gerückt.
Jemand hat eine frühere Ausgabe dieses Buches intensiv studiert und berichtet, dass sie sehr dabei geholfen hat, das Verständnis von C++ zu vertiefen. Allerdings gab es auch viele, die C++-Code schrieben, ohne solche Bücher zu lesen.
Es wird das Buch "C++ Annotations" vorgestellt, das aktuelle Informationen zu C++ enthält.
Die Seitenzahl und das Gewicht der 3. Auflage wurden im Vergleich zur 2. Auflage etwa halbiert.
Der Umfang wurde reduziert, weil der Abschnitt "Part IV: Broadening the View" aus der 2. Auflage entfernt wurde; dieser Inhalt ist online verfügbar. Die Themen, die C++11/14 nutzen, sind weiterhin relevant.
Es wird um Rat gebeten, da es schwer ist, eine IDE oder einen Compiler mit C++20-Unterstützung zu finden, bei dem
import std;funktioniert.