Warum programmiert ihr in C?
-
volkard schrieb:
Eigentlich hatte ich eine Widerlegung meiner Aussage auf Seite 24 erwarte, wo ich schrieb, warum sowohl Anfänger- als auch Profi-Code in C++ die Tendenz hat, schneller als gleichwertiger Code in C zu sein.
also ich denke wir können uns darauf einigen, dass man in c mehr aufwand betreiben muß um auf die gleiche performance zu kommen.
z.B. hatten wir hier in z. 31 sowas:
for(z=0;z<i;z++){ if(repeat[z] == kommas){ return 0; } }
das da eine andere datenstruktur besser geeignet ist, sieht ein blinder mit nem krückstock. aber aus faulheit wurde hier keine rb-tree implementation beigelegt. und wenn wir jetzt äpfel mit birnen vergleichen können wir sagen c++ wär hier so viel schneller gewesen wenn es eine map oder sonstwas verwendet hätte.
-
DerWaerter schrieb:
Wer OOP-Fan ist wird nicht C++ nehmen
Warum nicht? Beweis!
DerWaerter schrieb:
Wer Webapps entwickelt wird nicht C++ nehmen
Lass ich gelten
DerWaerter schrieb:
Wer OS/Treiberentwicklung betreibt wird nicht C++ nehmen
ja
DerWaerter schrieb:
Wer für Microcontroller programmiert wird nicht C++ nehmen
ja
DerWaerter schrieb:
Wer für mobile Geräte programmiert wird nicht C++ nehmen
Vielleicht du
DerWaerter schrieb:
Wer für Banken/Versicherungen programmiert wird nicht C++ nehmen
Wer Administrative-Tools programmiert wird nicht C++ nehmenHast du teils recht. Da heutzutage sehr viel mit python entwickelt wird.
DerWaerter schrieb:
Also Jungs nehmt mal euer hochgelobtes C++ nicht so wichtig denn die Luft wird mit den Jahren da immer dünnen im C++-Himmel. Entwickelt euch mal weiter und vor allem arbeitet mal an dem Forum hier, das ist ja Steinzeit. Programmiert wird heute sehr viel mehr fürs Web als für was anderes, vielleicht solltet ihr euch die Zukunft auch mal anschauen dann würdet ihr es vielleicht auch nicht einfach als Webzeugs abtun.
Geschmacks Sache
DerWaerter schrieb:
Die Seite hier ist irgendwie wie ein Museumsbesuch.
Aus welcher Zeit bist du? Aus der Zukunft?
Also dies finde ich überhaupt nicht!
-
Die Seite hier ist irgendwie wie ein Museumsbesuch.
lieber ein schneller oldie als ein langsamer neuwagen
-
volkard schrieb:
Eigentlich hatte ich eine Widerlegung meiner Aussage auf Seite 24 erwarte, wo ich schrieb, warum sowohl Anfänger- als auch Profi-Code in C++ die Tendenz hat, schneller als gleichwertiger Code in C zu sein.
Scheint auch weniger C Programmierer zu geben die ihre Sprache vollständig begriffen haben, wenn du weist was ich meine. Code ist nicht gleich Code.
-
Ist euch eigentlich schon einmal aufgefallen, dass einige C-Schreiber gar keine Menschen sind? Ich habe mit C überwiegend deshalb zu tun, weil es eine halbwegs brauchbare Zielsprache für Compiler ist. Also komme ich regelmässig hier vorbei, um in meiner Zielsprache fit zu bleiben. Warum muss ich nun aber im C-Forum seitenlange Diskussionen über C++ ignorieren?
-
Könnt froh sein das es C gibt, wer weis was aus euren OS'es geworden wäre.
Dann waere es 'ne andere Sprache wie Lisp: http://linuxfinances.info/info/lisposes.html . Hier mal etwas experimentelles in C++: http://sourceforge.net/projects/ekp/ .
Ich finde einfach mann sollte sich mehr Respekt entgegen bringen, vorallem wenn man keine richtigen Argumente zum mehr Thema hat !
Verstehe ich nicht.
Doch es kommt wie geschrieben immer auf alles an
Dann muss man ueber alles reden. Leider kann man das nicht. Also muss man schweigen!
Warum muss ich nun aber im C-Forum seitenlange Diskussionen über C++ ignorieren?
Ich gehe ins Internet, warum muss ich den ganzen Kontent ignorieren, der mich nicht interessiert? Was ist denn das fuer eine bescheuerte Frage?
-
@volkart
Aber ich denke auch das überwiegend in C++ den schneller Code geschrieben wird!
Da bin ich mit dir völlig einig. Denn das gebastell unter C ist von manchen einfach eine Tragödie.
-
-lowbyte- schrieb:
@volkart
Aber ich denke auch das überwiegend in C++ den schneller Code geschrieben wird!
Da bin ich mit dir völlig einig. Denn das gebastell unter C ist von manchen einfach eine Tragödie.Das nennst Du "denken" ? Ich würde das ein Armutszeugnis nennen, geprägt von
intellektueller Schlichtheit ... Vielleicht nennst Du Dich auch noch "Programmierer",
ich hoffe nur, Deine Kenntnisse sind besser wie Dein Deutsch.
-
knivil schrieb:
Ich gehe ins Internet, warum muss ich den ganzen Kontent ignorieren, der mich nicht interessiert? Was ist denn das fuer eine bescheuerte Frage?
Ist nicht bescheuert. Die ewig gleichen, unfreundlichen, kaum konkret untermauerten C vs. C++-Flamewars sind hier schlicht offtopic. Es wäre mir sehr recht, wenn sie hier nicht mehr auftreten würden. Aber vielleicht liegt das an mir, und ich bin einfach nicht in der Lage, mit dem Geist der Zeit Schritt zu halten.
-
Wir hatten schon lange keinen so langen Thread C vs. C++. Fuer gewoehnlich sind sie im C++ Bereich zu finden. Und nicht nur das, allein die Qualitaet der Beitraege sucht seines Gleichen.
-
Ich finde einfach mann sollte sich mehr Respekt entgegen bringen, vorallem wenn man keine richtigen Argumente zum mehr Thema hat !
Nö, dann sollte man den Mund halten.
knivil schrieb:
Wir hatten schon lange keinen so langen Thread C vs. C++. Fuer gewoehnlich sind sie im C++ Bereich zu finden. Und nicht nur das, allein die Qualitaet der Beitraege sucht seines Gleichen.
Warum immer C gegen C++? Weil beide ein C im Namen haben? C ist ein sehr einfaches Werkzeug, das nur die allernötigsten Mittel anbietet um halbwegs strukturierte Programme zu schreiben. C++ ist eine umfangreiche Hochsprache, und tritt deshalb viel eher mit Java & Co in Konkurenz. Die Fälle, in denen sich ein verständiger Mensch ernsthaft zwischen C und C++ entscheiden muss, sind wohl sehr selten.
-
__-- schrieb:
volkard schrieb:
Eigentlich hatte ich eine Widerlegung meiner Aussage auf Seite 24 erwarte, wo ich schrieb, warum sowohl Anfänger- als auch Profi-Code in C++ die Tendenz hat, schneller als gleichwertiger Code in C zu sein.
also ich denke wir können uns darauf einigen, dass man in c mehr aufwand betreiben muß um auf die gleiche performance zu kommen.
Nein.
Ich meine da eine relativ neue Entwicklung, nämlich "zero cost" exception handling.
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gnat_ugn_unw/Exception-Handling-Control.htmlthere is no overhead for exception handlers if no exception is raised
Recht neue Technik das, daher noch nicht in die C-Gemeinde allgemein durchgedrungen, fürchte ich.
In beiden Sprachen muß man die Rückgabe von malloc, fopen und so immer mit if noch überprüfen. In C++ wirft man eine Exception, in C returnt man.
Aber in C müssen alle Funktionen auf allen Ebenen mit if ihre Kinder überprüfen. Das muß man in C++ nicht, an passender Stelle steht beliebig viele Ebenen häher ein passendes catch. Effekt: viele ifs gespart und ersetzt durch gar nichts.
Also wird C++-Code von einem Programmierer, der auch in C zuhause ist, und nicht auf std::string und cout angewiesen ist, vermutlich schneller werden als gleichwertiger C-Code.
-
Natürlich ist C++ langsamer und Aufwendiger als C.
C:
#include <stdio.h> int main(int argc, char *argv[]) { printf("C rulez!!!!!!!"); return 0; }
C++:
#include <iostream>
#include <string>
#include <ctime>class Hello
{
public:
Hello(const std::string&);
void print();private:
std::string str;
void doSomethingUseless();
};Hello::Hello(const std::string &str) : str(str)
{
}void Hello::print()
{
int i;
for(i = 0; i < str.length(); i++)
{
doSomethingUseless();
std::cout << str[i];
}
}void Hello::doSomethingUseless()
{
time_t now;
time(&now);while( time(NULL) <= (now + 10));
}
int main(int argc, char *argv[])
{
Hello *h;
h = new Hello("C++ sucks\nEcht lahm das ganze");
h->print();
delete h;
return 0;
}
-
knivil schrieb:
Wir hatten schon lange keinen so langen Thread C vs. C++. Fuer gewoehnlich sind sie im C++ Bereich zu finden. Und nicht nur das, allein die Qualitaet der Beitraege sucht seines Gleichen.
Sind die Mods alle im Urlaub? Oder stehen die einfach auf Threads mit einer Trolldichte jenseits von Gut und Böse?
Scheppertreiber schrieb:
ich hoffe nur, Deine Kenntnisse sind besser wie Dein Deutsch.
Welch Ironie.
-
this->that schrieb:
knivil schrieb:
Wir hatten schon lange keinen so langen Thread C vs. C++. Fuer gewoehnlich sind sie im C++ Bereich zu finden. Und nicht nur das, allein die Qualitaet der Beitraege sucht seines Gleichen.
Sind die Mods alle im Urlaub? Oder stehen die einfach auf Threads mit einer Trolldichte jenseits von Gut und Böse?
Scheppertreiber schrieb:
ich hoffe nur, Deine Kenntnisse sind besser wie Dein Deutsch.
Welch Ironie.
Der Gameboy wieder ...
-
Möchtest du nicht noch dein Password preisgeben?
-
[quote="volkard]
Aber in C müssen alle Funktionen auf allen Ebenen mit if ihre Kinder überprüfen.[/quote]
Und genau das ist der grundlegende Irrtum. Muss man nämlich nicht. Und das hat auch nichts mit unsauberem Programmierstil zu tun. Wenn z.B. Josef so eine geniale Funktion erfindet, wie diese hier:void TranslateMessage(char** Buffer){ /* ... */
und dabei Hans die (mündliche) Zusage gibt, dass TranslateMessage garantiert funktioniert, wenn Buffer nicht NULL und mindestens BUFSIZE groß ist, dann braucht die Funktion von Josef nicht noch extra
if(Buffer) /* ... */
abfragen, wenn ihm Hans garantiert, niemals NULL reinzustecken.
Ein uneingeweihter Dritter (DAU) kann dann zwar immer noch NULL reinstecken.
Aber was, wenn gar nicht vorgesehen ist, dass je jemand anderer als der zuverlässige Hans die Funktion benutzen wird? -> Ergo: Überflüssige Doppelt- und Dreifachprüfung eingespart Kein Compiler der Welt könnte eine derartig überflüssige Doppele Überprüfung wegoptimieren, weil er von Josef's und Hans mündlicher Vereinbarung nichts weiß.
Aber was meinst Du, müsste wohl eine (hypothetische) DAU-sichere std::string::TranslateMessage(char** Buffer) Funktion tun?
Es bliebe ihr nicht erspart, dem ahnungslosen Aufrufer zuzutrauen, dass er eine NULL reinsteckt, und müsste dementsprechend die if() Abfrage, auf die das C-Team Josef + Hans verzichten konnte, implementieren. Oder man musste einen Exception-Handler für diesen Fall installieren (==Parallel-Thread) mit gigantischem Kontext-Wechsel Overhead (der momentane Zustand der Register muss zwischengespeichert werden, der Exception-Handler wird in die CPU geladen, nach Beendigung seiner Arbeit kann man nur noch abort() oder exit() aufrufen, da zu dem Zeitpunkt, als die Exception auftrat, der Stack in einem gänzlich zufälligen Zustand war, und es wird wohl auch die Freigabe von System-Handles oft genug zum Problem. Man kann gar nicht mehr genau eingrenzen, woher der Fehler überhaupt kam, und ein Ent-Buggen der Anwendung wird dementsprechend erschwert (idR unmöglich). Ganz zu schweigen von garantierten Deadlocks in Multi-Thread Anwendungen, die man sich mit Exceptions einbrockt.
Also, derartige (mündliche) Optimierungsmöglichkeiten wie in C hat man mit C++ gar nicht. Dort werden einem Exceptions & Co. jedenfalls von der Runtime aufgezwungen, ob man will oder nicht.
mfg
-
C++ ist eine übermüllte scheisse ... bei dem man mehr Abstraktion und Sicherheit gewinnen wollte und doch nichts erreichte hat, was der C Programmierer schon gar nicht braucht! Ihr C++' er kommt immer mit Argumenten die einfach nicht überzeugen!
Und das letzte Argument von Volkard ist gar nicht nennenswert.
-
Ausnahmekoenner schrieb:
... Aber was meinst Du, müsste wohl eine (hypothetische) DAU-sichere std::string::TranslateMessage(char** Buffer) Funktion tun? ..
Meinst du das ernst?
Du vergleichst also die sichere C++ Variante mit der unsicheren C Variante?
Oder gehst du davon aus, dass C++'ler so degeneriert sind, dass sie nicht miteinander kommunizieren können und deshalb die erste Variante nicht in Frage kommt?
-
Sie ist nur so unsicher wie der Programmierer der schreibt!