Sie sind hier: Buchauszüge Vorwort  
 BUCHAUSZÜGE
Vorwort
Inhaltsverzeichnis
Einführung
Typwandlungen

VORWORT
 



Noch ein C++ - Buch? Ist das notwendig? Heute geht es doch um Java, Net-Services, C#, Mobile Devices oder wie die Buzzwords des Jahres 2002 noch alle heißen mögen. Ist C++ nicht überkommen? Hört man nicht Grausames über Projekte, die mit C++ realisiert wurden?

Ja, alles richtig. Trotzdem gibt es einige gewichtige Gründe, die mich dazu veranlasst haben, dieses Buch zu schreiben. Da wäre zunächst die große Nachfrage aus der Leserschaft des Vorgängers Die Kunst der Objektorientierten Programmierung mit C++, die sich ein Nachfolgewerk wünschten. Dies wurde mir in zahllosen emails sowohl von Lesern, neuen Interessenten als auch vom Verlag mitgeteilt.

Zum zweiten ist der Trend zum Einsatz von C++ in der Praxis ungebrochen. Noch immer ist C++ die am meisten eingesetzte und damit wohl wichtigste Programmiersprache zur Erstellung neuer Software. Die Stellenanzeigen (z.B. in EDV-Fachzeitschriften) sprechen eine deutliche Sprache: mehr als Java-Kenntnisse werden fundierte C++ Kenntnisse nachgefragt (Spezialprojekte einmal ausgenommen). Dies kann ich auch aus verschiedenen Consulting-Projekten bestätigen: in nahezu allen größeren Vorhaben waren die zentralen Geschäftsprozesse in C++ realisiert. Java oder andere Sprachen wurden meist für Spezialbereiche wie z.B. die Präsentationslogik verwendet.

Befindet man sich in einem solchen Projekt, hat man es schnell mit einer halben Million Codezeilen zu tun, in denen sich die unterschiedlichsten Stile finden lassen – man findet Perlen, aber auch wilde Konstruktionen, die eher aus langen Versuch- und Irrtum-Sitzungen zu entstammen scheinen als aus ingenieurmäßigem Vorgehen. Und genau hier sehe ich den Bedarf für ein gutes Buch: Zur professionellen Programmierung mit C++ benötigt man professionelles Handwerkszeug. Dies umfasst einmal die Kenntnis der Sprachmittel, die C++ für den Programmierer bereithält. Dies allein ist jedoch nicht ausreichend, wie die große Anzahl teurer, schlecht wartbarer oder fehleranfälliger Programme zeigt. Was oft vernachlässigt wird, ist die Kenntnis über die korrekte Anwendung eines Sprachmittels zur Lösung einer gegebenen Aufgabe. Die ungeeignete Herangehensweise ist oft der Grund für mangelnde Softwarequalität.

Der Einsteiger ist nach der Lektüre eines Lehrbuches oder nach dem Besuch eines Kurses überwältigt von der Fülle der Ausdrucksmöglichkeiten, die die Sprache bietet. Die Erfahrung zeigt, dass dann Konstruktionen wie Überladen von Funktionen, selbstdefinierte Operatoren etc. viel zu häufig und undifferenziert eingesetzt werden – eben weil man das neu Gelernte auch anwenden will.

Ich habe versucht, mit diesem Buch der Gefahr zu begegnen. Das Buch beschreibt daher nicht nur die Sprachelemente der Sprache C++ sorgfältig und vollständig, sondern gibt zu jedem Konstrukt auch Hinweise für den Einsatz. Fallstudien und ein durchgängiges Projekt unterstützen die Anwendung. Dadurch wird dem ernsthaften Programmierer das Handwerkszeug vermittelt, qualitativ hochwertige Programme mit professioneller Technik zu entwickeln.

Meiner Beurteilung nach wird die Bedeutung der Sprache C++ zur industriellen Softwareentwicklung tendenziell weiter zunehmen. Gründe dafür sind u.a. das Abflauen des Java-Hypes, aber vor allem die überaus erfolgreiche Standardisierung der Sprache, die nach nur 8 Jahren im Jahre 1998 abgeschlossen werden konnte. Die Standardisierung verhindert einen Wildwuchs an Erweiterungen, Dialekten etc., die z.B. wesentlich zum Misserfolg der Sprache PL/1 beigetragen haben. Compilerbauer wissen nun, was sie zu tun haben. Projektmanager können den Compilerhersteller wechseln, ohne gleich das ganze Projekt zu gefährden. Die Erstellung allgemeinverwendbarer Bibliotheken wird einfacher. Die Ausbildung wird einfacher, und nicht zuletzt bilden sich Standard-Vorgehensweisen zur Lösung von Standard-Aufgabenstellungen heraus (sog. patterns, deutsch etwa: Muster).

Ursprünglich war dieses Buch als Nachfolger der Kunst der Objektorientierten Programmierung mit C++ geplant. Als Ziel hatte ich mir vorgenommen, auch die nicht-objektorientieren Aspekte der Sprache zu berücksichtigen – schließlich ist C++ eine hybride Programmiersprache, in der man auch prozedural programmieren kann. Als Resultat sind im vorliegenden Buch 16 Kapitel hinzugekommen, die vor allem die klassischen „Brot&Butter“-Elemente der Sprache behandeln. Auf Grund der Fülle des Materials ist nun aber eine Zweiteilung erforderlich geworden. In diesem Buch werden die Sprachmittel der Sprache vorgestellt und mit Beispielen und Fallstudien unterlegt. In einem weiteren Band geht es dann um die Standardbibliothek sowie um den gesamten Themenkreis der Programmiertechniken. Insofern sind beide Bände unabhängig voneinander verwendbar, bilden aber trotzdem ein Ganzes.

Ich möchte mich an dieser Stelle bei den Personen, die mich in den letzten Jahren in irgendeiner Weise bei der Erstellung des Buches unterstützt haben, bedanken. Zunächst einmal wäre hier meine Familie zu nennen, die auf mich länger verzichten musste als es ihr und mir lieb war, und die mir den Rückhalt und den freien Kopf für ein Unterfangen dieser Größenordnung gegeben hat. Als nächstes möchte ich mich bei meinen Reviewern bedanken, die zahllose kleinere und größere Fehler und Unstimmigkeiten aufgedeckt haben. Weiterer Dank gebührt den vielen aktiven Mitgliedern der Newsgroups comp.lang.c++.moderated und comp.std.c++.moderated, die sich die Zeit genommen haben, meine teils sehr speziellen Fragen zu beantworten. Insbesondere die Diskussionen in diesen Newsgroups haben meine Kenntnisse der Materie wesentlich erweitert. Schließlich verdienen auch die zahlreichen Softwerker Erwähnung, die mir mit ihrer Sichtweise bis dahin unbekannte Einblicke in Vorgänge bei der Entwicklung von Software ermöglicht haben. Erwähnen möchte ich auch den Support der Fa. Comeau Computing, die einige knifflige Fragen zur Standardkonformität bestimmter Programmkonstruktionen beantworten konnte. Zu guter letzt geht mein Dank an den Verlag Vieweg, der mir die Möglichkeit gab, mehrere zugesagte Abgabetermine zu überziehen um so das bestmögliche Ergebnis erzielen zu können.