Ist C++ wirklich so schlecht?



  • Original erstellt von epidemic:
    **
    Ich bezweifle es, daß Ihr die Performance Unterschiede zwischen Java und C++
    merkt...
    **

    Ich nicht. ...Naja: Es kommt auf das Anwendungsgebiet an. Einfache Anwendungen, bei denen keine große Leistung gebraucht wird, kann man in Java schreiben, ohne dass man einen Performanceunterschied merkt. In der Regel wird der Prozessor eh mit Warten beschäftigt sein.

    Ich beschäftige mich etwas mit Bildverarbeitung. ...und nehme dazu eigentlich die vollkommen falsche Programmiersprache, nämlich Java. Warum ist Java hier falsch? Bei Bildverarbeitung wird oft wirklich Leistung gebraucht. Wenn man etwas mit einem Bild macht, was mit C++ eine Minute dauert, mit Java aber 2 Minuten, dann merkt man das sehr deutlich.

    Ein weiteres Beispiel sind Spiele. Die meisten Spiele werden nicht ohne Grund nicht mit Java geschrieben. Es macht halt einen Unterschied, ob man 15 fps oder 30 fps bei einem Ego-Shooter hat. Das eine ist spielbar, das andere nicht. (abesehen davon werden aktuelle Prozessoren hier wohl immer weniger ausgelastet, weshalb der Vorteil für C++ hier schrumpfen wird)



  • Dafür ist Java in der Productivity zich mal schneller als C++.



  • Dafür ist Java in der Productivity zich mal schneller als C++.

    Oh ja. Besonders seit J2EE nebst Enterprise Java-Beans. Damit ist man sicher ganz schnell produktiv. Dürfte sich nur um Jahre handeln 😉 😃



  • Original erstellt von HumeSikkins:
    **
    Oh ja. Besonders seit J2EE nebst Enterprise Java-Beans. Damit ist man sicher ganz schnell produktiv. Dürfte sich nur um Jahre handeln 😉 :D**

    Erklärung bitte! Warum denkst du, dass man da nicht produktiver als mit C++ ist? Das hört sich ja sogar so an, dass man eine viel geringere Produktivität hat als mit C++.



  • Original erstellt von HumeSikkins:
    [quote] Dafür ist Java in der Productivity zich mal schneller als C++.

    **
    Oh ja. Besonders seit J2EE nebst Enterprise Java-Beans. Damit ist man sicher ganz schnell produktiv. Dürfte sich nur um Jahre handeln 😉 :D**[/QUOTE]

    Dauert ja bei C++ auch Jahre (mal MFC-Geklicke ausgenommen)



  • Hallo Freunde,
    steht hier irgendwo in meinen Beitrag "C++ ist geiler als Java"? Oder "Mit C++ ist man lecker produktiver"? Nein! Zur Hölle nochmal! Habe ich mit keinem Wort behauptet.

    Mein leicht ironischer Beitrag bezog sich eigentlich nur auf die Diskrepanz zwischen Wunschdenken-Java-ist-einfach-und-man-ist-schnell-produktiv und zähen riesen Klumpen wie J2EE mit Enterprise Java-Beans.

    Ich habe überhaupt keinen Vergleich angestellt. Der kam von Lars und Lars != HumeSikkins. Erkennt man schon an der Anzahl der Buchstaben.

    Achja, aber wo wir gerade bei vergleichen sind. Wo ist denn (aus Sicht der Produktivität) der Unterschied zwischen einem fetten C++ + CORBA-Mega-Implementation und Java + J2EE + Enterprise Java-Beans?

    Meine Antwort ist: Gar keiner. Alles mist. Ich sag's nur schon mal vorher. Nur damit nachher nicht wieder einer kommt und mir irgendwas andichtet.



  • IMHO ist ein Produktivitätsunterschied allein schon durch die unterschiedliche Komplexität der Sprachen gegeben. Bis man nen C++-Programmierer ausgebildet hat, hat der Java-Programmierer das Programm längst fertiggestellt. 😃 :p



  • Hallo,
    genau. Belassen wir es doch einfach dabei.



  • Original erstellt von HumeSikkins:
    Belassen wir es doch einfach dabei.

    Och nö! ...wo ich doch gerade folgendes PDF gefunden habe: http://www.spirus.com.au/papersAndTalks/javaVsC++.pdf

    Aus der Zusammenfassung:

    The ration of C++ bugs-per-kLoc to Java bugs-per-kLoc is statistically proven with a confidence level of 95% to be in the range 2.5 to 3.5. C++ also generates between 15% and 50% more defects per kLoc. Neither language appears better for defects per hour, but C++ produces between 200% and 300% more bugs per hour. Java is also between 30% and 200% more productive, in terms of lines of code per minute. It probably takes twice as long to fix each C++ bug, but this is not statistically proven due to the effect of differing compiler technology.

    The experiment used one programmer, with one C++ project and one Java project, each of 3 months duration. The study assumes that the applications are representative of all applications. The programmer had seven years of C++ experience, but was only learning Java. Therefore the result can only safely be extrapolated to experienced C++ programmers who are learning Java. However, given that the results favour Java, and we assume that experienced programmers are better than inexperienced programmers, then the results would favour Java even more markedly if the programmer had equal experience in both Java and C++.

    • kLoc steht wohl für "tausend Code-Zeilen".
    • Unter einem "defect" wird zum Beispiel ein Syntaxfehler verstanden.
    • Unter einem "bug" wird ein Fehler verstanden, der erst beim Testen oder später gefunden wird.

    [ Dieser Beitrag wurde am 20.01.2003 um 03:58 Uhr von Gregor editiert. ]



  • Hallo,
    im Zuge der Lehrveranstaltung "Experimentelle Softwaretechnik" habe ich letztes Semester ein Buch zu selbigem Thema gelesen.
    Dort gab es auch ein Experiment, dass C eine höhere Produktivität und eine geringere Fehlerrate als C++ (und anderen High-Level-Sprachen) bescheinigte. Statistisch betrachtet hielt die Aussage allerdings nicht wirklich.

    Wie sieht das bei deinem Text aus? Steht dazu in dem Text irgendwas? Hast du mal nachgerechnet? Mir scheint ein Programmierer etwas wenig zu sein.



  • Ich meinte, dass sowas in solchem C++ Code (der übrigens leider plattformabhängig ist, unter Linux (POSIX?) gibts shared objects, unter Win32 DLLs) unnötig ist. Wobei man aus Gründen der Portabilität zu C Funktionen greifen wird. Man machts ganz ganz einfach so: In dem Verzeichnis alle DLLs (.so s) anschauen und dann die Funktion laden. Fertig. Nix RTTI, nix Reflection. Good ol' C.

    Um die Funktionen zu laden und verwenden zu können, musst Du wissen, wie sie heißen und v.a. welche Parameter sie bekommen. Mit Reflexion kannst Du ne Klasse fragen, welche Funktionen etc. sie denn hat. Damit könnte man z.B. ein generisches Beliegibge-Klassen-Test-Programm schreiben oder man kanns für die Serialisierung aller möglicher Klassen einsetzen ...

    Klar im endeffekt muss man trotzdem immer irgendwie was über die Klasse wissen, aber mit Reflexions kann man doch einige Sachen machen, bei denen man sich ohne einen abbrechen würde (bzw. was nicht praktikabel ist).

    Reflexion sind so ne Art Laufzeit-Templates und die c++ template-Zauberer könnten da wohl ne ganze Menge rausholen - das würde super zur Sprache passen.

    @hume
    imho lässt sich mit anderen Sprachen als c++ sehr viel schneller sehr produktiv arbeiten als mit c++. Mit c++ brauchst Du erstmal riesige Erfahrung und selbst wenn Du die halbwegs hast, hast Du so viele Möglichkeiten, was zu machen, dass sich da super tagelang mit rumspielen lässt, Du kannst tolle, elegante Software-Designs machen und X Techniken einsetzen, die andere Sprachen nicht unterstützen. ABER: Das ist schön für den Entwickler (=ich), aber wenn ich Projektleiter wäre, ich wär mir nicht so sicher, ob ich an c++ festhalten würde (außer, weil ichs halt geil find). V.a. in so ner Firma wie der unseren, wo die Entwickler nicht so aus der Informatik-Freak-Ecke kommen sondern ???-Ingenieure etc. sind, die die Programmiersprache halt als Werkzeug sehn. Und was ich da manchmal beim einen oder anderen für c++-Code sehe 😮 So was kann man in ner anderen Sprache nicht so zusammenmurksen (und um ehrlich zu sein, bei mir auch 😉 )

    Wenn man dann aber mal der Superfreak ist, kann man in C++ bestimmt super Designs machen, die sich auch kurz, mittel und v.a. langfristig auszahlen (soweit der, der Dein Projekt irgendwann mal weiterpflegt auch ein Super-Freak ist).

    [ Dieser Beitrag wurde am 20.01.2003 um 11:09 Uhr von kartoffelsack editiert. ]



  • Original erstellt von HumeSikkins:
    **
    Wie sieht das bei deinem Text aus? Steht dazu in dem Text irgendwas? Hast du mal nachgerechnet? Mir scheint ein Programmierer etwas wenig zu sein.**

    Ja! In der Tat wird der Gültigkeitsbereich der Studie hier stark eingeschränkt. Unter anderem auf Programmierer mit viel C++ Erfahrung aber nur wenig Erfahrung mit Java. Auch ansonsten ist das statistisch natürlich nicht so stark abgesichert. Allerdings heißt das natürlich nicht, dass es ein vollkommen falsches Bild zeigt. Ich denke, die Tendenz ist klar. Oder hast du schonmal eine Studie gesehen, in der behauptet wird, dass C++ produktiver als irgendeine andere Hochsprache ist? Ich nicht, ich würde aber gerne eine sehen.



  • Original erstellt von kartoffelsack:
    **
    V.a. in so ner Firma wie der unseren, wo die Entwickler nicht so aus der Informatik-Freak-Ecke kommen sondern ???-Ingenieure etc. sind, die die Programmiersprache halt als Werkzeug sehn. Und was ich da manchmal beim einen oder anderen für c++-Code sehe 😮 So was kann man in ner anderen Sprache nicht so zusammenmurksen (und um ehrlich zu sein, bei mir auch 😉 )
    **

    in welcher firma arbeitest du nicht das ich ausversehen mal software von euch kaufe. *grinz*

    das simmt schon mir anderen programmiersprachen kannst du schon schneller ne softwar entwickeln, stellt sich nur die frage ob die dann wirklich besser und schlneller ist. c/c++ erreicht fast assembler nahe geschwindigkeit. bei diesen quick und dirty programmiersprachen baut dann halt der compieler die fehler ein, is dann halt en bissel schwieriger die auszubessern man muss dann halt drum rum programmieren.



  • Original erstellt von kartoffelsack:
    @hume
    imho lässt sich mit anderen Sprachen als c++ sehr viel schneller sehr produktiv arbeiten als mit c++. Mit c++ brauchst Du erstmal riesige Erfahrung und selbst wenn Du die halbwegs hast, hast Du so viele Möglichkeiten, was zu machen, dass sich da super tagelang mit rumspielen lässt,

    Du hast glaub den falschen Beruf gewählt ... Als Metzger wärs besser aufgehoben da wärs egal ob du nen billiges oder nen teures messer benutzt ...

    Aber Selbst da wärs wichtig wie man nen Steak schneidet und nicht wie schnell ... 🙄



  • Original erstellt von Matt:
    **
    das simmt schon mir anderen programmiersprachen kannst du schon schneller ne softwar entwickeln, stellt sich nur die frage ob die dann wirklich besser und schlneller ist. c/c++ erreicht fast assembler nahe geschwindigkeit. bei diesen quick und dirty programmiersprachen baut dann halt der compieler die fehler ein, is dann halt en bissel schwieriger die auszubessern man muss dann halt drum rum programmieren.**

    1. C++ Programme laufen letztendlich schneller ab. Keine Frage. Ein paar Beiträge weiter oben habe ich eine Tabelle gezeigt, die C++-Geschwindigkeit mit Java-Geschwindigkeit vergleicht.

    2. Was verstehst du unter einer "quick und dirty" Programmiersprache? Egal, was du darunter verstehst: Vom Namen her kann ich dir schon sagen, dass weder Java, noch C# soetwas ist.

    3. Der Compiler soll Fehler einbauen? Huuuhhhh... Ist mir beim Java-Compiler noch nicht aufgefallen. Ich weiß nur, dass die meisten C++-Compiler nicht standardkonform sind, aber das hat ja eigentlich hier nichts zu suchen.

    4. C++-Programme werden in der Regel schneller als Assembler-Programme ausgeführt, weil die Compiler besser optimieren können, als es der Mensch kann.

    5. Was ist bessere Software? Java-Programme werden im Vergleich zu C++-Programmen zum Beispiel besser wartbar sein, da Java nicht so komplex ist. Andererseits ist Java leichter zu erlernen, weshalb viel mehr Leute in Java als in C++ programmieren, die einfach nicht programmieren können. Das ist natürlich automatisch mit einem minderwertigen Programm verbunden.

    6. Zum Ausbessern der Fehler sagt die Studie von oben ganz klar, dass es deutlich länger dauert, C++-Fehler zu beheben, als Java-Fehler zu beheben.



  • Original erstellt von 1ntrud0r:
    **Du hast glaub den falschen Beruf gewählt ... Als Metzger wärs besser aufgehoben da wärs egal ob du nen billiges oder nen teures messer benutzt ...

    Aber Selbst da wärs wichtig wie man nen Steak schneidet und nicht wie schnell ... 🙄**

    Es kommt durchaus darauf an, wie schnell man etwas fertig hat. Wenn man ein Programm in Java doppelt so schnell, wie mit C++ schreiben kann, dann heißt das, dass das C++-Programm doppelt so viel kostet. IMHO ist das ein sehr wichtiger Punkt, wenn man als Firma konkurenzfähig sein möchte. Sicher: Wenn man die Zeit hat und das Geld vollkommen egal ist, dann ist das nicht interessant. Wer als Hobby programmiert, kann das somit vollkommen vernachlässigen.

    [ Dieser Beitrag wurde am 20.01.2003 um 14:52 Uhr von Gregor editiert. ]



  • Unpassender Vergleich. Du implizierst, dass ein C++ Programm automatisch besser ist als ein äquivalentes Java-Programm*. Dabei ist es lediglich schneller im Ablauf und benötigt wahrscheinlich weniger Speicher**. Über Korrektheit ging es in dem Thread noch nicht, und ich fürchte, da scheidet C++ ganz mieserabel ab (natürlich noch unterboten von C).

    Obwohl es zich Techniken gibt, um Speicherlecks, ungültige Pointer, falsche Typumwandlungen und dergleichen zu vermeiden, gibt es doch immer noch eine riesige Zahl von Dingen, die im Standard lapidar als undefined behavior bezeichnet werden, die nicht von solchen Profi-Techniken erfaßt werden (würden, wenn der Durchschnittsprogrammierer sie auch kennen und beherrschen würde).

    Während Java also vielleicht ein langsamer Steakschneideroboter ist, erinnert C++ eher an eine Hochleistungs-Wurfkättensäge. Wie immer soll das keine pro-Java-Argumentation sein, nur mal die Verhältnisse geraderücken. Es gibt wahrscheinlich auch massenweise schlampige Java-Programme, die bei jeder sich bietenden Gelegenheit NullPointerExceptions schmeißen, aber das berührt die Argumentation nur minimal.

    * bei einem durchschnittlichen Programmierer
    ** bei einer üblichen Implementation



  • welche sprache ist besser? c c++, java, perl ...
    das ist doch alles unsinn. die aufgabenstellung und das wissen des devs legt die sprache fest. einen hw treiber wuerde ich nicht unbedingt versuchen, in java zu realisieren. ich bin eigentlich c fanatiker, nutze aber manchmal auch andere sprachen, weil es einfach schneller geht.

    ps: kann frau ueberhaupt eine sprache benutzen, in der es keine pointer gibt?



  • hmm also ich möcht ma sagen das ich mit .. meinem post keine Hochsprachen gemeint hab sondern ... eher so VB und C# zeug ... das radioaktive Fleisch .. unter den Steaks 🙄



  • @ Gregor

    ich hab in meinem beitrag kein wort über java verloren. da java genau so wie c/c++ zu den hochsprachen zählt meinte ich das auch nicht mit quick und dirty. viel eher meinte ich so teile wie FoxPro oder VB und der gleichen. die zeit die ich beim programmieren gewinne verliere ich wieder bei der fehlerbehebung beim kunden. ausserdem sind diese sprachen ja wohl um welten langsamer als c/c++ und java. wer gut c++ programmieren kann schaft in der gleichen zeit viel schnellere und stabielere programme.

    @ Bashar

    was is ne Hochleistungs-Wurfkättensäge ??? 😕

    [ Dieser Beitrag wurde am 20.01.2003 um 15:49 Uhr von Matt editiert. ]


Anmelden zum Antworten