Sprache Cpp
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
- C++ was designed to provide Simula's facilities for program organization together with C's efficiency for systems programming.
- BjarneStroustrup in "The Design and Evolution of C++"
Einführung:
C++ ist eine Programmiersprache, die mehrere Ansätze der Softwareentwicklung unterstützt. Wer auf der Suche nach einer Programmiersprache ist, die einen bestimmten Ansatz erzwingt, sollte nicht C++ verwenden. C++ hat starke syntaktische Ähnlichkeit zu C [SpracheCee]. Das erleichtert es C-Programmierern, sich in C++-Programmen zurechtzufinden. Andererseits ist dadurch gerade für C-Programmierer keine Motivation vorhanden, sich auf die Möglichkeiten der Sprache C++ wirklich einzulassen. Die wichtigsten Neuerungen gegenüber C sind die Erweiterungen
zur objektorientierten [ObjektOrientierteProgrammierung] und zur generischen Programmierung.
C++ ist aus mehreren Gründen keine geeignete Einstiegssprache.
- Die Sprache lässt sehr vieles offen.
- Sie basiert wie C auf der Annahme, dass der Quelltext so gemeint war wie er dem Compiler vorgesetzt wird.
Beziehung zu C:
Die Sprache C++ ist keine Obermenge der Sprache C. Es gibt Sätze der Sprache C, die nicht Sätze der Sprache C++ sind. Die Sprache C ohne den Durchschnitt von C und C++ ist aber klein.
Der Rat, C++ als ein besseres C zu verwenden, ignoriert die Entwicklung, die C seit der Mitte der 80er Jahre genommen hat.
Viele Ideen sind aus C++ in die Sprache C zurückgeflossen. Für eine Softwareentwicklung im C Stil bietet C++ wenig Vor- oder Nachteile gegenüber C.
Stärken:
C++
- ist weit verbreitet. Das macht den Markt für Werkzeuge und Dienstleistungen im Zusamenhang mit C++ interessant.
- legt den Entwickler nicht auf eine bestimmte Vorgehensweise fest. C++ unterstützt neben dem objektorientierten Ansatz auch die generische Programmierung und einen konservativen Top-Down-Entwurf. (siehe CppIstZuKompliziert )
- bestraft niemanden für Spracheigenschaften und Möglichkeiten, die nicht genutzt werden. Die Entscheidung zwischen LaufzeitEffizienzUndProgrammierEffizienz bleibt offen.
- hat keine durch die Sprachdefinition vorgegebene Wurzel der Klassenhierarchie
- ...
Schwächen:
C++
- ist eine Erweiterung von C [SpracheCee] um syntaktische Elemente zur Unterstützung von Polymorphie, Vererbung und für GenerischeProgrammierung. Daraus ergibt sich keine elegante Syntax.
- hat eine Sprachdefinition, die Hersteller von Implementationen vor einige Probleme stellt, so dass Implementationen der Sprachdefinition noch auf sich warten lassen.
- hat keine durch die Sprachdefinition vorgegebene Wurzel der Klassenhierarchie
- legt den Entwickler nicht auf eine bestimmte Vorgehensweise fest. (siehe CppIstZuKompliziert)
- Integer-Überlauf führt, wie auch in C, zu keiner Exception sondern stillschweigend zu falschen Ergebnissen. Dies kann wiederum zu sicherheitskritischen Puffer-Überläufen führen. Für C++-Programmierer bietet MSDN eine SafeInt-Klasse an, die Überlauf und Division durch Null auf C++-Exceptions lenkt.
- ...
Typische Einsatzgebiete:
C++
- ist eine Allzwecksprache
- ApplicationFrameWorks? (wie die Microsoft Foundation Classes)
- ...
Diskussionen:
Empirie
Für welche Zielplattformen und Bereiche wird in C++ entwickelt?
| Standard | Datenbank | Netzwerk | (G)UI | Plattform |
1 | 0 | 1 | 1 | Windows 16 |
2 | 2 | 2 | 4 | Windows 32 |
4 | 1 | 3 | 1 | Linux |
1 | 0 | 1 | 0 | Solaris |
2 | 1 | 1 | 1 | HPUX |
|
|
Was bedeuten die Zahlen in dieser Tabelle? -- MatthiasBohlen
- Den Versuch, durch eine Auszählung (in Form einer WikiZählAbstimmung mit dem Charakter einer Umfrage) mit Stichprobenelementen (Wiki Teilnehmer), die sich selbst auswählen, darzustellen, wozu C++ eingesetzt wird (Mit bisher 3 Stichprobenelementen bzw. Umfrageteilnehmern). -- KurtWatzka
- Standard: Programme, die keine system- oder herstellerspezifischen Erweiterungen nutzen Ist die W32 API eine 'herstellerspezifische Erweiterung?
- Datenbank: Programme, die darüber hinaus auch ein Datenbank-API nutzen
- Netzwerk: Programme, die darüber hinaus ein Netzwerk-API und evtl. Netzwerkprotokolle nutzen
- (G)UI: von der Dialogprogrammierung mit curses bis zu Qt, GTK und plattformabhängigen Application Frameworks
Meinungen, Irrtümer, Vorurteile und Spitzen
- Um C++ lernen zu können muss man C können
- Um C++ lernen zu können sollte man besser nicht C können
- Das Ziel der Sprachdefinition von C++ war, dass jedes Leitungsrauschen ein gültiges C++-Programm ergibt
- Ein Wettbewerb in undurchsichtiger C++-Programmierung ist wie ein Wettbewerb im Fischestechen in einer Tonne
- C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, it blows away your whole leg! -- BjarneStroustrup
- Yes, I did say something along the lines of "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." What people tend to miss, is that what I said there about C++ is to a varying extent true for all powerful languages. -- BjarneStroustrup
- C++ vereint die Nachteile von C und dem Hochsprachenkonzept: Von C erbt es die Syntax und die Unsicherheit, vom Hochsprachenkonzept verwirklicht es die Komplexität und die Tendenz zur Ineffizienz -- HenningThielemann
- C++ ist ein objektorientierter Makroassembler. -- HermannWacker
- "What's Wrong With C++?", by Bartosz Milewski
- C++ ist die Sprache, die Objektorientierung am radikalsten unterstützt. ExterneResourcen können in C++ von Objekten verwaltet werden; alle anderen OO-Sprachen erzwingen dafür ProzeduraleProgrammierung. -- FreddyTheCat
- ...
STL -- die Standard Template Library | |
- Die STL benutzt Templates und Iteratoren, aber das macht C++-Code, der Templates und Iteratoren benutzt, noch nicht zu einer STL-Implementation. Die Idee hinter der STL ist, eine Darstellung von Standard-Algorithmen und Standard-Datenstrukturen zu finden, die diese entkoppelt.
- Datenstrukturen sollen ohne Änderungen am Code der Implementation eines Algorithmus austauschbar werden. Dies ist zumindest teilweise gelungen. Als Beispiel für eine nicht gelungene Entkopppelung mag std::list::sort dienen.
Siehe auch CppResourcen ObjektOrientierteProgrammierung
KategorieProgrammierSprache KategorieAbstimmung KategorieCpp
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 19. Dezember 2006 19:26 (diff))