C++ oder Java?

04/01/2013 14:21 Yoshimore#1
Hi,

ich habe letztens angefangen Java zu lernen weil in der Schule auch Java dran kommen wird und gesagt wurde das Java alles programmieren kann. Dann kam ich aber auf eine Diskussion in einem Forum wo C++ in den Vordergrund gestellt wurde, die Leistung sei schneller, stabiler usw. Nun weiß ich nicht, soll ich lieber Java lernen damit ich in der Schule die Informatik Note auf gut bekomme oder soll ich lieber C++ lernen? Weil im Studium kommt doch auch Java dran oder nicht? Kann ich das dann da nicht nachholen?

lg.
04/01/2013 14:28 .AppleTree.#2
Es kommt darauf an WAS du programmieren willst. Java kann eigentlich genau das selbe wie C++ (über JNI) ist aber etwas langsamer. Wenn du eher normale Programme machen willst empfehle ich dir Java da man da den Geschwindigkeitsunterschied kaum merkt und es bei dir ja dann auch in der Schule kommt.

Java muss man zudem auch nur einmal kompilieren (Write once run everywhere) C++ muss für viele Systeme neu kompiliert werden (Write once compile everywhere).

Aber am ende kann man sagen das man die eine Sprache recht schnell lernt wenn man die andere kann.

€: habe hier noch einen Wiki Artikel gefunden: Comparison of Java and C++
04/01/2013 17:19 MrSm!th#3
Quote:
Originally Posted by C++
Write once compile everywhere
Und das gilt auch nur sehr eingeschränkt.
04/01/2013 17:34 .SkyneT.#4
Quote:
Originally Posted by Yoshimore View Post
Hi,

ich habe letztens angefangen Java zu lernen weil in der Schule auch Java dran kommen wird und gesagt wurde das Java alles programmieren kann. Dann kam ich aber auf eine Diskussion in einem Forum wo C++ in den Vordergrund gestellt wurde, die Leistung sei schneller, stabiler usw. Nun weiß ich nicht, soll ich lieber Java lernen damit ich in der Schule die Informatik Note auf gut bekomme oder soll ich lieber C++ lernen? Weil im Studium kommt doch auch Java dran oder nicht? Kann ich das dann da nicht nachholen?

lg.
Wenn du es später für die Schule brauchst, lern Java, hast du mehr davon.
04/01/2013 18:52 Benjihz#5
Du musst unter C++ nicht nur für viele Systeme compilieren, sondern die ganzen Versionen auch noch testen.
04/01/2013 19:31 Slice*>#6
Lern lieber C++, ist mehr 1337.
04/02/2013 11:00 Delinquenz#7
Quote:
Und das gilt auch nur sehr eingeschränkt.
Jo, da man zum einen nicht nur das Programm neu kompilieren muss, sondern auch die einzelnen Libs und zudem nicht alle Compiler auf dem gleichen Stand sind.

Quote:
Wenn du es später für die Schule brauchst, lern Java, hast du mehr davon.
Naja, ich bezweifle, dass C++ Kenntnisse ihm das Ganze schwerer machen werden. Zudem kann es sich in der Zukunft als nützlich erweisen, Java und C++ im Lebenslauf stehen zu haben, als nur Java.

Dafür muss Java auf dem Zielrechner installiert sein, sofern wir vom Desktop-Bereich reden. Die C++ Runtime ist bei jeder Grafikkartentreiberinstallation (wow, langes Wort) dabei und wenn es dann doch nicht die passende ist, kann man sie entweder statisch in der .exe linken oder eben mit der Installation liefern. Java hat insgesamt glaube ich einen weniger guten Ruf, da man überall andauernd von Sicherheitslücken etc. liest.

Java kann man soweit ich weiß auch recht leicht dekompilieren, was bei C++ wesentlich schwieriger ist.

Ein weiterer Grund ist natürlich die Performance, die bei Java aufgrund der virtuellen Maschine wesentlich schlechter ist.

Sofern du dann noch was im Embedded-Bereich (Mikrocontroller usw) machen möchtest, kommst du mit Java nicht sehr weit, da du da häufig in "roughem" C die beste Performance aus dem System rausholen musst.

Dafür kann man C++ im mobilen Sektor herzlich wenig gebrauchen, während man mit Java dort recht viel erreichen kann. Ich glaube mit Objective-C kann man für iOS einiges basteln, aber für Android gibts da glaube ich nichts.

Zudem ist C++ insgesamt schwerer zu erlernen als Java, da man bei Java weniger seinen Speicher verwalten muss, da der Garbage Collector den Speicher für dich verwaltet. Andersrum kann man natürlich sagen, dass wenn man C++ erlernt hat, man mit kaum einer Sprache noch Probleme haben wird, sofern es sich nicht um ein komplett anderes Paradigma handelt (funktionale Programmierung)

Ich persönlich halte Java für eine reine Modeerscheinung, die bald wieder weg sein wird, was aber deine Meinung nicht zwingend beeinflussen soll.
04/02/2013 13:19 MrSm!th#8
Quote:
Jo, da man zum einen nicht nur das Programm neu kompilieren muss, sondern auch die einzelnen Libs und zudem nicht alle Compiler auf dem gleichen Stand sind.
Nicht zu vergessen, dass die Aussage sofort an Wert verliert, wenn man mehr nutzt als nur den winzigen C++-Standard.
04/02/2013 16:58 dowhile#9
Quote:
Ich persönlich halte Java für eine reine Modeerscheinung, die bald wieder weg sein wird, was aber deine Meinung nicht zwingend beeinflussen soll.
Java gibt es seit 22 Jahren. Es ist eine der momentan am häufigst eingesetzten Programmiersprachen ([Only registered and activated users can see links. Click Here To Register...]). Java läuft auf mehr als der Hälfte aller Smartphones(?).

Ja, ich kann fast schon die Tage an einer Hand abzählen, bis Java vom Markt verschwunden ist.

Quote:
Ein weiterer Grund ist natürlich die Performance, die bei Java aufgrund der virtuellen Maschine wesentlich schlechter ist.
Stimmt, aber (und die Frage habe ich dir auch schon in einem anderen Forum gestellt, dort aber keine Antwort von dir erhalten): Wie viele C++ Programme hast du schon geschrieben, oder planst du irgendwann zu schreiben, die du aufgrund der schlechteren Performance von Java nicht hättest mit Java realisieren können bzw. könntest?
Damit möchte ich nicht sagen, dass es allgemein zu egal sei, dass Java langsamer ist, sondern dass es für die meisten Anwendungen nur eine untergeordnete Rolle spielt (... und deswegen IMHO kein richtiger Grund ist, Programmieren mit C++ statt Java zu lernen).
04/02/2013 17:39 Delinquenz#10
Quote:
dort aber keine Antwort von dir erhalten
Tut mir leid, werde gleich antworten! Habs ganz vergessen und ist schnell nach unten gerutscht. Wobei sich das mit dieser Antwort dann auch erledigt haben dürfte.

3D-Anwendungen (CAD, Spiele, Editoren usw.) oder generell Anwendungen die auf Embedded-Systemen laufen sollen (ja, da möchte ich später beruflich gern hin), würde ich nicht in Java aufgrund der Performance schreiben. Ich vermute, dass es auch eher suboptimal wäre, Anwendungen, die große Datenmengen handeln, in Java zu schreiben.

Stabile Java-Anwendungen habe ich leider noch nicht viele gesehen (JDownloader, Minecraft), was ich keineswegs der Sprache zuschieben will, jedoch würde durchaus gern mal ein paar Beispiele für die Performance von Java sehen.

Java wird ebenso oft im Serverbereich verwendet, soweit ich mitbekommen habe. Leider habe ich keinen Zugriff auf die Server der jew. Unternehmen, was mir auch diesbezüglich die Einsicht verwehrt.

In der Theorie kann Java sogar schneller laufen, da es sich ja an das jeweilige System anpassen kann, was man von C/C++ nicht behaupten kann, jedoch sieht das in der Praxis nur selten so aus.

Zwei weitere Gründe, die für mich gegen Java sprechen, die aber nichts mit der Performance zu tun haben, sind die Tatsachen, dass Hacking/Exploiting (durchaus erwähnenswert in einem Forum, welches sich als "Gamehacking-Forum" brüstet) mit Java nur sehr umständlich ist und Java zudem soweit ich weiß sehr leicht dekompiliert werden kann.

Was wirklich schön in Java ist, dass Java recht viele Libs dabei hat, was bei C++ langsam aber sicher auch nachgeliefert wird (mit C++14 soll ja Filesystem/Networking kommen usw)
04/03/2013 11:13 dready#11
@Delinquenz

Natürlich hat Java Nachteile, wie jede andere Sprache auch an irgendwelchen Punkten
Persönlich muss ich sagen mag ich Java nicht sonderlich, aber es hat ja durchaus seine Gründe warum ein großteil der Unis darauf umgestiegen sind für das lehren von Programmier Basics

Denk ehrlichgesagt das selbe wie Skynet, wenn er Java in der Schule nutzt gibt es Praktisch keinen Grund warum er nicht damit anfangen sollte. Bessere Noten helfen immer, gerade wenn man in diese Richtung mag. Um die Grundlagen zu lernen ist Java ganz gut, in dem moment wo man Regelmässig an Limitierungen von Java stößt hat man im normalfall dann auch genug Wissen über Programmierung im Allgemeinen um ohne riesige Probleme auf ne Sprache umzusteigen die für einen selbst "schöner" ist.