Zum Inhalt springen

„C++“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[ungesichtete Version][ungesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Poldi (Diskussion | Beiträge)
Poldi (Diskussion | Beiträge)
Zeile 90: Zeile 90:


== Weiterentwicklung der Programmiersprache C++ ==
== Weiterentwicklung der Programmiersprache C++ ==
Um mit den aktuellen Entwicklungen der sich schnell verändernden Computer-Technik Schritt zu halten, aber auch zur Ausbesserung bekannter Schwächen, erarbeitet das C++-Standardisierungskomitee derzeit die nächste größere Revision von C++, die inoffiziell mit '''C++0x'''<!--zahlenmäßiger Nachweis für "(manchmal auch '''C++200x''')" - gibt es signifikante Vorkommen?--> abgekürzt wird, worin die Ziffernfolge in C++0x eine grobe Einschätzung des möglichen Erscheinungstermins andeuten soll. Im November 2006 wurde der Zieltermin für die Fertigstellung auf das Jahr 2009 festgelegt und die Abkürzung '''C++09''' dafür eingefürt.
Um mit den aktuellen Entwicklungen der sich schnell verändernden Computer-Technik Schritt zu halten, aber auch zur Ausbesserung bekannter Schwächen, erarbeitet das C++-Standardisierungskomitee derzeit die nächste größere Revision von C++, die inoffiziell mit '''C++0x'''<!--zahlenmäßiger Nachweis für "(manchmal auch '''C++200x''')" - gibt es signifikante Vorkommen?--> abgekürzt wird, worin die Ziffernfolge eine grobe Einschätzung des möglichen Erscheinungstermins andeuten soll. Im November 2006 wurde der Zieltermin für die Fertigstellung auf das Jahr 2009 festgelegt und die Abkürzung '''C++09''' dafür eingefürt.


Die vorrangigen Ziele für die Weiterentwicklung von C++ sind Verbesserungen im Hinblick auf die Systemprogrammierung sowie zur Erstellung von Programmbibliotheken. Außerdem soll die Erlernbarkeit der Sprache für Anfänger verbessert werden.
Die vorrangigen Ziele für die Weiterentwicklung von C++ sind Verbesserungen im Hinblick auf die Systemprogrammierung sowie zur Erstellung von Programmbibliotheken. Außerdem soll die Erlernbarkeit der Sprache für Anfänger verbessert werden.


=== Berücksichtigung aktueller technischer Gegebenheiten ===
C++ deckt einige typische Problemfelder der Programmierung noch nicht ausreichend ab, zum Beispiel die Unterstützung von konkurrierendem Zugriff ([[Thread (Informatik)|Threads]]), deren Integration in C++, insbesondere für die Verwendung in Mehrprozessorumgebungen, eine Überarbeitung der Sprache unumgänglich macht. Durch Einführung eines Speichermodells sollen Garantien der Sprache für den konkurrierendem Zugriff festgelegt werden, um Mehrdeutigkeiten in der Abarbeitungsreihenfolge sowohl aufzulösen, als auch in bestimmten Fällen aufrechtzuerhalten und dadurch Spielraum für Optimierungsmöglichkeiten zu schaffen.
C++ deckt einige typische Problemfelder der Programmierung noch nicht ausreichend ab, zum Beispiel die Unterstützung von konkurrierendem Zugriff ([[Thread (Informatik)|Threads]]), deren Integration in C++, insbesondere für die Verwendung in Mehrprozessorumgebungen, eine Überarbeitung der Sprache unumgänglich macht. Durch Einführung eines Speichermodells sollen Garantien der Sprache für den konkurrierendem Zugriff festgelegt werden, um Mehrdeutigkeiten in der Abarbeitungsreihenfolge sowohl aufzulösen, als auch in bestimmten Fällen aufrechtzuerhalten und dadurch Spielraum für Optimierungsmöglichkeiten zu schaffen.


=== Verbesserungen am Sprachkern ===
Zu den weitreichenderen Spracherweiterungen gehören die "Konzepte" (engl. ''concepts'') zur Verbesserung der Handhabung von Templates, [[Typinferenz]] zur Ableitung von Ergebnistypen aus Ausdrücken und die R-Wert-Referenzen, mit deren Hilfe sich als Ergänzung zu dem bereits vorhandenen Kopieren von Objekten dann auch ein ''Verschieben'' realisieren lässt.

=== Erweiterung der Programmbibliothek ===
In der C++-Standardbibliothek fehlt z.B. Unterstützung für [[TCP/IP]] und Dateisystem-Verzeichnisse.
In der C++-Standardbibliothek fehlt z.B. Unterstützung für [[TCP/IP]] und Dateisystem-Verzeichnisse.


Im April 2006 wurde der erste technische Report (''TR1'') vom C++-Komitee verabschiedet. Dabei handelt es sich um die erste Erweiterung zur Standardbibliothek. Der [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf TR1] beschreibt viel genutzte C++-Bibliotheken, die nun offiziell für ISO C++ als Bibliothekserweiterung verfügbar gemacht werden können. Enthalten sind im TR1 z.B. [[regulärer Ausdruck|reguläre Ausdrücke]], verschiedene [[intelligenter Zeiger|intelligente Zeiger]], so genannte ''Hash-Container'', eine Zufallszahlenbibliothek, usw. Die meisten Erweiterungen stammen aus der [[Boost|Boost-Bibliothek]], woraus sie mit minimalen Änderungen übernommen wurden.
Im April 2006 wurde der erste technische Report (''TR1'') vom C++-Komitee verabschiedet. Dabei handelt es sich um die erste Erweiterung zur Standardbibliothek. Der [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf TR1] beschreibt viel genutzte C++-Bibliotheken, die nun offiziell für ISO C++ als Bibliothekserweiterung verfügbar gemacht werden können. Enthalten sind im TR1 z.B. [[regulärer Ausdruck|reguläre Ausdrücke]], verschiedene [[intelligenter Zeiger|intelligente Zeiger]], so genannte ''Hash-Container'', eine Zufallszahlenbibliothek, usw. Die meisten Erweiterungen stammen aus der [[Boost|Boost-Bibliothek]], woraus sie mit minimalen Änderungen übernommen wurden.<!-- C99-Module -->
<!-- C-Kompatibilität wird nach wie vor hochgehalten. -->
<!-- C-Kompatibilität wird nach wie vor hochgehalten. -->



Version vom 8. Januar 2007, 21:05 Uhr

C++ ist eine der verbreitetsten und industriell bedeutendsten Programmiersprachen. Sie wurde von Bjarne Stroustrup bei AT&T in den 1980er Jahren als Erweiterung der Sprache C entwickelt. C++ ist als Mehrzwecksprache konzipiert und unterstützt insbesondere effiziente und maschinennahe Programmierung, Datenabstraktion sowie objektorientierte und generische Programmierung.

Anwendungsgebiete

C++ wird vor allem in der Systemprogrammierung eingesetzt. Auch in der Anwendungsprogrammierung ist C++ verbreitet, wurde aber mit dem Aufkommen der Sprachen Java und C# zum Teil aus dieser Domäne zurückgedrängt.

Bei der Anwendungsprogrammierung kommt C++ heute vor allem dort zum Zuge, wo maximale Forderungen an die Effizienz gestellt werden, sodass durch technische Gegebenheiten bestimmte Leistungsgrenzen möglichst gut ausgenutzt werden können.

Weitere typische Anwendungsfelder sind Signalprozessoren, Treiber und eingebettete Systeme. C++ nimmt hier oft den Platz ein, der früher ausschließlich Assembler-Sprachen und der Programmiersprache C vorbehalten war.

Eigenschaften

Sprachdesign

Die Sprache C++ zeichnet sich dadurch aus, dass sie, anstatt für typische Problemstellungen Einzellösungen anzubieten, verallgemeinerte Mechanismen favorisiert. Ein Schwerpunkt liegt dabei auf der Unterstützung der Sprachmittel zur Entwicklung von Bibliotheken. Ein Beispiel für die hohe Flexibilität, die dadurch erreicht wird, ist die anpassbare Speicherverwaltung, in die sich etwa nahtlos eine automatische Speicherbereinigung integrieren lässt.

Eine der Stärken von C++ ist auch die Kombinierbarkeit von effizienter, maschinennaher Programmierung mit mächtigen Sprachmitteln, die einfache bis komplexe Implementierungsdetails zusammenfassen und weitgehend hinter abstrakten Befehlsfolgen verbergen. Dabei kommt vor allem die Template-Metaprogrammierung zum Zuge, eine Technik, die eine nahezu kompromisslose Verbindung von Effizienz und Abstraktion erlaubt.

Kompatibilität mit C

Um sich die hohe Verbreitung der Programmiersprache C zunutze zu machen, wurde C++ als Erweiterung von C gemäß dem damaligen Stand von 1990 (ISO/IEC 9899:1990, auch kurz C90 genannt) entworfen. C-Compiler sind auch heute noch für praktisch jeden Prozessor verfügbar, und in C geschriebene Programme können in der Regel ohne große Anpassungen in C++ übernommen werden.

Die Kompatibilität mit C zwingt C++ aber auch zur Fortführung einiger dadurch übernommener Nachteile. Dazu zählen die teilweise schwer verständlichen C-Syntax, der als überholt geltende Präprozessor sowie verschiedene von der jeweiligen Plattform abhängige Details der Sprache. Plattformabhängigkeiten erschweren die Portierung von C++-Programmen zwischen unterschiedlichen Rechnertypen, Betriebssystemen und Compilern.

Die letzten Änderungen an C fanden im Jahr 1999 statt (ISO/IEC 9899:1999, auch kurz C99 genannt), also nach der Normung von C++, sodass dort eingeflossene Änderungen nicht in C++ berücksichtigt werden konnten. C-Compiler, die den Stand der ISO-Norm von 1999 umsetzen, sind aber noch nicht sehr verbreitet. Die theoretisch dadurch entstandenen Inkompatibilitäten spielen deshalb in der Praxis bislang keine große Rolle. Um dennoch einem Auseinanderdriften der Sprachen vorzubeugen, werden die Spracherweiterungen von C bei der in Arbeit befindlichen C++-Version berücksichtigt.

Mittlerweile ist C++ selbst sehr stark verbreitet, und kann einen Vorteil gegenüber C oft dann ausspielen, wenn die Größe eines Projektes die Verwendung von Assembler oder C nicht ratsam erscheinen lassen.

Anwendung

Das breite Leistungspektrums und die vielfältigen Gestaltungsmöglichkeiten der Sprache führen zu verhältnismäßig langen Einarbeitungszeiten. Außerdem wird die Verwendung von Programmierrichtlinien aus Gründen der Wartbarkeit und Fehleridentifizierung mehr als in anderen Sprachen angeraten.

Entstehungsgeschichte

C++ wurde von Bjarne Stroustrup ab 1979 bei Bell-Laboratorien von AT&T entwickelt. Die Idee für eine neue Programmiersprache entstand aus den Erfahrungen mit der Programmiersprache Simula im Rahmen der Doktorarbeit von B. Stroustrup. Simula erschien zwar geeignet für den Einsatz in großen Software-Projekten, die Struktur der Sprache erschwerte aber die für viele praktische Anwendungen erforderliche Erzeugung hocheffizienter Programme. Effiziente Programme ließen sich zwar mit der Sprache BCPL schreiben, für große Projekte war BCPL aber wiederum ungeeignet.

Als Stroustrup in den Bell-Laboratorien zu arbeiten begann, sah er sich mit dem Problem konfrontiert, den UNIX-Betriebssystemkern im Hinblick auf verteilte Programmierung analysieren zu müssen. Mit den Erfahrungen aus seiner Doktorarbeit erweiterte er die Programmiersprache C um ein Klassenkonzept, für das die Sprache Simula-67 das primäre Vorbild war.

Die Wahl fiel auf die Programmiersprache C, weil C eine Mehrzwecksprache war, schnellen Code produzierte und einfach auf andere Plattformen zu portieren war. Als dem Betriebssystem UNIX beiliegende Sprache hatte C außerdem eine nicht unerhebliche Verbreitung. Zunächst fügte er der Sprache Klassen (mit Datenkapselung) hinzu, dann abgeleitete Klassen, ein strengeres Typsystem, Inline-Funktionen und Standard-Argumente.

Während Stroustrup „C with Classes“ („C mit Klassen“) entwickelte (woraus später C++ wurde), schrieb er auch cfront, einen Compiler, der aus C with Classes zunächst C-Code als Zwischenresultat erzeugte. Die erste kommerzielle Version von cfront erschien im Oktober 1985.

1982 wurde C with Classes in C++ umbenannt. Erweiterungen darin waren: virtuelle Funktionen, Überladen von Funktionsnamen und Operatoren, Referenzen, Konstanten, änderbare Freispeicherverwaltung und eine verbesserte Typüberprüfung. Die Möglichkeit von Kommentaren, die an das Zeilenende gebunden sind, wurde wieder aus BCPL übernommen (//).

1985 erschien die erste Version von C++, die eine wichtige Referenzversion darstellte, da die Sprache damals noch nicht standardisiert war. 1989 erschien die Version 2.0 von C++. Neu darin waren Mehrfachvererbung, abstrakte Klassen, statische Elementfunktionen, konstante Elementfunktionen und die Erweiterung des Schutzmodells um protected. 1990 erschien das Buch The Annotated C++ Reference Manual, das als Grundlage für den darauffolgenden Standardisierungsprozess diente.

Relativ spät wurden der Sprache Templates, Ausnahmen, Namensräume, neuartige Typumwandlungen und boolesche Typen hinzugefügt.

Im Zuge der Weiterentwicklung der Sprache C++ entstand auch eine gegenüber C erweiterte Standardbibliothek. Erste Ergänzung war die Stream-I/O-Bibliothek, die Ersatz für traditionelle C-Funktionen wie zum Beispiel printf() und scanf() bietet. Eine der wesentlichen Erweiterungen der Standardbibliothek kam später durch die Integration großer Teile der bei Hewlett-Packard entwickelten Standard Template Library (STL) hinzu.

Nach jahrelanger Arbeit wurde schließlich 1998 die endgültige Fassung der Sprache C++ (ISO/IEC 14882:1998) genormt. 2003 wurde ISO/IEC 14882:2003 verabschiedet, eine Nachbesserung der Norm von 1998. Die nächste größere Überarbeitung der Sprache C++ erscheint voraussichtlich im Jahr 2009.

Der Name „C++“

Der Name ist eine Wortschöpfung von Rick Mascitti und wurde zum ersten Mal im Dezember 1983 benutzt. Der Name kommt vom Inkrement-Operator „++“, der den Wert einer Variablen um eins erhöht.

Hallo-Welt-Programm in C++

Der folgende Quelltext stellt ein einfaches C++-Programm dar, das die Meldung Hallo Welt! auf dem Standardausgabemedium ausgibt:

#include <iostream> 

int main() 
{
  std::cout << "Hallo Welt!" << std::endl; 
}

Erläuterungen: Bei main handelt es sich um eine Funktion, genauer gesagt ist es die Hauptfunktion des gesamten Programms. Sie ist in jedem C++-Programm vorhanden und wird nach dem Start des Programms aufgerufen. Die Funktion main ist die einzige Funktion, die – obwohl sie einen Wert zurückgibt – nicht die Anweisung „return“ benötigt. Ohne die explizite Anweisung return gibt main den Wert 0 zurück.

Sprachmerkmale im Detail

C++ basiert auf der Programmiersprache C wie in ISO/IEC 9899:1990 beschrieben. Zusätzlich zu den in C vorhandenen Möglichkeiten bietet C++ weitere Datentypen, Klassen mit Vererbung und virtuellen Funktionen, Ausnahmebehandlung, Templates (Schablonen), Namensräume, Inline-Funktionen, Überladen von Operatoren und Funktionsnamen, Referenzen, Operatoren zur Freispeicherverwaltung und mit der C++-Standardbibliothek eine erweiterte Bibliothek.

C++ ist eine so genannte „Multiparadigmen-Sprache“, die verschiedene Programmiertechniken unterstützt:

Siehe auch: Programmierparadigma, C++-Metaprogrammierung

Vergleich mit anderen Sprachen

Objective-C

C++ war nicht der einzige Ansatz, die Programmiersprache C um Eigenschaften zu erweitern, die das objektorientierte Programmieren vereinfachen. In den 1980er Jahren entstand die Programmiersprache Objective-C, die sich aber im Gegensatz zu C++ an Smalltalk und nicht an Simula orientierte. Die Syntax von Objective-C unterscheidet sich unter anderem wegen der Smalltalk-Wurzeln stark von C++. Objective-C ist deutlich weniger weit verbreitet als C++. Bekannteste Einsatzgebiete von Objective-C sind die Programmierschnittstelle OpenStep und das Betriebssystem Mac OS X.

Java und C#

Die Programmiersprachen Java und C# haben eine mit C++ vergleichbare Verbreitung. Sie verfügen über eine ähnliche, ebenfalls an C angelehnte Syntax wie C++, sind auch objektorientiert und unterstützen seit einiger Zeit Typparameter, weshalb ein Vergleich mit ihnen besonders naheliegend ist. Trotz äußerlicher Ähnlichkeiten unterscheiden sie sich aber konzeptionell von C++ zum Teil beträchtlich.

Generische Techniken ergänzen die objektorientierte Programmierung um Typparameter und erhöhen so die Wiederverwertbarkeit einmal kodierter Algorithmen. Die generischen Java-Erweiterungen sind jedoch lediglich auf Klassen, nicht aber auf integrierte Typen anwendbar. Demgegenüber beziehen generischen Spracherweiterungen von C# auch die integrierten Typen mit ein. Dabei handelt es sich allerdings um eine Erweiterung für Generik zur Laufzeit, die die auf Kompilationszeit zugeschnittenen C++-Templates zwar sinnvoll ergänzen, nicht aber ersetzen können.

Gerade die generische Programmierung macht C++ zu einem mächtigen Programmierwerkzeug. Während die objektorientierte Programmierung in Java und C# nach wie vor den zentralen Abstraktionsmechanismus darstellt, ist diese Art der Programmierung in C++ rückläufig. So werden tiefe Klassenhierarchien vermieden, und zu Gunsten der Effizienz und der Minimierung des Ressourcenverbrauchs verzichtet man in vielen Fällen auf Polymorphie, einen der fundamentalen Bestandteile der objektorientierten Programmierung.

Siehe auch: Simula, Smalltalk, Vergleich objektorientierter Programmiersprachen

Weiterentwicklung der Programmiersprache C++

Um mit den aktuellen Entwicklungen der sich schnell verändernden Computer-Technik Schritt zu halten, aber auch zur Ausbesserung bekannter Schwächen, erarbeitet das C++-Standardisierungskomitee derzeit die nächste größere Revision von C++, die inoffiziell mit C++0x abgekürzt wird, worin die Ziffernfolge eine grobe Einschätzung des möglichen Erscheinungstermins andeuten soll. Im November 2006 wurde der Zieltermin für die Fertigstellung auf das Jahr 2009 festgelegt und die Abkürzung C++09 dafür eingefürt.

Die vorrangigen Ziele für die Weiterentwicklung von C++ sind Verbesserungen im Hinblick auf die Systemprogrammierung sowie zur Erstellung von Programmbibliotheken. Außerdem soll die Erlernbarkeit der Sprache für Anfänger verbessert werden.

Berücksichtigung aktueller technischer Gegebenheiten

C++ deckt einige typische Problemfelder der Programmierung noch nicht ausreichend ab, zum Beispiel die Unterstützung von konkurrierendem Zugriff (Threads), deren Integration in C++, insbesondere für die Verwendung in Mehrprozessorumgebungen, eine Überarbeitung der Sprache unumgänglich macht. Durch Einführung eines Speichermodells sollen Garantien der Sprache für den konkurrierendem Zugriff festgelegt werden, um Mehrdeutigkeiten in der Abarbeitungsreihenfolge sowohl aufzulösen, als auch in bestimmten Fällen aufrechtzuerhalten und dadurch Spielraum für Optimierungsmöglichkeiten zu schaffen.

Verbesserungen am Sprachkern

Zu den weitreichenderen Spracherweiterungen gehören die "Konzepte" (engl. concepts) zur Verbesserung der Handhabung von Templates, Typinferenz zur Ableitung von Ergebnistypen aus Ausdrücken und die R-Wert-Referenzen, mit deren Hilfe sich als Ergänzung zu dem bereits vorhandenen Kopieren von Objekten dann auch ein Verschieben realisieren lässt.

Erweiterung der Programmbibliothek

In der C++-Standardbibliothek fehlt z.B. Unterstützung für TCP/IP und Dateisystem-Verzeichnisse.

Im April 2006 wurde der erste technische Report (TR1) vom C++-Komitee verabschiedet. Dabei handelt es sich um die erste Erweiterung zur Standardbibliothek. Der TR1 beschreibt viel genutzte C++-Bibliotheken, die nun offiziell für ISO C++ als Bibliothekserweiterung verfügbar gemacht werden können. Enthalten sind im TR1 z.B. reguläre Ausdrücke, verschiedene intelligente Zeiger, so genannte Hash-Container, eine Zufallszahlenbibliothek, usw. Die meisten Erweiterungen stammen aus der Boost-Bibliothek, woraus sie mit minimalen Änderungen übernommen wurden.

[1]

C++-Compiler

Die Implementierung eines C++-Compilers gilt als äußerst aufwändig. Seit der Fertigstellung der Sprachnorm 1998 dauerte es mehrere Jahre bis die Sprache von C++-Compilern weitestgehend unterstützt wurde. Schon allein die Umsetzung des Sprachmittels export, das zur Unterstützung von Templates dient, wird mit etwa 2 bis 3 Mannjahren veranschlagt, ein Zeitraum, in dem bei anderen Programmiersprachen komplette Compiler entstehen. Bis heute gab es erst zwei Compiler, die über das Sprachmittel export verfügt haben.

C++ wurde in der Phase, in der die Sprache die größte Entwicklung erlebte, bereits intensiv eingesetzt. Dies sorgte dafür, dass viele Entwickler nicht oder nur unzureichend mit neueren Eigenschaften der Sprache vertraut waren oder diese auf Grund von unvollständigen Compilern nicht einsetzen konnten. Daher sind viele Projekte, die in C++ entwickelt wurden, auch heute nicht auf dem aktuellen Stand der C++-Programmierung oder sogar inkompatibel zur aktuellen C++-Norm.

Auch der Stand vieler Lehrbücher und Lehrveranstaltungen ist veraltet. Da sich einige Compiler, wie der GCC, der C++-Sprachdefinition immer mehr annähern, stimmen Lehrinhalte oft nicht mit der Realität existierender Compiler überein.

Bedeutende C++-Compiler

Compiler Kommentar Mit spezieller IDE Plattform
Comeau's C++ Compiler Gilt als einziger Compiler, der C++ vollständig umsetzt; unterstützt zum Beispiel auch export von Templates; ist jedoch mehr ein Frontend-Compiler; proprietär (kann über das Internet ausprobiert werden) Nein Windows, Linux, Solaris/SPARC
g++ Bestandteil der GCC; setzt ab Version 3.4 die Sprache C++ nahezu vollständig um; Freie Software Nein Unix, Linux, Mac OS X, Windows (dort auch als MinGW), AmigaOS
MSVC Teil von Microsoft Visual C++, der verbreitetsten IDE unter Windows; setzt ab der Version 7.1 die Sprache C++ nahezu vollständig um; proprietär; kostenlos in der Microsoft Visual C++ Express Edition verfügbar. Ja Windows
Intel C++ Compiler Setzt C++ nahezu vollständig um; erzeugt hocheffizienten Code für Intel-Prozessoren; proprietär Nein Windows, Linux, MacOS X
Open Watcom Auch Unterstützung älterer Plattformen, bisher noch ohne vollständige C++-Standardbibliothek; Open Source Ja DOS, Windows, OS/2, Netware (Linux-Unterstützung in Arbeit)
Borland C++ Builder proprietär (eine ältere Version ist kostenlos ohne IDE verfügbar) Ja Windows, Linux (Kylix)
Turbo C++ Kostenloses Basis-Paket aus dem kostenpflichtigen Turbo C++ Professional. Ja Windows
Sun Studio kommerzielle C-, C++- und Fortran 95-Compilersuite Nein Sun Solaris, Linux
IBM XL C/C++ kommerzielle C- und C++-Compiler von IBM Nein AIX, z/VM, Linux

Für Kommandozeilen-Compiler, die keine spezielle integrierte Entwicklungsumgebung mitbringen, existiert eine große Zahl von unabhängigen Werkzeugen, die die Entwicklung sehr erleichtern. Eine Liste derer findet man im selbigen Artikel.

Siehe auch: Compiler, Visuelle Programmierumgebung

Siehe auch

Literatur

  • Bjarne Stroustrup: Die C++-Programmiersprache, Addison-Wesley, ISBN 3-8273-1660-X, das Standardwerk zu C++, Grundkenntnisse in C von Vorteil.
  • Andrew Koenig, Barbara E. Moo: Intensivkurs C++, Pearson Studium, ISBN 3-8273-7029-9, Anfängerbuch, ein gewisses Grundverständnis der Programmierung ist von Vorteil.
  • Scott Meyers: Effektiv C++ Programmieren – 55 Möglichkeiten, Ihre Programme und Entwürfe zu verbessern, Addison-Wesley, ISBN 3-8273-2297-9, zur Vertiefung bereits vorhandener C++-Kenntnisse.
  • 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.
  • Herb Sutter: Exceptional C++, ISBN 3-8273-1711-8, Vertiefung vorhandener C++-Kenntnisse.
  • Andrei Alexandrescu: Modernes C++ Design – Generische Programmierung und Entwurfsmuster angewendet, ISBN 3-8266-1347-3, ein Standardwerk zur C++-Metaprogrammierung, setzt ein tiefes Verständnis von C++ voraus.
  • Bruce Eckel: Thinking in C++, Volume 1: Introduction to Standard C++, Prentice Hall, 2000, ISBN 0139798099, auch als kostenloses online-Buch verfügbar
  • Bruce Eckel: Thinking in C++, Vol. 2: Practical Programming, Prentice Hall, 2003, ISBN 0130353132, auch als kostenloses online-Buch verfügbar, sehr gute Beispiele als Quelltext
Wikibooks: C++-Programmierung (englisch) – Lern- und Lehrmaterialien

Quellen

  1. Bjarne Stroustrup: A Brief Look at C++0x - 2. Januar 2006