Java vs. C++



  • ShadowClone schrieb:

    Und Java im einstelligen Bereich. 😃
    Das mit C++ ist aber wirklich nicht gerechtfertigt.

    Das Jukt mich echt nicht! Eher solche Leute die allgemeine Halbwissen wie du verbreitest.



  • cppvsjava schrieb:

    Egalwat, da wird absolut gar nichts mitgeschleppt. So manches reines C kompiliert nicht mit einem C++-Compiler. C++ ist eine Sprache die auf ihren eigenen Füßen steht, ihre eigene Features bereitstellt und mit der man aufs Auge genau so performanten Code rausbekommt als mit C. Wenn nicht sogar noch besseren, weil es vorgefertigte Musterlösungen im Standard gibt, die einem das Leben vereinfachen und es ja schlussendlich nur auf den Programmierer drauf ankommt, wie gut er sein Ding implementiert.

    also ich finde, dass c einfacher zu programmieren ist, als c++. irgendwo ist es doch auch "performant", wenn das programm schneller geschrieben werden kann, oder nicht? also c++ muss ja nicht unbedingt oo programmiert werden, aber irgendwie ist das alles komisch und hat unnötig viele funktionen.

    andererseits sollen wir grad an der fh im rahmen von mixed reality irgendwelche fußballroboter über ein spielfeld schieben. das ist alles komplett in java geschrieben, funktioniert alles wunderbar und ist trotzdem schnell.



  • Einen Roboter anzusteuern ist auch nichts rechenintensives. Lass dein Programm mal vier Millionen Matrixmultiplikationen oder Eigenwerte von 10000x10000 Matrizen berechnen und vergleiche dann die Performance Unterschiede.



  • da würde ich dann glaub ich auch wieder c verwenden. angeblich kann man sogar c-Programme in Java einfügen. 🙄

    also dass Java ziemlich langsam ist, ist mir sehr wohl bekannt. aber c++ soll auch nicht immer an c rankommen. 😉



  • HansKlaus schrieb:

    da würde ich dann glaub ich auch wieder c verwenden. angeblich kann man sogar c-Programme in Java einfügen. 🙄

    diese schnittstelle nennt sich jni (java native interface).
    und in der tat: java und c in kombination lassen keine wünsche mehr offen. 🙂

    das java auf android-geräten hat sogar einen eingebauten c-dialekt für besonders rechenintensive aufgaben: https://developer.android.com/guide/topics/renderscript/compute.html

    wer braucht noch c++?
    c++ wurde mal gehyped wie xml. dadurch kam es groß raus, wovon es noch bis heute zehrt. aber richtig gut war c++ nie.



  • Leute, was ist denn an C besser? Die verlinkten Videos zeigen doch, dass C++ mind. so schnell ist wie C. In manchen Fällen sogar noch schneller. Dafür habe ich oben drauf noch mehr Sicherheit und kann im Schnitt den Code besser pflegen.



  • ShadowClone schrieb:

    Leute, was ist denn an C besser?

    c++ ist mit features überladen. c++ programme tendieren zur überkomplexität. ein guter c++ coder muss nicht nur ein erfahrener fachmann sein, sondern auch extrem diszipliniert vorgehen. c++ hat viel-viel mehr fallstricke als c. c ist dagegen recht pimitiv und leicht zu lernen. das trifft auf c++ leider nicht zu.



  • Allein durch RAI und die bessere Typisierung fallen viele Fallstricke von C weg.
    Die STL ist außerdem sehr sinnvoll und performant. Bspw. ist std::copy im Gegensatz zu memcpy nicht nur typsicher, sondern tendenziell auch etwas performanter!

    http://stackoverflow.com/questions/4707012/is-it-better-to-use-stdmemcpy-or-stdcopy-in-terms-to-performance



  • ShadowClone schrieb:

    Allein durch RAI und die bessere Typisierung fallen viele Fallstricke von C weg.

    die problemchen von c, die c++ zu beiseitigen versucht, werden üblicherweise gegen einen ganzen sack voll eigener probleme getauscht.



  • Ohne Beispiele bleiben das Behauptungen.



  • ShadowClone schrieb:

    Allein durch RAI und die bessere Typisierung fallen viele Fallstricke von C weg.
    Die STL ist außerdem sehr sinnvoll und performant. Bspw. ist std::copy im Gegensatz zu memcpy nicht nur typsicher, sondern tendenziell auch etwas performanter!

    http://stackoverflow.com/questions/4707012/is-it-better-to-use-stdmemcpy-or-stdcopy-in-terms-to-performance

    Ach du fuck!
    Ist nicht dein Ernst?

    Hast du dir dein Source Code angeschaut?
    Weißt du, dass das vor 5 Jahren war?
    Außerdem Speedtest mit einem Compiler?

    OMG!



  • Kannst du drehen und wenden wie du willst. Die verlinkten Videos kommen zum selben Schluss: C++ ist mind. genau so schnell wie C und dies bei mehr Sicherheit und Wartbarkeit.
    Die C++ Leute liefern wenigsten und räumen mit Mythen auf. Leute wie du kommen nur mit Behauptungen und nörgeln rum.



  • ShadowClone schrieb:

    Ohne Beispiele bleiben das Behauptungen.

    das netz ist voller beispiele: http://horstmann.com/cpp/pitfalls.html

    sogar aktuell hier im forum: https://www.c-plusplus.net/forum/340285



  • Mal davon abgesehen, dass C diese auch hat und diese gewiss nicht schön sind: Compilerwarnungen sind mittlerweile eine große Hilfe.



  • ShadowClone schrieb:

    Kannst du drehen und wenden wie du willst. Die verlinkten Videos kommen zum selben Schluss: C++ ist mind. genau so schnell wie C und dies bei mehr Sicherheit und Wartbarkeit.
    Die C++ Leute liefern wenigsten und räumen mit Mythen auf. Leute wie du kommen nur mit Behauptungen und nörgeln rum.

    An wem ist das Adressiert?
    Ich persönlich bin Software Engineer. Ich brauch kein Language War. Außerdem hab ich das Recht eine andere Meinung als irgendwer im Netz zu sein. Copy vs Memcopy ist ja so lächlich weil der Compiler und deren Runtime Implementieren lebendige Software ist, was ist wenn die heutige gcc 5% mehr raushaut? C Compiler und C++ beu GNU sind mindesten zwei verschiedenen Branches unter Umständen von zwei verschiedenen Entwicklergruppe gepflegt und du willst mir weiß machen das irgendein Beitrag der mit eine Version testet, sein Beitrag zum Fakt wird? Ich bitte dich. Außerdem benutzt dein Video nicht zero cost abstraction. Sowas gibst nicht in C++, Bjarne Stroustrup redet von

    B. Stroustrup schrieb:

    zero-overhead principle: What you don't use, you don't pay for

    in The Design and Evolution of C++. Addison Wesley, ISBN 0-201-54330-3.
    March 1994.

    In C++ musst du
    - für Objektorientierung zahlen
    - für Template Mechanismen zahlen

    Aber umsonst ist nix, die Frage ist ob es effizienter ist, aber das wiederum ist die Implementierung!



  • Zeus schrieb:

    In C++ musst du
    - für Objektorientierung zahlen
    - für Template Mechanismen zahlen

    Für die anderen, die diesen Quatsch tatsächlich glauben:

    Klassen haben nicht per se Overhead. Den hat man nur, wenn du virtuelle Funktionen benutzt.

    Templates: Der Code wird komplett zur Compilezeit erstellt. Den einzigen "Overhead" den man hat, ist, dass der Code für jeden Datentyp dupliziert wird. Das wirkt sich jedoch meist positiv auf die Laufzeit aus (deswegen hat man es ja gemacht). Der einzige Umstand, wo es sich negativ auswirkt, ist, wenn der Code nicht mehr in den CPU-Cache passt. Aber auch hier gilt: Niemand zwingt einen das zu benutzen. Allein durch Klassen, RAI und bessere Typsicherheit, ist viel gewonnen.

    Mit dir Zeus, ist jegliche Diskussion beendet.



  • Aber Klassen und schöne Fehlervermeidung habe ich bei Java doch auch.



  • - für Template Mechanismen zahlen

    Ich nehme mal an du sprichst über den Kompiliervorgang. Dann ja, manchmal muss ich mich echt am Kopf fassen, wenn ich irgendwas von Boost kompiliere.



  • ShadowClone schrieb:

    Zeus schrieb:

    In C++ musst du
    - für Objektorientierung zahlen
    - für Template Mechanismen zahlen

    Für die anderen, die diesen Quatsch tatsächlich glauben:

    Klassen haben nicht per se Overhead. Den hat man nur, wenn du virtuelle Funktionen benutzt.

    Templates: Der Code wird komplett zur Compilezeit erstellt. Den einzigen "Overhead" den man hat, ist, dass der Code für jeden Datentyp dupliziert wird. Das wirkt sich jedoch meist positiv auf die Laufzeit aus (deswegen hat man es ja gemacht). Der einzige Umstand, wo es sich negativ auswirkt, ist, wenn der Code nicht mehr in den CPU-Cache passt. Aber auch hier gilt: Niemand zwingt einen das zu benutzen. Allein durch Klassen, RAI und bessere Typsicherheit, ist viel gewonnen.

    Mit dir Zeus, ist jegliche Diskussion beendet.

    Du hast ja nix wiederlegen können? Also wo ist der Quatsch? Was ist der Blödsinn was ich sagte?

    Wie willst du objektorientierte Pattern verwenden ohne dynamischen Dispatcher zu benutzen? Es geht nicht oder du nimmst Substitionstechniken! Außerdem hab ich nie von Overhead geredet. Im Kern kannst du meine Aussage nicht wiederlegen. Du musst bezahlen. Egal wie du es machst.



  • Zeus schrieb:

    In C++ musst du für Objektorientierung zahlen

    In C++ lässt sich auch statischer Polymorphismus implementieren, der absolut keine Indirektionen zur Folge hat. Moderne C++-Compiler beherrschen außerdem Devirtualization. In C++ zahlt man also unter dem Strich deutlich weniger für Objektorientierung als in anderen OO-Sprachen.
    Außerdem ist dein Argument von Grund auf invalide, denn für Funktionszeiger in C oder für call / jmp zahlt man genauso. Die Abstraktion, die C++ hierbei bietet, beläuft sich lediglich darauf, dass man sich nicht mehr selbst um die Funktionszeigern kümmern muss, wie man es in C müsste. Diese Abstraktion ist in der Tat ohne zusätzliche Kosten; im Gegenteil, sie erlaubt sogar noch besseren Code dank den aufgezählten Optimierungen.

    Zeus schrieb:

    In C++ musst du für Template Mechanismen zahlen

    Ganz klar falsch. "Template-Mechanismen" evaluieren während der Compile-Zeit zu gewöhnlichem C++-Code und werden, wie alles andere, zu nativem Code kompiliert. Ferner erlauben sie Techniken wie Expression Tempaltes oder Spezialisierung, die zu noch performanterem Zielcode führen.

    Zeus schrieb:

    wiederlegen

    Zeus schrieb:

    An wem ist das Adressiert?
    Ich persönlich bin Software Engineer. Ich brauch kein Language War. Außerdem hab ich das Recht eine andere Meinung als irgendwer im Netz zu sein. Copy vs Memcopy ist ja so lächlich weil der Compiler und deren Runtime Implementieren lebendige Software ist, was ist wenn die heutige gcc 5% mehr raushaut?

    Lern zuerst Deutsch, du Analphabet, bevor du hier dein jämmerliches Halbwissen zu Programmiersprachen äußerst.


Anmelden zum Antworten