Warum programmiert ihr in C?
-
C++ 30mal langsamer als C bekommt jeder hin der sich nicht sehr gut mit C++ und OOP auskennt. Da kann man in C++ so viel falsch machen und hat schnell ein Programm welches von der Performance an eine Scriptsprache erinnert. Viele Anfänger denken nur weil sie in C++ programmieren ist ihr Programm automatisch schneller als Beispielsweise ein Java-Programm. Es wird aber nur wirklich schneller sein wenn man sich extrem gut in C++ und OOP auskennt und das tuhen die wenigsten.
-
Du sagst also C++ ist eine schlechte Sprache weil so viele Leute nicht damit umgehen können!?
-
Cppungleichimmerschnell schrieb:
C++ 30mal langsamer als C bekommt jeder hin der sich nicht sehr gut mit C++ und OOP auskennt. Da kann man in C++ so viel falsch machen und hat schnell ein Programm welches von der Performance an eine Scriptsprache erinnert. Viele Anfänger denken nur weil sie in C++ programmieren ist ihr Programm automatisch schneller als Beispielsweise ein Java-Programm. Es wird aber nur wirklich schneller sein wenn man sich extrem gut in C++ und OOP auskennt und das tuhen die wenigsten.
Falsch. Es ist genau anders herum. In C++ musst du VERDAMMT viel falsch machen, damit das Programm mal langsam wird. Ganz anders als in Java.
Da soll mir mal einer der C "Experten" ein Beispiel zeigen, in dem C++ Code 30mal langsamer ist als vergleichbarer C Code. Wir wissen alle, dass wir so ein Beispiel nie sehen werden.
-
OOPnotfornoobs schrieb:
Bei OOP kann man sehr schnell viel falsch machen. Es ist sehr schwierig gute OO-Programmierer zu finden, da OOP wirklich nichts für Anfänger ist.
Das ist keine Eigenschaft von OOP. Jeder, der nicht in der Lage ist, seine Datenstrukturen vernünftig zu modelieren, wird mit jeder Sprache scheitern. Andersrum gilt, jeder, der seine Daten vernünftig modelieren kann, wird mit praktisch jeder Sprache erfolgreich sein.
OOPnotfornoobs schrieb:
Zumal ist C++ nicht wirklich eine Objektorientierte Programmiersprache jeder der OOP ernsthaft betreibt wird einen weiten Bogen um C++ machen, wenn er denn das kann. Ich schätze mal man braucht gute 2 Jahre um C++ und OOP einigermaßen zu erlernen, das ist vielen einfach zu aufwändig da es noch weit mehr zu lernen gibt als ein Paradigma und eine Programmiersprache.
Das ist aber meiner Meinung nach der große Vorteil von C++ im Gegensatz zu anderen reinen OOP-Sprachen. Ich kann die Vorteile nutzen, muß aber nicht.
mfg Martin
-
KennerDerUnfähigen schrieb:
Da soll mir mal einer der C "Experten" ein Beispiel zeigen, in dem C++ Code 30mal langsamer ist als vergleichbarer C Code. Wir wissen alle, dass wir so ein Beispiel nie sehen werden.
Naja, wenn man *kein* C++-Buch oder Tutorial gelesen hat, sondern sich den Code aus Beispielen zusammenschustert, dann könnte man auf die Idee verfallen, Einzelbuchstaben statt un char in std::string zu speichern. Zusammen mit einer netten Schleife, die was triviales macht, zum Beispiel eine ASCII-Tabelle in eine Datei schreibt... Nee, nicht trivial genug. Ausgabe dauert viel zu lange.
Zum Beispiel zählt, wie oft ein bestimmter Buchstabe vorkommt, nee, wozu da die Zwischenvariable.
Aber wenn ich mir einen ganzen Tag Zeit nehme, kann ich wohl ein hübsches Beispiel konstruieren, das auf den ersten Blick glaubwürdig aussieht, als würde ein Nube sowas schreiben, und zugleich Faktor 30 packt.
Vielleicht was mit std::vector als By-Value-Übergabe in rekursiver Permutationen-Funktion? Zu un-noobig. Wer sowas bauen kann, macht den Fehler sicher nicht.
Das Problem ist faszinierend.
-
Selbst Faktor 2 kann in der Praxis viel ausmachen, bei längeren
Programmlaufzeiten bzw größeren Datenmengen zB den Unterschied
zwischen 1 und 2 h "System nicht verfügbar".30 halte ich auch für übertrieben ...
-
wenn man in c++ c programmiert sollte es auch gleich schnell/langsam sein, oder?
-
__-- schrieb:
wenn man in c++ c programmiert sollte es auch gleich schnell/langsam sein, oder?
Ja, man kann in C++ stets nach C runter und sicher null Mehrkosten haben.
Vorausgesetzt man hat einen Compiler mit einem vernünftigen Exception-Modell, das einem keine Mehrkosten auferlegt für Code, der mit Exceptions gar nichts zu tun hat. Was ich zum Beispiel (noch?) nicht vestehen kann, ist, daß jemand als erste Zeilen in der main das argv[] erstmal in einen vector<string> kopiert.Außerdem hat C++ "zero abstraction overhead". Nur, weil man aus zusammengehörenden Funktionen um eine Struktur eine Klasse bastelt, muß man noch keinen Takt mehr bezahlen.
Man kann darüberhinaus in Teilen Geschwindigkeiten erreichen, die mit C nur sehr umständlich zu erreichen wären, sort, unordered_map, blitz++. Dadurch basteln Anfänger in C++ natürlich schnelleren Code als vergleichbare Anfänger in C. sort (z.B. Intro-Sort) und map(z.B. AVL-Baum) sind ja so nah!
Und Compilerbauer können Exceptions so schlau implemetieren, daß sie keine Laufzeitkosten verursachen, solange sie nicht fliegen. Für Exceptions, die sehr selten fliegen (wie es sein soll), oder wo es wegen Programmabbruch oder Benutzerinterkation völlig irrelecant ist, wie lange es im Falle einer Esxception dauert, ist man also schneller als in gleich fehlerrobustem C-Code.
Das ist ein knallharter Geschwindigkeitsvorteil für C++.Nee, das kann nicht sein. Dann wäre ja das Fazit, daß sowohl Anfänger als auch Profis in C++ schnelleren Code basteln. Und daß nur, wer nicht bereit ist, C++ zu lernen, in C schnelleren Code bastelt. Gell, das kann nicht wahr sein, weil es nicht wahr sein darf.
-
Och C++ bekommste als Anfänger ganz schnell langsam. Mit OOP etwas unglücklich designt dann noch Kopiekonstruktoren schlecht implementiert und schon haste einen Overhead vom feinsten. Das ganze dann noch unter Linux wo die C++ Runtime eh schon um einiges langsamer sind als jene von C und evola haste Schneckencode.
Wir sind zwar hier in einem C++ Forum und man sollte die letzten C++ler die es noch gibt auch nicht verachten aber ein OOP-Fan sein und C++ nutzen ist schon ein wenig pervers. Noch eine allgemeine Kritik hätte ich. Mit eurem Webzeugs wird heute sicherlich viel mehr gemacht als mit dem komischen C++ also benennt das um oder ihr gebt damit zu noch in den 90igern geblieben zu sein.
-
Hugo8723 schrieb:
Och C++ bekommste als Anfänger ganz schnell langsam. Mit OOP etwas unglücklich designt dann noch Kopiekonstruktoren schlecht implementiert und schon haste einen Overhead vom feinsten. Das ganze dann noch unter Linux wo die C++ Runtime eh schon um einiges langsamer sind als jene von C und evola haste Schneckencode.
Wir sind zwar hier in einem C++ Forum und man sollte die letzten C++ler die es noch gibt auch nicht verachten aber ein OOP-Fan sein und C++ nutzen ist schon ein wenig pervers. Noch eine allgemeine Kritik hätte ich. Mit eurem Webzeugs wird heute sicherlich viel mehr gemacht als mit dem komischen C++ also benennt das um oder ihr gebt damit zu noch in den 90igern geblieben zu sein.
-
Hugo8723 schrieb:
Och C++ bekommste als Anfänger ganz schnell langsam. Mit OOP etwas unglücklich designt dann noch Kopiekonstruktoren schlecht implementiert und schon haste einen Overhead vom feinsten.
Kopierkonstruktoren KANN man nur implementieren, wenn man Referenzen benutzt. Anderenfalls kommt ein Compilerfehler. Folglich kennt man Referenzen. Folglich ruft man diese Kopierkonstruktoren nicht unnötig auf. Folglich ist das von Dir geschilderte Problem inexistent. Oder?
Bastle doch mal Argumente, die man nachvollziehen kann.
-
volkard schrieb:
Hugo8723 schrieb:
Och C++ bekommste als Anfänger ganz schnell langsam. Mit OOP etwas unglücklich designt dann noch Kopiekonstruktoren schlecht implementiert und schon haste einen Overhead vom feinsten.
Kopierkonstruktoren KANN man nur implementieren, wenn man Referenzen benutzt. Anderenfalls kommt ein Compilerfehler. Folglich kennt man Referenzen. Folglich ruft man diese Kopierkonstruktoren nicht unnötig auf. Folglich ist das von Dir geschilderte Problem inexistent. Oder?
Bastle doch mal Argumente, die man nachvollziehen kann.Wieso fragst du extra nach? Du siehst doch, dass er offenbar ein weiteres C Kind ohne Ahnung von C++ ist (zeigt ja sein nicht mögliches CCtor Beispiel).
Auffällig: C ler = Unregs, Trolle, Unstudierte
C++er: Registriert, Sachkenntnis, fast alle studiertMein Bild von C-Fricklern bestätigt sich. Sind halt doch eher ungelernte Typen/Fachinformatiker, die so vor sich hin wursteln in kleinen Betrieben und sich am Ende auch noch haxx0r vorkommen.
-
hehehehe schrieb:
Auffällig: C ler = Unregs, Trolle, Unstudierte
C++er: Registriert, Sachkenntnis, fast alle studiertzum glück kenn ich ja nichts anderes als c... und muß mich hier von dir blöd anmachen lassen
-
ums nochmal kurz und knapp auf den punkt zu bringen, mir gefällt die syntax nicht. das ganze referenzen geschubse mag ich auch nicht. operator überladung von shift für strings ist eine krankheit. wenn ichs schnell hinschmieren will, nehm ich was anderes. auch wenn c++ 10mal so schnell wär würds mir immer noch nicht gefallen. und selbst wenn ich studieren würde hätt ich trotzdem keinen bedarf in meiner freizeit etwas zu verwenden was mir einfach nicht gefällt. dafür muß es auch gar keine plausiblen gründe geben.
-
Auffällig: C++er: Registriert, Sachkenntnis, fast alle studiert
Klar, alles BWLer
-
__-- schrieb:
ums nochmal kurz und knapp auf den punkt zu bringen, mir gefällt die syntax nicht.
Ok, Deine Meinung.
__-- schrieb:
das ganze referenzen geschubse mag ich auch nicht.
Ich mag auch lieber Zeiger.
__-- schrieb:
operator überladung von shift für strings ist eine krankheit.
Kann sein. Aber es war 20 Jahre lang eine annehmbare Notlösung. Naja, anfangs ohne Templates, da war alles krank.
Heute würde man es bestimmt mit variadic templates schlauer machen.__-- schrieb:
würds mir immer noch nicht gefallen. und selbst wenn ich studieren würde hätt ich trotzdem keinen bedarf in meiner freizeit etwas zu verwenden was mir einfach nicht gefällt.
Ok. So wie ich von Java krank werde. Ich nehme einfach keine Java-Jobs an. Muß ich nicht.
-
Die heutigen Studienabgänger haben meist Java gelernt und werden sich nur im Notfall noch mit so was wie C++ auseinandersetzen. Es gab eine Zeit in der war C++ sehr hip und modern und auch die einzige Möglichkeit OOP produktiv einzusetzen. Aber so wie sich z.B. auch das Java-Forum.org weiterentwickelt hat, so sind auch neue Programmierapachen dazugekommen und haben schon das größte Stück vom Kuchen für sich in Anspruch genommen.
Wer OOP-Fan ist wird nicht C++ nehmen
Wer Webapps entwickelt wird nicht C++ nehmen
Wer Spieleentwicklung für den Browser betreibt wird nicht C++ nehmen
Wer CMS entwickelt wird nicht C++ nehmen
Wer OS/Treiberentwicklung betreibt wird nicht C++ nehmen
Wer für Microcontroller programmiert wird nicht C++ nehmen
Wer für mobile Geräte programmiert wird nicht C++ nehmen
Wer GUI-Frontends entwickelt wird nicht C++ nehmen
Wer für SAP programmiert wird nicht C++ nehmen
Wer für Banken/Versicherungen programmiert wird nicht C++ nehmen
Wer Administrative-Tools programmiert wird nicht C++ nehmenAlso 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.
Die Seite hier ist irgendwie wie ein Museumsbesuch.
-
Wer große Software, bei der es auf Performance ankommt, programmiert, wird C++ benutzen.
Nicht ohne Grund sind z.B. ALLE großen 3D-Engines und Spiele in C++ geschrieben.
-
Toll C++ die Sprache für Spielchen. Dir ist aber klar dass auch in der Spieleentwicklung nicht alles C++ ist und auch viel Scriptsprachen und auch mal Java für Editoren zum Einsatz kommt?
Denn auch hier gilt wie überall kann man irgendwie auf C++ verzichten tut man das.
-
wieso kann nicht einfach jeder verwenden was einem gefällt? man muß den anderen nicht immer bekehren. evtl. gibts auch aufgaben, die sich super in sprache xyz lösen lasen?
diese hier herrschende ich weiß eh alles besser und das was ich kann ist eh viel toller als der rest, führt doch nicht zum ziel.