Warum programmiert ihr in C?
-
Du schreibst als unregistrierter Troll an einem Samstag Morgen so einen langen Bullshit Text. Du bist zu bedauern.
-
Experte666 schrieb:
K.A. in wie weit meine Ausführungen jetzt für C++ - 'Experten' ohne Ahnung von der Arbeitsweise einer CPU obektiv oder überzeugend erscheinen mögen,
Das weiß ich auch nicht.
Aber für C++-Experten mit Ahnung von der Arbeitsweise der CPU erscheinen Deine Ausführungen nicht begründet.Zur Ansicht ein Monster-Objekt.
struct S1{ int a; int b; }; struct S2{ int c; int d; }; struct S3{ int e; int f; }; struct S4{ int g; int h; }; struct S12{ S1 s1; S2 s2; }; struct S34{ S3 s3; S4 s4; }; struct S1234{ S12 s13; S34 s34; }; S1234 s1234;
Glaubst Du wirklich, daß in s1234 die weit entfernten Elemente a-g völlig wild verteilt im Speicher liegen?
Falls nicht, baue mal ein praxisrelevantes Objekt, das grottenlangsam ist, und das in C viel schneller wäre. Das wird dann erstens in C viel unpraktischer sein, und zweitens kann ich Dir zeigen, wie man es in C++ mindestens genauso schnell bekommt.
-
Volkard hat es schön beschrieben. In C++ muss man meist rumtricksen um auf die Geschwindigkeit von C zu kommen.
Will man ohne C-Elemente wie Zeiger etc. mit C++ die Geschwindigkeit von C erreichen so ist dies fast nicht möglich. Ich kann es auch nicht oft genug betonen solange man kein C++ und OOP Experte ist wird das C++ Programm nie und nimmer an ein in C erstelltes Programm rankommen. Bei Anfängern ist mit Sicherheit auch mal ein Faktor 30 drinne in dem ein oder anderen Fall. Aber in der Regel biste du mit C++ nur halb so schnell unterwegs denn die wenigsten C++ Programmiere sind wirkliche Experten auf ihrem Gebiet. Es wird auch kaum noch neue Programmierer geben die C++ so gut lernen werden um damit an C ranzukommen.
In der Praxis sind so gut wie immer die C Programme schneller und natürlich auch schlanker, ob das nun theoretisch anders geht ist uninteressant. Ein JIT-Compiler könnte auch schneller sein als ein statisches Kompilat, ist es aber in der Praxis auch nicht.
Ich würde mal sagen 90% aller C++ler produzieren schöne Bloatware wo selbst die Javaraner sich das Lächeln nicht verkneifen können.
Schöne WE noch und viel beim Rumquälen mit C++ *kicher
-
F18oder17 schrieb:
Bei Anfängern ist mit Sicherheit auch mal ein Faktor 30 drinne in dem ein oder anderen Fall. Aber in der Regel biste du mit C++ nur halb so schnell unterwegs
Unfug. Zeig ein Beispiel.
-
volkard schrieb:
F18oder17 schrieb:
Bei Anfängern ist mit Sicherheit auch mal ein Faktor 30 drinne in dem ein oder anderen Fall. Aber in der Regel biste du mit C++ nur halb so schnell unterwegs
Unfug. Zeig ein Beispiel.
char c[2]={'a'}; c[1] = 'b';
string c("a"); c+="b";
um sowas zu produzieren muß man aber schon verdammt schlecht programmieren...
-
muß natürlich c[3] sein... sollte erstmal richtig wach werden...
-
Das C++-Äquivalent wäre eher
string s(2,'a'); s[1] = 'b';
Man bedenke aber, dass std::string das intern verwendete char-array dynamisch allokiert (ebenso wie vector, das Array liegt dann antürlich in C++ ebenso an einem Stück im Speicher!), um Vergrößerungen zuzulassen.
Wenn man einen string konstanter Länge mit den üblichen Vorteilen (boundcheck, etc) gegenüber "nackten" Arrays braucht, kann man auf (z.B.) std::tr1::array<char, size> zurückgreifen.
-
Schaffner schrieb:
Das C++-Äquivalent wäre eher
string s(2,'a'); s[1] = 'b';
Man bedenke aber, dass std::string das intern verwendete char-array dynamisch allokiert (ebenso wie vector, das Array liegt dann antürlich in C++ ebenso an einem Stück im Speicher!), um Vergrößerungen zuzulassen.
Wenn man einen string konstanter Länge mit den üblichen Vorteilen (boundcheck, etc) gegenüber "nackten" Arrays braucht, kann man auf (z.B.) std::tr1::array<char, size> zurückgreifen.übder die performance speicher dynamisch zu allokieren haben wir uns hier schon oft unterhalten, das will ich nicht wieder aufwärmen. wie ich schrieb würde ein guter c++ entwickler vermutlich etwas anderes verwenden. aber so wie es c'ler gibt die
char *c = calloc(3,sizeof(char)); c[0] = 'a'; c[1] = 'b';
verwenden (hier im forum schon öfter aufgetaucht...) nehmen c++'ler sicher auch (ist sicher auch schon im forum schon aufgetaucht...)
string c("a"); c+="b";
schlechter code lässt sich in jeder sprache schreiben
-
__-- schrieb:
char c[2]={'a'}; c[1] = 'b';
string c("a"); c+="b";
Naja, falls es so einen schlechten C++-Anfänger gibt, dann müssen wir ihm auch einen schlechen C-Anfänger entgegenhalten, gell?
char c[2]="a"; strcat(c,"b");
-
hehe schrieb:
muß natürlich c[3] sein... sollte erstmal richtig wach werden...
Manche (ich nicht) nehmen gerne C++, weil ihnen in C++ sowas nicht passiert.