Lohnt es sich noch C++ zu lernen?
-
mir geht es um was anderes. Wir sollten nicht versuchen Konzepte mit Implementierungen zu vergleichen. Das ist eben das mit den Äpfeln und den Birnen
-
sehe ich auch so.
Optimieren war nicht Ziel des Vergleiches. Siehe anderen Thread
-
kingruedi schrieb:
mir geht es um was anderes. Wir sollten nicht versuchen Konzepte mit Implementierungen zu vergleichen. Das ist eben das mit den Äpfeln und den Birnen
Wir vergleichen hier ausschließlich die Performance von Implementierungen. ...und wenn du aus dem Benchmark nicht ersehen kannst, dass der << Operator i.d.R. nicht sehr performant implementiert ist (siehe den ganz alten Benchmark), dann wirst du ihn halt weiter nutzen und deine Programme bleiben lahm. Bei dem alten Benchmark war dein Programm ja auch nicht gerade schnell. Mich interessiert es eigentlich garnicht, wenn mir jemand sagt, dass etwas nicht konzeptionell lahm ist. Mich interessiert nur, wie es wirklich ist.
Java ist zum Beispiel i.d.R auch etwas langsamer als C++. Das ist aber kein Konzept der Sprache und steht auch nicht in der Sprachspezifikation. Das hat allein etwas mit der Implementierung der Sprache zu tun.
-
Das ist aber kein Konzept der Sprache und steht auch nicht in der Sprachspezifikation. Das hat allein etwas mit der Implementierung der Sprache zu tun.
jop, deswegen kann man sagen, die J2<blubblub>-Edition ist beim benutzen von foo so und so viel langsammer als der G++ (natürlich sollte man den Code dazu zeigen, weil wir ja spätestens durch den Ct Artikel gesehen haben, dass man durch schlechten Code alles schlecht machen kann :)).
Man kann aber nicht sagen J2<blubblub>-Edition ist langsammer als C++. Das geht nicht!
Es gibt unterschiedliche Java Implementierungen (ja, es gibt auch Java Compiler und ich hab sogar mal was von einer CPU gehoert, die ByteCode verstehen soll) und es gibt unterschiedliche C++ Implementierungen.
Deswegen sollten wir uns darauf einigen, dass C++ weder langsammer noch schneller als Java ist, da man keine wirkliche Geschwindigkeit aus den Spezifikationen ableiten kann!
Aber ich halte nicht viel von dem ganzen Benchmark quatsch etc. Wenn ich eine Anwendung habe und in der Anwendung ein Performance Problem, dann nehm ich mir nen Profiler und schau wo es hackt. Wenn es dann eben in C++ der << Operator ist, dann ersetz ich dass durch andere Methoden, genauso wie ich das bei Java machen würde, wenn ich das Problem mit System.out.println haben wuerde.
So benchmarks sind weit von der Realitaet entfernt und sagen nichts aus. (Sei mal ehrlich, bei welchem Programm bist du an der Performance von System.out.println gescheitert?)
Im Endeffekt kommt es bei Java vs. C++ nicht darauf an, dass es eine C++ Implementierung gibt, die 10 mal schneller Zufalls float Werte sortieren kann.
Ob man C++ oder Java lernt ist eigentlich auch egal, weil man im Endeffekt die Werkezeuge (Sprachen sind Werkzeuge) nicht aus dem Grund die Werkzeuge zu benutzen benutzt (natürlich am Anfang schon, um sich in die Sprache einzuarbeiten), sondern weil man damit ein Problem lösen will und man dann entscheiden sollte, welche Programmiersprache man nimmt (es gibt auch Probleme, fuer die Java und C++ ungeeignet sind und/oder es bessere Wege gibt).
Bei Java und C++ hat man eben das Problem, dass die Sprachen sich sehr aehnlich sind und man deswegen eher die Bereiche überschneiden in denen man die Sprachen einsetzt. Deswegen kommt es wohl staendig zu diesen klein Kriegen.