• Hallo Besucher!

    Du bist neu im Forum? Dann registriere dich hier, um Diskussionen beizutreten oder eigene Themen zu erstellen. Für die Registrierung ist es erforderlich, dass du einen Spielaccount bei Die Stämme hast.

    Andernfalls kannst du dich hier direkt einloggen.

    Falls du dein Passwort vergessen hast, kannst du hier ein neues Passwort anfordern.

Vergleich C++ | Java

DeletedUser86497

Gast
Hallo,

ich würde mal gerne wissen, was für Unterschiede euch zwischen C++ und der Inselsprache einfallen :mrgreen:
Links wie "10 Gründe warum Java ******e ist" oder so hätte ich auch ganz gern :)

Lg
Pi
 

DeletedUser

Gast
Java is die neuere Programmiersprache und lehnt sich vom Syntax ziemlich stark an C++ an. Trotzdem haben die beiden Sprachen 2 verschiedene Paradigmen:

C/C++ ist Performance
Java ist Portabilität

Java is sozusagen der Portable nachfolger von C, nur dass beim kompilieren glaub ich noch ein Zwischenschritt gemacht wird der einen Java bytecode generiert. Dadurch wird Java portabler aber kann dann nicht mehr so performant sein wie C++.

Saubere, größere Software nach Architekturentwurf entwickeln find ich in Java wesentlich besser, liegt aber vermutlich an der Entwicklungsumgebung und an dem dass ich das in C++ noch nie gemacht hab und nicht wirklich weiß wie man das vernünftig macht.

Ich denke Java ist leichter zu lernen, weil es dort weniger verwirrende Sachen die man nicht mehr braucht gibt(wie z.B structs in C++, die man nur hat um zu C abwärtskompatibel zu sein), und weil einem die Pointer in C mal gerne einen Knoten ins Hirn machen können^^


Das is das was mir spontan dazu einfällt, Unterschiede kann man sicher genauer recherchieren. "Besser" ist sicher keine der beiden Sprachen, kommt drauf an was man machen will.
 

DeletedUser

Gast
Für Java gibts btw auch Maschinencode Compiler, man muss also nicht immer den Umweg über den Bytecode machen.

Was mir jetzt spontan noch einfällt ist das Überladen von Operatoren, das in Java nicht möglich ist.

Hier noch ein interessantes Benchmark:
http://kano.net/javabench/
 

DeletedUser27114

Gast
[...]
Ich denke Java ist leichter zu lernen, weil es dort weniger verwirrende Sachen die man nicht mehr braucht gibt(wie z.B structs in C++, die man nur hat um zu C abwärtskompatibel zu sein), und weil einem die Pointer in C mal gerne einen Knoten ins Hirn machen können^^
[...]

C++ ist gerade als Anfänger schwer zu lernen, vor allem weil man bei den unzähligen Bibiotheken bzw. sprachlichen Möglichkeiten anfangs nicht durchblickt.
Aber das ist letztendlich auch die Stärke dieser Sprache. Man lernt erstmal die Syntax, und kann mit diesem Wissen mit den entsprechenden Bibiotheken so ziemlich alles machen.

Mit C++ lässt sich sehr maschienennah Programmieren, daher kommt auch der performance Vorteil. Das hat aber den grossen Nachteil, das sich sehr leicht Fehler einschleichen. (die meisten Sicherheitslücken in Programmen entstehen dadurch)
Java lässt solche Fehler gar nicht erst zu, aber darunter leidet eben auch die Geschwindigkeit.
Aber da für den Hobbyprogrammierer die Geschwindigkeit wohl keine Rolle Spielt, würde ich Anfängern eher Java empfehlen. (selber nutze ich nur C++)


[...]
Hier noch ein interessantes Benchmark:
http://kano.net/javabench/

Mit solchen Benchmarks sollte man vorsichtig sein.
Soweit ich weiss, wird der G++ Compiler schon lange nicht mehr weiterentwickelt.
Edit: Fehler meinerseits, wurde von RVaule aufgeklärt. Ändert aber nichts daran, dass solche Benchmarks wenig aussagen, mit den entsprechenden Bedingungen kann man jedes Ergebniss provozieren.


Hallo,

Links wie "10 Gründe warum Java ******e ist" oder so hätte ich auch ganz gern :)

Lg
Pi

Lol, da Google ich nach "10 Gründe warum Java ******e ist" um zu schauen welche Gründe das wohl sind, und der zweite Treffer ist gleich dieser Thread.
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser

Gast
Mit solchen Benchmarks sollte man vorsichtig sein.
Soweit ich weiss, wird der G++ Compiler schon lange nicht mehr weiterentwickelt.
Der g++ wird noch weiterentwickelt und ist im Moment einer der standardkonformsten und besten Compiler überhaupt, btw. Nur der Windowsport MinGW hängt ziemlich hinterher. Gibt aber auch da aktuelle inoffizielle Portierungen wie http://tdragon.net/recentgcc/.
Nichtsdestotrotz, man kann jeden Benchmark zu Gunsten seiner Sprache schreiben. "Glaube keinem Benchmark, den du nicht selbst gefälscht hast" ;). Wenn ein Javaprogrammierer C++-Code schreibt, kommt sowieso nix effizientes raus, weil er nicht weiß, wo man in C++ aufpassen muss. C++ ist nicht von alleine schnell. ^^ Z.B. könnte ein Javaprogrammierer massig heap-allocations von ziemlich kleinen Objekten machen und schon geht C++ total in die Knie. C++ Speicherverwaltung ist auf größere Objekte ausgelegt, für kleinere Objekte nimmt man small-object-allocators.
Gut für Vergleiche ist übrigens diese Seite: http://shootout.alioth.debian.org/u64/benchmark.php.

@C1B1SE: Bei diesen Compilern wird auch die VM nur in eine executable mit dem Bytecode gepackt, normalerweise. Der einzige Vorteil davon ist, dass du keine Java-installation voraussetzen musst. Geschwindigkeitsvorteile sollte es aber im normalfall keine geben. Oder kaum welche.
 

DeletedUser

Gast
@C1B1SE: Bei diesen Compilern wird auch die VM nur in eine executable mit dem Bytecode gepackt, normalerweise. Der einzige Vorteil davon ist, dass du keine Java-installation voraussetzen musst. Geschwindigkeitsvorteile sollte es aber im normalfall keine geben. Oder kaum welche.
Jo habe mich getäuscht es scheint nur Compiler zu geben die Bytecode in Maschinencode kompilieren, keine die es direkt aus Java Code können.
Wenn die JRE nicht mitlaufen muss kann man aber auf jeden Fall Ressourcen sparen.
Edit:
Ich merke gerade, ich meine glaube ich was anderes als du. Ich dachte an AOT Compiler, nicht an eine gepackte VM.
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser

Gast
Edit:
Ich merke gerade, ich meine glaube ich was anderes als du. Ich dachte an AOT Compiler, nicht an eine gepackte VM.
Hm ok. Das bringt eigentlich nur beim Startup n bisschen Geschwindigkeit, oder? Der Garbage Collector und alles aus der VM muss ja trotzdem laufen.
 

DeletedUser27114

Gast
Der g++ wird noch weiterentwickelt und ist im Moment einer der standardkonformsten und besten Compiler überhaupt, btw.

Habe das mal korrigiert.
Aber das habe ich schon öfters gehört.

Etwas OT.:
Betrifft das dann nur DevC++ oder ist das allgemein eine Falschmeldung?
(Selbst der Prof. an der Uni Augsburg hat deswegen von DevC++ abgeraten, deshalb weiss ich nicht was ich davon halten soll)
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser

Gast
Etwas OT.:
Betrifft das dann nur DevC++ oder ist das allgemein eine Falschmeldung?
(Selbst der Prof. an der Uni Augsburg hat deswegen von DevC++ abgeraten, deshalb weiss ich nicht was ich davon halten soll)
Jo, der Dev-C++ wird seit 2005 nicht mehr weiterentwickelt. Dadurch kommt beim Download eben auch ein 5 Jahre alter MinGW mit. => Hoffnungslos veraltet.
 

DeletedUser27114

Gast
Ah ok.
Dann ist G++ =! MinGW

Ich dachte G++ wird von DevC++ genutzt.

Ich glaube für Leute wie mich währe ein Sticky mit den Entwicklungsumgebungen und ihren aktuellen Compilern hilfreich^^
 
Zuletzt bearbeitet von einem Moderator:
Oben