C++, lohnt es sich
-
Shade Of Mine schrieb:
Dies ist einer der größten Kritikpunkte an C++.
Du meintes sicher Vorteile, oder?
-
Jester schrieb:
Shade Of Mine schrieb:
Dies ist einer der größten Kritikpunkte an C++.
Du meintes sicher Vorteile, oder?
Nein. Es war der Grund warum C++ akzeptiert wurde. Aber der Ballast ist tw. schlimm - er verhindert, dass sich C++ viel weiter entwickeln kann.
Und C hat den Schritt weg von C++ ja mit C99 gemacht. Man will C nicht mehr als 'Untermenge' von C++ sehen. Das kam natürlich viel zu spät - wie alles was standardisiert wird
-
gh0st124 schrieb:
du kannst sogar ohne Klassen C++ programmieren (machst du vielleicht sogar), jaja, nur ist das
1. verdammt dämlich
2. verdammt lahm (C++ Compiler im Vrgl. zu C Compiler)Wie kommst du darauf? Warum sollte ein C++ Compiler nicht in der Lage sein gleichwertigen Maschinencode bei gleichem Input zu liefern? Mir scheint du hast da etwas falsch verstanden.
-
Was ist denn an der Kompatibilität so schlimm? Worin behindert die Kompatibilität zu C denn C++, kannst Du da vielleicht mal ein Beispiel nennen?
Inwiefern will sich C denn von C++ entfernen, und warum wollen die beiden Standardisierungskommittees dann zusammen arbeiten um maximale Kompatibilität zu erzielen?
-
Jester schrieb:
Was ist denn an der Kompatibilität so schlimm?
Der C Ballast.
Die Kompatibilitaet ist gut, der Ballast stört.Inwiefern will sich C denn von C++ entfernen, und warum wollen die beiden Standardisierungskommittees dann zusammen arbeiten um maximale Kompatibilität zu erzielen?
C kann VLAs, C++ wird das nie können.
C hat jetzt ne Menge bei structs Initialisierungen verändert (um Ctors zu simulieren)
C hat restrict qualifier für Zeiger (was zeigt, dass C mehr auf Mikroprozessoren gehen will)Der C99 Standard hat klar gemacht, dass man nicht mehr eine Untermenge von C++ sein will. Denn C++0x wird keine meiner 3 genannten Punkte übernehmen - das bedeutet: keine Source Code kompatibilitaet mehr.
-
MaSTaH schrieb:
gh0st124 schrieb:
du kannst sogar ohne Klassen C++ programmieren (machst du vielleicht sogar), jaja, nur ist das
1. verdammt dämlich
2. verdammt lahm (C++ Compiler im Vrgl. zu C Compiler)Wie kommst du darauf? Warum sollte ein C++ Compiler nicht in der Lage sein gleichwertigen Maschinencode bei gleichem Input zu liefern? Mir scheint du hast da etwas falsch verstanden.
C++ ist halt langsamer. Ist doch logisch, oder? Jetzt hat man es schon so oft gesagt, dann muss völlig gleichwertiger Code unter C++ einfach langsamer sein.
-
du bist ja wohl der Obertroll @ Optimizer
don't feed it...
-
hi,
Shade Of Mine schrieb:
C kann VLAs, C++ wird das nie können.
was sind denn VLAs und wozu brauch man die? nur so aus interesse, ich fang grad mit programmierung an
grüsse busta
-
Hallo,
VLA steht für Variable Length Array.
Man kann in C99 Arrays mit erst zur Laufzeit bekannter Größe auf dem Stack anlegen. In C++ geht das nicht, man muß dann dazu new verwenden (oder besser auf einen der Container ausweichen).MfG Jester
-
..... schrieb:
du bist ja wohl der Obertroll @ Optimizer
don't feed it...
Ich hab wenigstens einen Namen.
-
Optimizer schrieb:
MaSTaH schrieb:
gh0st124 schrieb:
du kannst sogar ohne Klassen C++ programmieren (machst du vielleicht sogar), jaja, nur ist das
1. verdammt dämlich
2. verdammt lahm (C++ Compiler im Vrgl. zu C Compiler)Wie kommst du darauf? Warum sollte ein C++ Compiler nicht in der Lage sein gleichwertigen Maschinencode bei gleichem Input zu liefern? Mir scheint du hast da etwas falsch verstanden.
C++ ist halt langsamer. Ist doch logisch, oder? Jetzt hat man es schon so oft gesagt, dann muss völlig gleichwertiger Code unter C++ einfach langsamer sein.
wie kann ein völlig gleichwertiger Code denn langsamer sein? Dann wäre er ja wohl nicht völlig gleichwertig!
[EDIT] Im übrigen ist wohl ein sehr großer Teil der Geschwindigkeit vom Compiler abhängig, ich glaub das nennt man Optimierung
-
struct myStruct { int x; int y; };
void set(myStruct *param, int x_, int y_) { x = x_; y = y_; }
void myStruct::set(int x_, int y_) { x = x_; y = y_; }
Das z.B. ist völlig gleichwertiger Code. Vermutlich erstellt der C++ Compiler daraus sogar den selben Code wie der C-Compiler.
Oder ist vielleicht das böse C++ doch langsamer??
-
Ich sehe nix gleichwertiges...
Dein erstes Beispiel bekommt nen Pointer aufn Struct von Dir, tut da aber nix mit, und setzt dann zwei globale Variablen auf die Werte die in den Parametern übergeben wurden.
Das zweite dagegen ist so wie Deine struct definiert ist nicht kompilierbar, weil innerhalb der struct der Prototyp fehlt. Denke ich mir den aber dazu, bewirkt das was ganz anderes als das erste Beispiel... Es verändert nämlich keine Globalen Vars sondern die der jeweiligen Instanz des structs.PS: Da int x und y aber eh public sind, würde ich sie direkt manipulieren, da ich dann den Funktionsaufruf spare
-
Wo siehst du hier globale Variablen?
-
void set(myStruct *param, int x_, int y_) { x = x_; y = y_; }
Keine globalen Variablen? Dann haben wir hier nen Syntax-Error :p
Was ich aber nicht so ganz verstehe, welchen Punkt versuchst Du hier zu machen. Was willst Du damit aussagen?
-
Das C++ nicht langsamer ist wie C. Dieses Gerücht hält sich ja hartnäckigst.
-
In diesem Thread ist außer Dir aber keiner drauf angesprungen. Nach meinem Gefühl war es jedem klar.
-
hi,
also in c könnte ich praktisch einfach schreiben
int x;
cin >> x;
int vla[x];
oder wie? und was is da der vorteil zu new?thx für die erklärung
busta
-
oder wie?
nein, cin etc. ist ja C++
*klugscheiss* (btw. size_t nicht int für größen!)
und was is da der vorteil zu new?
new arbeitet auf dem FreeStore und die VLAs auf dem Stack. Außerdem verhalten sich VLAs wie Arrays und nicht wie Pointer (ja, da gibt es einen Unterschied)
-
ok, danke
gibs da performance unterschiede?
grüsse busta