staging.inyokaproject.org

C++ oder Java

Status: Gelöst | Ubuntu-Version: Ubuntu
Antworten |

sharkattack

Avatar von sharkattack

Anmeldungsdatum:
7. April 2005

Beiträge: 444

Hi

Ich bin gerade dabei mit Programmieren anzufangen. Was würdet ihr mir empfehlen? C++ oder Java?

basti33

Avatar von basti33

Anmeldungsdatum:
20. November 2005

Beiträge: 538

Anfangen würde ich mit etwas einfacherem wie Pascal oder Python.

dentaku

Anmeldungsdatum:
31. Januar 2005

Beiträge: 3777

Wenn Du viiiel Zeit hast, mag der Tipp mit einer einfacheren Sprache anzufangen richtig sein. Aber ansonsten wirst DU enttäuscht sein, dass Du nicht gleich eine "richtige" Sprache gelernt hast (ja,ja, ich weiss: jeder meint "seine" Sprache wäre die "richtige"). Insofern sind Deine Vorschläge mit C++ oder Java schon ganz gut. Ich würde Dir Java zusammen mit der Eclipse IDE empfehlen. Mit dem Java SDK hast Du schon praktisch alles dabei, was Du brauchst (IO, Netzwerk, Grafik, XML, etc.). Und die Eclipse IDE ist sowas von Genial, dass selbst olle VisualBasic Verschwörer heulen, dass es kein VB für Eclipse gibt. Du kannst ja mal in den Tutorials rumschnuppern.

Möchtest Du denn in eine ganz bestimmte Richtung mit Deinen Programmen?

lacarpe

Avatar von lacarpe

Anmeldungsdatum:
21. Juni 2006

Beiträge: 340

Ich habe beides (als Anfänger) gelernt und bin mit beidem zurecht gekommen. Von der Syntax sind sich die beiden relativ ähnlich. Wenn du das eine gelernt hast, kannst du auch das andere lernen. Die Philosophien sind etwas anders. C++ ist erheblich schneller, da die Programme in Maschinensprache compiliert sind, Javaprogramme werden dagegen in Teilen interpretiert. Schnelle, grafikaufwändige Spiele sind mit Java z.B. nicht umsetzbar. Dafür muss man bei C++ mit der Zeigertechnologie aufpassen, dagegen ist Java robuster (vielleicht von daher einfacher für Anfänger). Ein großer Vorteil von Java ist die Plattformunabhängigkeit: Deine Programme laufen aus dem Stand sowohl auf Linux als auch Windows als auch auf anderen Systemen. Das war für mich Klasse, als ich von Win zu Linux wechselte. Meine Programme liefen trotzdem. Und dentaku hat Recht: Java hat eine sehr umfassende Klassenbibliothek, alles wesentliche ist quasi dabei.

Viel Spaß,
lacarpe

haraldkl

Avatar von haraldkl

Anmeldungsdatum:
21. Juli 2005

Beiträge: 1903

Siehe dazu zum Beispiel auch diesen Thread: anfängerprogrammiersprache? 😉

dentaku

Anmeldungsdatum:
31. Januar 2005

Beiträge: 3777

lacarpe hat geschrieben:

Ich habe beides (als Anfänger) gelernt und bin mit beidem zurecht gekommen. Von der Syntax sind sich die beiden relativ ähnlich. Wenn du das eine gelernt hast, kannst du auch das andere lernen. Die Philosophien sind etwas anders. C++ ist erheblich schneller, da die Programme in Maschinensprache compiliert sind, Javaprogramme werden dagegen in Teilen interpretiert. Schnelle, grafikaufwändige Spiele sind mit Java z.B. nicht umsetzbar. Dafür muss man bei C++ mit der Zeigertechnologie aufpassen, dagegen ist Java robuster (vielleicht von daher einfacher für Anfänger). Ein großer Vorteil von Java ist die Plattformunabhängigkeit: Deine Programme laufen aus dem Stand sowohl auf Linux als auch Windows als auch auf anderen Systemen. Das war für mich Klasse, als ich von Win zu Linux wechselte. Meine Programme liefen trotzdem. Und dentaku hat Recht: Java hat eine sehr umfassende Klassenbibliothek, alles wesentliche ist quasi dabei.

Viel Spaß,
lacarpe

^

Nur damit es nicht zu Missverständnissen kommt: C++ ist nicht "erheblich" schneller als Java. Schnelle, grafikaufwändige Spiele sind mit Java sehr wohl umsetzbar. Im Gegenteil: die aktuelle Sun 1.5 HotSpot VM kann erheblich schnelleren Code produzieren als C++. Das Argument des schlechten Performance von Java galt vor 5 Jahren mal. Seit aber die JVM nicht mehr interpretiert und auch kein JIT Compiler mehr eingesetzt wird, sondern der HotSpot compiler, können Java Programme genauso schnell und noch schneller laufen als z.B. C/C++ Programme. Es wäre einige Beispiele zu nennen, worin die Gründe dafür liegen. Aber vielleicht ist dieser hier schon plausibel genug: die JVM kompiliert den code während der Programmlaufzeit. Und es dürfte auch ohne Vorwissen einleuchten, dass eine Kompilation auf die spezifische Hardware ein besseres Resultat liefern kann als eine allgemeine Kompilation für z.B. 386er, 686er, etc. Weiterhin wird code, der besonders oft durchlaufen wird hochoptimiert, was ein statischer compiler eben nie leisten kann.

Wir haben (aus lizenzrechtlichen Gründen) ein zuvor eingesetztes C++ Programm in Java umgeschrieben (sehr grosse Datenmengen mit umfangreichen Berechnungen) und haben ein Geschwindigkeitsgewinn von Faktor 30 (!) erzielt. Sicherlich nicht nur durch die 1:1 Umsetzung auf Java, aber wir haben inzwischen den 1. Prototypen eines weiteren Programmaustausches (noch mehr Berechnungen) der sogar noch einen deutlichen Vorsprung zeigt.

mythos

Anmeldungsdatum:
14. Juli 2006

Beiträge: 1080

keine grafikaufwendigen, schnellen Spiele in Java möglich ?
da hat wer noch nie etwas von JME gehört www.jmonkeyengine.com ~_^

Baghira

Avatar von Baghira

Anmeldungsdatum:
13. April 2006

Beiträge: 123

Ich hab' mich mit C++ am Anfang viel leichter getan, auch weil es für Java kaum Einsteigerliteratur gibt; aber grundsätzlich und immer bleibt es eine Geschmacksfrage.

Hilfreich ist es allemal wenn Du das Konzept hinter den beiden Sprachen kennst:

C++ ist einfach nur ein objektorientierter Aufsatz auf den "Highlevel-Assembler" C. Man hat das eh schon umfangreiche C genommen und es mit bewährten Sprachelementen (Klassen, Schablonen, Inline-Funktioen) aufpoliert und die Standardbibliothek mit elementaren Datenstrukturen und Algorithmen ausgestattet. Um aber ein wirklich nützliches Programm schreiben zu können, musst Du es erst gegen einige Fremdbibliotheken linken.

Java bemüht sich dagegen um eine eher beschränkte Auswahl von Sprachelementen, die Objektorientierung ist strenger, "zwielichtige" Elemente wie Zeiger kommen gar nicht vor, ein Garbage Collector erledigt die Speicherverwaltung semiautomatisch usw. Java-Code muß außerdem nicht für jede Plattform neu kompiliert werden. Und: Bei Java sind die Batterien schon mit drin; Du musst dich also nicht erst das www nach einer passenden Audio/Gui/Thread - Bibliothek machen, bevor Du dein erstes grösseres Programm zum Laufen bringen kannst.

lacarpe

Avatar von lacarpe

Anmeldungsdatum:
21. Juni 2006

Beiträge: 340

dentaku hat geschrieben:

Das Argument des schlechten Performance von Java galt vor 5 Jahren mal. Seit aber die JVM nicht mehr interpretiert und auch kein JIT Compiler mehr eingesetzt wird, sondern der HotSpot compiler, können Java Programme genauso schnell und noch schneller laufen als z.B. C/C++ Programme. Es wäre einige Beispiele zu nennen, worin die Gründe dafür liegen. Aber vielleicht ist dieser hier schon plausibel genug: die JVM kompiliert den code während der Programmlaufzeit.

Hallo dentaku,

da bin ich wohl (als Nichtprofi) tatsächlich noch auf dem Stand von gestern. Mir kommen java-Programme aber immer noch langsamer vor.... (ich nutze die JVM von Sun). Aber gut. Bedeutet das, was du schreibst, dass die JVM nun gar nicht mehr interpretiert und den Java-Code in Maschinensprache-Binärcode übersetzt? Das wäre natürlich schick. Obwohl ich es kaum glauben kann, denn dafür das vollständig vorweg compiliert wird, ist der Startvorgang doch ziemlich schnell. Aber vielleicht darf ich ja auch Bauklötze staunen 😉

@mythos:
Wir haben uns in der Firma (in der Tat vor 4 Jahren) mit der Langsamkeit von Java-Frontends (nichts besonderes) rumgeplagt. An Spiele war gar nicht zu denken. Nun gut, ich lasse mich belehren 😉

Gruß,
lacarpe

P.S. Wenn es so stimmt, wären das für mich dann noch mehr Gründe, eher JAVA zu wählen.

sharkattack

(Themenstarter)
Avatar von sharkattack

Anmeldungsdatum:
7. April 2005

Beiträge: 444

Hi

Danke erstmal für die Antworten. Ich hab mich noch nicht entschieden. Werde noch ein bisschen im Internet stöbern. Was ich bei C++ gut finde, ist, dass es lauft, ohne dass man die Software von einem Hersteller (Sun) installieren muss. Bei Java ist halt gut, dass es direkt auf allen System läuft, die Java installiert haben.

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

dentaku hat geschrieben:

Wenn Du viiiel Zeit hast, mag der Tipp mit einer einfacheren Sprache anzufangen richtig sein. Aber ansonsten wirst DU enttäuscht sein, dass Du nicht gleich eine "richtige" Sprache gelernt hast (ja,ja, ich weiss: jeder meint "seine" Sprache wäre die "richtige").

Sag mir mal, was man mit Python oder Pascal nicht tun kann. Die Liste wird wahrscheinlich ziemlich kurz sein...
Es ist auch nicht mehr so, daß man ohne C++ oder Java Kenntnisse "in der Welt da draußen" schlecht dasteht. Es gibt mittlerweile sogar Softwarefirmen, die als Anstellungsvorrausetzung Kenntnisse in Python oder Ruby fordern.
Ich habe nicht dagegen, daß Einsteiger C++ lernen. Aber empfehlen würde ich ganz klar eine einfache Skriptsprache wie Python oder Ruby. Insbesondere Einsteiger kommen damit schneller zu ersten Erfolgserlebnissen.

dentaku hat geschrieben:

Seit aber die JVM nicht mehr interpretiert und auch kein JIT Compiler mehr eingesetzt wird, sondern der HotSpot compiler

Der HotSpot Compiler ist ein Just-In-Time Compiler. Nur einer der besseren Sorte...

Gruß
lunar

Zando

Anmeldungsdatum:
18. August 2005

Beiträge: Zähle...

sharkattack hat geschrieben:

Danke erstmal für die Antworten. Ich hab mich noch nicht entschieden. Werde noch ein bisschen im Internet stöbern. Was ich bei C++ gut finde, ist, dass es lauft, ohne dass man die Software von einem Hersteller (Sun) installieren muss.

Natürlich musst du die Software des Betriebssystemherstellers haben, für welches das Programm kompiliert wurde 😉 Aber ich weiß, was du meinst. Was ich meine ist, dass man so oder so immer irgendeine bestimmt Software benötigt. Und Java haben heutzutage sehr viele installiert. (Ein PDF-Reader wird ja praktisch auch vorausgesetzt heutzutage.)

So long
Carsten

lacarpe

Avatar von lacarpe

Anmeldungsdatum:
21. Juni 2006

Beiträge: 340

in Ergänzung zu Zando:

Früher habe ich für Windows mit der Borland_IDE C++ Programme geschrieben. Da musste ich stets spezifische Borland-dlls mitliefern, damit der Kram laufen konnte. Also du musst in jedem Fall mehr haben als nur die einfache *.exe (unter Windows), die beim compilieren entsteht. Aber Java draufzuspielen ist natürlich noch mal ne kleine Nummer mehr "Aufwand".

Gruß,
lacarpe

sharkattack

(Themenstarter)
Avatar von sharkattack

Anmeldungsdatum:
7. April 2005

Beiträge: 444

Hi

Hier bin nochmal kurz ich. Mich würde es mal interessieren mit was die meisten Gnome Programme geschrieben wurden. Ich nehme mal an mit C oder C++, oder? Ich möchte nämlich in erster Linie Programme für Linux (Gnome) schreiben.

Chaoswind

Anmeldungsdatum:
10. August 2005

Beiträge: 544

Gnome wird hauptsächlich in C entwickelt. Was nicht heisst, das du nicht auch in anderen Sprachen für Gnome entwickeln kannst. Du kannst auch in Python Gnome-Programme entwickeln, die noetigen Bibliotheken dafür existieren.

Antworten |