Der Name "C++"
-
Yo, "dummerweise" ist C++ nicht 100% zu C kompatibel. Das sollte einem schon zu denken geben.
-
Ich hab mal gelesen, dass C++ irgentwas in der Sprache "Neusprech" aus 1984 bedeuten soll. Ist da was dran? Kenne das Buch nicht.
-
Dann schau dir den Film an ^^
Also in 1984 wurde die Sprache immer weiter vereinfacht. So nutzte man keine Steigerungen mehr, sondern nur noch Additionen.
gut, plus-gut, plusplusgut.
-
Hallo
will auch keinen Streit anfangen, aber wieso sollte C++ *keine* Erweiterung von
C sein ?
Ein Vorläufer von C++ hieß schließlich "C with Classes". Neben C enthält C++
noch Elemente von
BCPL (Kommentarzeilen)
Algol68 (Überladen)
Simula67 (Klassen, Objekte)C++ anthält daher (wie fast alle anderen Programmiersprachen auch, außer i.W.
Lisp,Forth,Cobol,APL,Fortran,Algol) Elemente älterer Sprachen, darunter natürlich
C.Abgesehen davon, was ist schlimm daran, daß C++ eine Erweiterung von C ist ?
C ist doch auch 'was Schönes, schließlich ist C seit Jahrzehnten *die*
Sprache für hardwarenahe oder resourcenkritische portable Programmierung, und
C++ ist C mit einem darauf aufgesetzten Objektmodell.Grüße
-
Moin,
ist es nicht vollkommen egal, ob es nun eine Erweiterung, ein Ableger oder eine logisch Konsequenz ist?
Aber nun stellt sich jeder hin und versucht den anderen von seiner Meinung zu überzeugen. Programmiert lieber. In diesem Punkt gibt es eh keinen Konsens. In dem einen Buch steht dies, im anderen das. Hat mal jemand Bjarne gefragt?
Im Stroustrup steht:
1. C++ ist eine Obermenge von C
2. C++ hat C viel zu verdanken
Da kann jetzt jeder hin und her interpretieren, wie er Lust hat.
MfG
-
1. C++ ist eine Obermenge von C
nein. sonst würde man jedes C Programm auf einem C++ compiler compilieren können.
-
Wie meine Beitragsanzahl zumindest erahnen lässt, bin ich recht neu in der Materie, daher kann ich selbst wenig Qualifiziertes von mir geben.
Ich habe das aus dem Stroustrup zitiert.* Ich gehe davon aus, dass der Herr bescheid wissen sollte.
Zu deiner Aussage möchte ich anmerken, dass 'C++ != C++-Compiler'. Aber warscheinlich meinst du einen optimalen C++-Compiler, der sich 100% nach dem Sprachstandard richtet. (Gibt es das?)...
***** Ok, gerade noch einmal nachgeschlagen: "Bis auf kleine Details ist C++ eine Obermenge der Programmiersprache C."
Hatte ich ungenau zitiert.Aber dennoch finde ich, dass eine Definition, wie genau C++ nun mit C zusammenhängt (oder auch nicht), schon allein an der Interpretationsfreude der Sprache scheitert.
MfG
-
Wenn C++ nur ein erweitertes C ist, dann kann man mir vielleicht auch erklären, warum ich ein C-Programm (welches alle C-Features nutzt) nicht auf einem C++-Compiler kompilieren kann? Bzw. warum enthält der C++ ISO-Standard nicht alle Features die C drin hat?
Natürlich ist C++ aus C entsprungen, aber Java und C# sind auch irgendwie aus C++ entsprungen. Ein Bsp.:
int i = 0; hallo(i);Diese zwei Zeilen funktionieren sowohl unter C, unter C++, Java und C#. Deshalb sind diese Sprachen trotzdem völlig unterschiedlich und nicht ein C.
-
Man,man,man.
C++ ist ganz einfach nur C , bloß um einige Sprachelemente und ein neues Programmierkonzept erweitert.
Punkt.
Und wer was anderes behauptet, dass z.B. C++ nix mit C zu tun hat, der :
- hat keine Ahnung
- ist ein fanatischer Microsoftanhänger
- wurde als Kin paar mal fallen gelassen
Ich meine:
Was soll der scheiss mit "C++ hat absolut nix mit C zu tun"?Wie ist denn C++ entstanden? Na?
(ps: Nein, ich habe diesen Thread nicht ganz gelesen, da es mir zu blöd ist, immer den gleichen Mist zu lesen)
-
@ normal:
Endlich mal jemand der bescheid weiß.
C++ ist eine Obermenge von C, so wie Stroustrup so schön sagt. Das bedeutet dass man jedes C Programm auf einem C++-Compiler übersätzen kann. Das bedeutet aber auch, dass viele meinen sie würden in C++ Programmieren, dabei verwenden sie nur die Mittel die in C zur Verfügung stehen.Fakt ist auf jedem Fall das C++ die strukturierte (prozedurale und modulare, etc.) Sprache C mit der Objektorientierung und einer sehr gut designten Standardbibliothek erweitert hat. C++ unterstützt (soweit ich weiß) alle relevanten Konzepte der OOP.
-
lucky_tux schrieb:
Das bedeutet dass man jedes C Programm auf einem C++-Compiler übersätzen kann.
Und das geht ebend NICHT!
-
Artchi schrieb:
lucky_tux schrieb:
Das bedeutet dass man jedes C Programm auf einem C++-Compiler übersätzen kann.
Und das geht ebend NICHT!
Dann haste nen beshcissenen compiler.
Lass mich raten: Du nutzt ein Microsoft compiler oder ein Borland compiler?
Borland ist eh nur der Schwanz von Microsoft.
-
Hallo,
So wie ebend auch nicht geht :p
@normal: man sollte sich aber den thread ganz durchlesen. Es wurde ausdrücklich von otze gesagt, dass man nicht jedes C-Programm auf C++-Compilern "übersätzen" kann.
MFG winexec*
-
nach der entwicklung von C++ kam ein neuer C sprachstandard mit neuen features raus, die in C++ nicht mehr übernommen wurden. Welcher C++ Compiler der standardkonform ist, sollte diese features also unterstützen.
-
@ winexec:
Nur weil jemand behauptet das es nicht möglich wäre C Quelltext auf einem C++-Compiler zu kompilieren, bedeutet das noch längst nicht das die Aussage korrekt ist.
Würded ihr mir auch glauben, dass C++ ein neumodischer Brotbackautomat, der sich bei einem bekannten schwedischen Möbelhaus erkaufen lässt, ist?
Habt ihr "The C++ Programming Language" oder die dt. Übersetzung "Die C++ Programmiersprache" von Bjarne Stroustrup gelesen. Hier wird ausdrücklich gesagt das C++ abwärtskonform du C ist - C++ ist eine Erweiterung oder eine Obermenge von C. Somit lässst sich jeder C-Quelltext unter einem C++-Compiler ubersätzen. Bedingung dafür ist aber, dass der Quelltext und der Compiler sich an die Standards halten. Da sich der M*cr*soft Compiler aber nicht an die Standards hällt ist es nicht verwunderbar das die Abwärtskommpatibilität nicht vorhanden ist.
Anderes Beispiel: Was hat M*cr*soft aus Java gemacht? Java ist eine plattformunabhängige Programmiersprache. Aber die Version von Microsoft wurde so modifiziert, dass es nicht möglich ist Java-Programme von Windows zu portieren.
-
Nein, ich habe einen ISO-C++ konformen Compiler, und das ist wichtig. Warum soll ein ISO-C++ Compiler einen ISO-C-Standard unterstützen, wenn er ein ISO-C++ Compiler ist??? Wenn ich C kompilieren will, nehme ich einen C-Compiler. Wenn ich Java compilieren will, nehme ich einen Java-Compiler. Wenn ich C#...
Merkt ihr hier was?
-
lucky_tux: Du hast einfach keine Ahnung.
-
lucky_tux schrieb:
Habt ihr "The C++ Programming Language" oder die dt. Übersetzung "Die C++ Programmiersprache" von Bjarne Stroustrup gelesen. Hier wird ausdrücklich gesagt das C++ abwärtskonform du C ist - C++ ist eine Erweiterung oder eine Obermenge von C. Somit lässst sich jeder C-Quelltext unter einem C++-Compiler ubersätzen. Bedingung dafür ist aber, dass der Quelltext und der Compiler sich an die Standards halten. Da sich der M*cr*soft Compiler aber nicht an die Standards hällt ist es nicht verwunderbar das die Abwärtskommpatibilität nicht vorhanden ist.
Von wann ist dieses Buch? Aha!
Der C- und C++-Standard werden von zwei verschiedenen ISO-Komitees verabschiedet. Es gibt heute in C Features, die wir in C++ seit 7 Jahren vergeblich suchen. Man sollte sich über den aktuellen Stand der Technik informieren. Man sagt nicht umsonst, das die Computerwelt schnelllebig ist. Dazu zählt nicht nur die CPU-Technik, sondern auch die von Software und Sprach-Normierungen.
Und das sich der MS-Compiler nicht an den ISO-Standard hält, stimmt auch nicht. Informier dich mal, das Herb Sutter (MS-Mitarbeiter!) den Vorsitz im ISO-C++ Komitee inne hat! Und das Herb Sutter einiges tut um C++ und sein Baby C++/CLI zu pushen. Selbst TR1 wird demnächst vom MSVC unterstützt werden. Und wenn C++/CLI mit in den ISO-C++-Standard einfliessen wird (was das Ziel von MS ist!), wird der Compiler weiter die ISO-C++-Norm unterstützen müssen. Also selbst die nächsten Jahre wird MS den ISO-C++ unterstützen, da sie ISO-C++ pushen.
-
@lucky_tux:
Dann erklär mir mal wieso den folgenden Code kein C++-Compiler, den ich hier habe, übersetzt, aber jeder C-Compiler?
#include <stdio.h> static do_it( ); int main(void) { int x = do_it(12); } static do_it(x) int x; { return x * 2; }
-
@lucky_tux
Es ist zwar richtig, dass C++ seine Wurzeln in C hat. Damit irrst du allerdings:Somit lässst sich jeder C-Quelltext unter einem C++-Compiler ubersätzen.
Zwischen C und C++ besteht keine echte Teilmengenbeziehung. Weder ist C eine echte Teilmenge von C++, noch andersherum.
Zwar übernimmt der C++ Standard einige Teile des C-Standards (C89), er führt aber auch Änderungen hinzu, die legale C-Programme in C++ illegal machen. Beispiel dafür ist das strengere Typsystem von C++.
Am Beispiel:#include <stdlib.h> int main() { int* i = malloc(sizeof(int)); }Das ist ein völlig legales C-Programm, aber kein C++.
In C++ müsste es so aussehen:#include <stdlib.h> int main() { int* i = static_cast<int*>(malloc(sizeof(int))); }Der Grund: C89 definiert eine implizite Typkonvertierung von void* zu jedem anderen Datenzeiger. In C++ hingegen ist diese Konvertierung nicht implizit. Hier ist nur die umgekehrte Richtung implizit. Wer also von void* nach int* will muss in C++ immer casten.
Das ist nur ein Beispiel. Es gibt tausende andere. Umgangssprachlich kann man C++ als Obermenge von C bezeichnen, korrekt ist es aber nicht. Im Gegensatz zu Java und C++ oder C# und C++ teilen C und C++ aber nicht nur syntaktische Gemeinsamkeiten.