C++
Die Programmiersprache C++ wurde von Bjarne Stroustrup seit 1979 entwickelt, erste Anwendungen außerhalb der Forschung datieren vom Juli 1983, erste kommerzielle Systeme von 1985. Von einem einfachen "C mit Klassen" entwickelte sich die Sprache von da an über mehrere Zwischenstufen zum heutigen, als weitgehend ausgereift geltenden Stand.
Überblick
Wie der Name andeutet, ist C++ eine Erweiterung der Programmiersprache C, die weiterhin enthalten ist (jedoch nicht als Teilmenge im mathematischen Sinn). Es gab aber auch Rückwirkungen von C++ auf C, die in die ANSI C-Norm einflossen.
C++ ist seit 1998 von der ISO (ISO-14882) genormt. Die nächste ISO-C++-Norm wird voraussichtlich noch in dieser Dekade herausgegeben werden ("C++0x").
Nach Stroustrup ermöglicht C++ die Programmierung nach folgenden Paradigmen:
- Prozedurale Programmierung
- Modulare Programmierung
- Strukturierte Programmierung
- Programmierung mit benutzerdefinierten (=abstrakten) Datentypen
- Objektorientierte Programmierung
- Generische Programmierung mittels Templates.
Für die objektorientierte Erweiterung der Sprache mittels Klassen war Simula-67 das primäre Vorbild. Die letzten Änderungen an C (C99) haben Spracherweiterungen eingeführt, über die C++ zunächst nicht verfügt (ein Beispiel sind die so genannten VLAs).
Da die Art der Erweiterung von C zu C++ die objektorientierte Programmierung ermöglicht, aber nicht erzwingt, nennt man das Ergebnis auch eine Hybridsprache. Dieser Ansatz machte es bei der Einführung der neuen Möglichkeiten, wie der objektorientierten und der generischen Programmierung möglich, einen "sanften" Übergang zu vollziehen.
Siehe auch: Entwurfsmuster, Metaprogrammierung
Hello-World-Programm in C++
Der folgende Code stellt ein einfaches C++-Programm dar, das eine Meldung auf dem Standardausgabemedium ausgibt.
#include <iostream>
int main() { std::cout << "Hello, world!" << std::endl; return 0; // Rückgabewert ist 0 }
Die C++-ISO-Norm schreibt vor, dass das Ergebnis von main vom Typ int sein muss. Ein Programm, bei dem das Ergebnis von main nicht vom Typ int ist, ist kein gültiges Programm im Sinne der C++-ISO-Norm (ISO-14882).
Der Wert hinter dem Wort return gibt Informationen bzw. Daten an den Aufrufer, in diesem Fall den Aufrufer des gesamten Programms, zurück. Der Wert 0 bedeutet per Konvention, dass der Programmablauf problemlos erfolgt ist. Wird der Rückgabewert bei der Funktion main nicht angegeben, dann ist dies gleichbedeutend damit, dass 0 zurückgegeben wird. Das folgende Programm macht also exakt das gleiche wie das obige:
#include <iostream>
int main() { std::cout << "Hello, world!" << std::endl; }
Auch hier erhält der Aufrufer des Programms als Ergebnis den Wert 0.
C++-Entwicklungswerkzeuge
- Einige C++-Compiler
- g++; Bestandteil von GCC (GNU Compiler Collection); Linux
- MinGW; g++ für Windows
- Microsoft Visual C++, Version 7.1 oder neuer empfohlen; Windows
- Intel C++; Windows
- Borland C++; Windows
- Open Watcom; Windows
- Visuelle Programmierumgebungen für C++
- Borland C++ Builder; Windows
- Kylix; Linux
- DevCpp; Windows und Linux
- Microsoft Visual C++, Version 7.1 oder neuer empfohlen; Windows
- KDevelop; Linux
- Qt-Designer; Linux
Verwandte Sprachen
Einen anderen Weg als C++ gehen Programmiersprachen wie Java und C#, die zu Gunsten eines konsistenteren Designs den Pfad der Kompatibilität zu C und C++ verlassen. Dabei dient Java und C# die Syntax, nicht jedoch die Semantik von C++, als Vorbild.
Einen alternativen Ansatz, die objektorientierte Programmierung in C zu integrieren, stellt Objective-C dar, das Smalltalks Klassen- und Objektbegriff auffasst und weiterentwickelt.
Literatur
- Bjarne Stroustrup: Die C++ Programmiersprache, Addison-Wesley, ISBN 3-8273-1660-X, das Standardwerk zu C++, Grundkenntnisse zu C von Vorteil; sehr empfehlenswert
- Andrew Koenig / Barbara E. Moo: Intensivkurs C++, Pearson Studium, ISBN 3-8273-7029-9, hervorragendes Anfängerbuch, ein gewisses Grundverständnis zu Programmierung von Vorteil; sehr empfehlenswert
- Scott Meyers: Effektiv C++ programmieren - 50 Wege zur Verbesserung ihrer Programme und Entwürfe, Addison-Wesley, ISBN 3-8273-1305-8, zur Vertiefung bereits vorhandener C++-Kenntnisse; sehr empfehlenswert
- Scott Meyers: Mehr Effektiv C++ programmieren - 35 neue Wege zur Verbesserung ihrer Programme und Entwürfe, Addison-Wesley, ISBN 3-8273-1275-2, Vertiefung vorhandener C++-Kenntnisse; sehr empfehlenswert
- Herb Sutter: Exceptional C++, ISBN 3-8273-1711-8 (deutsch), Vertiefung vorhandener C++-Kenntnisse; sehr empfehlenswert
- Andrei Alexandrescu: Modernes C++ Design, mitp, ISBN 3-8266-1347-3, das Standardwerk zur C++-Metaprogrammierung, setzt ein tiefes Verständnis von C++ voraus; sehr empfehlenswert
- Nicolai M. Josuttis: Objektorientiertes Programmieren in C++, Addison-Wesley, ISBN 3-8273-1771-1
- Stanley B. Lippman, Josee Lajoie: C++ Primer, mitp, ISBN 3-8266-0811-9
- Stanley B. Lippman, Josee Lajoie: C++ - IT-Studienausgabe, mitp, ISBN 3-8266-1429-1
Weblinks
- Oft gestellte Fragen und Antworten, englisch
- C++-Diskussionsgruppe, deutsch
- Comeau's Online-Compiler, zum Kompilieren einfacher Programme
- ACCU, internationale Interessengemeinschaft für C und C++
- Internetseite des GNU-C++-Compilers
- C++ im Deutschen Software Entwickler Wiki