Java oder C/C++ erlernen

itispep

Newbie
Registriert
Okt. 2014
Beiträge
3
Hallo zusammen,

im Rahmen meines Studiums kann ich einige Wahlkurse belegen. Da ich mich schon seit längerem mit Webentwicklungen beschäftige, hantiere ich häufiger mit PHP und JavaScript herum. Bei dem Wahlkurs, den ich belegen möchte, muss ich mich für Java oder C/C++ entscheiden. Was würdet ihr mir raten?
 
Java. C ist vom Code her nicht schwerer, aber die Werkzeuge sind komplizierter, Fehler werden nicht präzise Ausgegeben (Zeile) und es fehlt an Komfort. Ist frustrierend wenn da nur steht "Speicherfehler", aber keine Angabe wo genau - also greift man zu weiteren tools wie Valgrind. Dafür lernt man mit C wie die Rechnerarchitektur funktioniert - nur rate ich ab erst mal zu warten, da man später im Studium solche Sachen lernt. Hinterher C zu verstehen ist wesentlich einfacher. Mit Java kümmert einen sowas nicht, wird vom Compiler alles abgenommen.

Mit Java wird dir bei allem exakt gesagt was und wo etwas schief gelaufen ist. Musst dich fürs erste auch nicht mit Memory Management rumschlagen und auch nicht mit irgendwelchen tools. Mehr Zeit, bessere Note, denn am Anfang des Studiums muss man erst mal das Zeitmanagement meistern. Wirst überrascht sein wie viele das erste (einfache!) Semester deswegen nicht bestehen.

C ist veraltet. Über die Jahre wurde es zwar erweitert, aber gleicht eher einem Flickwerk durch das man erstmal durchblicken muss. Wird heute nur noch Für Kernels / Treiber benutzt, oder Dinge wo Performance wichtiger ist als die Code Wartbarkeit, C++ eher für Spiele. Falls du aber im Studium die Hardware Schiene fährst, wäre C essentiell (Embedded Systems z.B.)

Entscheide dich daher früh was du später machen willst. Fokus auf Softwareentwicklung oder Hardware / Netzwerk und belege deine Kurse entsprechend.
 
Zuletzt bearbeitet:
Die Frage ist so, wie sie gestellt ist, unbeantwortbar. Ich würde dir raten, zu überlegen, auf welches Ziel du hin arbeiten willst und was dir Freude macht. Die Antwort bekommst du dann automatisch. Niemand kann dir sagen, was du willst. Das kannst du nur selbst. Was du hier hören wirst, sind Propheten ihrer jeweiligen Religion, aber keine brauchbare Erkenntnis.
 
Zuletzt bearbeitet:
Wenns ginge würde ich beides nehmen, C/C++ ister sicherlicher weiter verbreitet als Java.
Java gefällt mir etwas mehr. Kommt drauf an was du später vor hast. Generell würde ich sagen machst du mit beiden nichts falsch, tendenz eher zu C nehmen.
 
Wenn du dich schon mit Webentwicklung beschäftigt hast, würde ich dir hier zu Java raten, um später dann ggfs. mit JavaEE weiterzumachen.
 
dcc22 schrieb:
C ist veraltet ... Wird heute nur noch Für Kernels / Treiber benutzt

Das ist ein Beispiel für das, was ich mit Religion meine. C ist mit Abstand die am weitesten verbreitete Programmiersprache und wird für alle Bereiche der Softwareentwicklung verwendet. Aber Tatsachen zählen in solchen Threads nicht, sondern Dogmen.
 
Webentwicklung, Multi-platform -> Java
Maschinennahe, effiziente Anwendungen -> C++
 
Unsererseits glaube ich schlecht beantwortbar.
Keiner von uns, außer dir, weiß was dich interessiert.

Java mit C zu vergleichen ist wie Äpfel mit Birnen zu vergleichen.
Jede von den 2 Sprachen hat ihr eigenes "Einsatzgebiet".

Intresse in Richtung Softwareprogrammierung -> Java
Intresse in Richtung hardwarenaher Softwareprogrammierung -> C
 
Ich würde auch zu Java tendieren, der Einstieg ist einfacher als C. Zu C++ kann ich nichts sagen, nie gelernt.Soll aber ähnlich wie Java extrem schwer zu meistern sein. Also wenn es später tief in die Materie geht.

Generell ist es aber schwuppe für was du dich entscheidest. Niemand, und auch du nicht können vorhersagen, wo du später im Berufsleben landest, evtl brauchst du alle drei Sprachen nicht mehr und arbeitest mit anderen Sprachen, wie Python oder PHP/Javascript. Wichtig ist, dass du fähig bist in einem angemessenen Tempo dich in neue Sprachen einzuarbeiten.
 
java

weil der einstieg wesentlich leichter ist als bei c++.

versuch in c++ nur mal alle dateien aus einem ordner auszulesen...katastrophe
 
Elite_Warrior schrieb:
Wenns ginge würde ich beides nehmen, C/C++ ister sicherlicher weiter verbreitet als Java.
Java gefällt mir etwas mehr. Kommt drauf an was du später vor hast. Generell würde ich sagen machst du mit beiden nichts falsch, tendenz eher zu C nehmen.

Glaubst du ja selbst nicht :)
Java ist überall. Auf dem Handy, Tablet, fast jedem Touchscreen wie an der Packstation usw.
C/C++ ist speziell auf eine Plattform ausgelegt und das wird heutzutage immer seltener. Java Code kannst überall starten, ohne irgendetwas zu portieren (nur in sehr speziellen Szenarien).

Selbst Apple dreht C langsam den Rücken zu und entwickelt eigene Sprachen die zwar darauf basieren, aber wesentlich Menschenfreundlicher sind.
Ergänzung ()

asdfman schrieb:
Das ist ein Beispiel für das, was ich mit Religion meine. C ist mit Abstand die am weitesten verbreitete Programmiersprache und wird für alle Bereiche der Softwareentwicklung verwendet. Aber Tatsachen zählen in solchen Threads nicht, sondern Dogmen.

Für einen Windows User mag dies zutreffen, nur verlagert sich selbst dort alles in Richtung Web/Cloud und Multiplattform, egal wie sehr MS es blockt. Das OS selbst ist großteils C, die weiteren Programme, vor allem Freeware wie LibreOffice, TorrentClients usw. eher nicht.

C kommt nur zum Einsatz wenn es sich lohnt den Aufwand zu betreiben, d.h. eher in Großprojekten globaler Natur (Browser, Betriebssysteme )...

Die eigentliche Verbreitung erfährst du über die Jobausschreibungen. Da sieht es momentan eher zu 90% für Java / Web aus.
 
Zuletzt bearbeitet:
Eine Frage die nur zu Streitereien führen kann im Forum ;-)

Meiner Meinung nach sollte man zuerst in C Programmieren und danach in Java Softwareentwicklung lernen. Der Grund dafür ist dass man zuerst sehen können soll was es für Probleme geben kann und gibt (in C muss man eben vieles noch in Handarbeit machen). Danach erlernt man in einer leichteren Sprache (es muss in Java auf vieles nicht geachtet werden dass einem in C das Genick brechen kann) wie das ganze im größeren Kontext Verwendung findet.
 
vielen dank für die schnellen + vielen Antworten :)

Das Votum war ja relativ eindeutig und ich denke, dann sollte es wohl Java sein. Die Frage, was ich damit später machen möchte, kann ich halt leider nicht wirklich beantworten, da es für mich eher ein Hobby ist und ich es nicht beruflich ausüben möchte. Und da es eher ein Hobby ist, soll es natürlich auch Spaß machen und ich sollte nicht allzu schnell gefrustet sein.

Im Grunde möchte ich nur eine Abwechslung zu meinen anderen Vorlesungen und vor allem einen fundierten sowie soliden Einstieg in die Programmierung, damit mein lückenhaftes Halbwissen mal ein Ende hat.
 
@Henni
Das könnte ich umgekehrt argumentieren... Wozu mit einer schweren anfangen, wenn es auch leichter geht. Was mich persönlich an C am meisten stört sind "Zeiger", denn es kann dabei so viel schief gehen und man muss so vieles beachten. Da kann es schnell passieren, dass man nicht weiß was überhaupt los ist. Bei Java muss es einen nicht kümmern und man kann sich auf "wichtigere" Sachen konzentrieren.

@itispep
Das ist ja das schöne an Java. Du kannst dann sehr vieles tun. Ich habe mit Spielen angefangen und programmiere nun Webseiten.
 
Was hast du denn für ein Studium wenn du programmieren als Hobby ansiehst? Oder studierst du weil du einfach lust dazu hast ohne berufliche Hintergedanken?
 
dcc22 schrieb:
Glaubst du ja selbst nicht :)
Java ist überall. Auf dem Handy, Tablet, fast jedem Touchscreen wie an der Packstation usw.
C/C++ ist speziell auf eine Plattform ausgelegt und das wird heutzutage immer seltener. Java Code kannst überall starten, ohne irgendetwas zu portieren (nur in sehr speziellen Szenarien).

Religion sowie Dogma. Diese Behauptung hat nur Bestand, wenn man von einer pervers verdrehten Neudefinition von Plattformunabhängigkeit ausgeht. C-Compiler gibt es für mehr Plattformen als irgendjemand in diesem Forum oder sonstwo aufzählen kann und ein standardkonformes C-Programm läuft auf jeder dieser Plattformen. Java VMs gibt es für? i386? x64? ARM vielleicht noch. Windows? GNU/Linux? Solaris? Android? Damit habe ich vermutlich mal so 50% der Plattformen abgedeckt, die man mit Java erreicht.


Ergänzung ()

Für einen Windows User mag dies zutreffen

Und das ist ja nun mal so lächerlich, dass ich mir jeden Kommentar sparen kann.

----

Was ich mit diesem Post speziell ausdrücken will, ist kaum, dass C die beste Wahl ist, sondern vielmehr, dass man sich alles so zurecht drehen kann, dass es in den eigenen verblendeten Augen wie die eine Lösung für alle Probleme der Menschheit aussieht.

Keine deiner zwei Alternativen ist prinzipiell die richtige oder falsche Wahl. Aber jedes Argument das hier für die eine oder andere Seite gebracht wird, ist am Ende bedeutungslos für den Frager.
 
ich studiere Chemie und natürlich kann man sowas auch mit einander verknüpfen (computational chemistry etc.), allerdings habe ich mich in einem anderen Bereich vertieft. Ein paar Kurse zu belegen, die nichts mit Chemie zu tun haben, ist immer ganz angenehm und da ich, wie gesagt, mich schon seit längerem mit Webentwicklungen beschäftige, lag es irgendwie nahe, mal zu versuchen eine Sprache fundiert zu erlernen.
 
ich studiere Chemie
Ich hab nen Bekannten der irgendwas mit BioChemie gemacht hat und nun für seinen Dr. sehr rechenintensive und parallele Berechnungen programmiert. Irgendwas mit Eiweißketten.. ka. Wenn dich diese CUDA/OpenCL HPC Bereiche Interessieren wo man wirklich extrem große Berechnungen durchführt dann (und meiner Meinung nach nur dann) würde ich C/C++ wählen an deiner Stelle. Ansonsten ist Java imho der nettere Einstieg.
Ein großes Plusargument für Java ist meiner Meinung nach: Man lernt wahrscheinlich von vorn herein vernünftiges OOP mit modernen Konzepten. In einem Kurs der C/C++ heißt ist die Gefahr sehr groß, dass jemand im Grunde über C redet und später hier und da ein class einwirft. Dann bekommst du imho den falschen Ansatz beigebracht, denn selbst in µC und sehr performance-kritischen Bereichen sollte man (imho) heutzutage modernes C++ programmieren. Dh wenn du anfangs Java gelernt hast und später mal C++ brauchst dann "denkst" du gleich OOP und C++ passend.
 
Zuletzt bearbeitet:
Du solltest dich eher Fragen, in bzw. was was für einem Umfeld du später arbeiten willst.

- Eher Buzzword-getrieben mit Anzugträgern?
- Eher geekig mit hohem technischem Background?

Ersteres wirst du bei Java finden. Dort wirst du beruflich zu 99% mit der Webentwicklung, also mit JEE zu tun haben. Bedenke: JEE != Java aus dem Studium. Schau dir also besser auch schnell Webentwicklung mit JEE an und Frage ich dann lieber:
JEE oder C/C++?

C++ und Spieleentwicklung ist unrealistisch sofern du nicht ins Ausland gehst. Hier in Deutschland werden i.d.R. nur App-Spiele oder Browsergames entwickelt und das geschieht i.d.R. mit Java (JEE besser gesagt).
 
baizon schrieb:
@Henni
Das könnte ich umgekehrt argumentieren... Wozu mit einer schweren anfangen, wenn es auch leichter geht. Was mich persönlich an C am meisten stört sind "Zeiger", denn es kann dabei so viel schief gehen und man muss so vieles beachten. Da kann es schnell passieren, dass man nicht weiß was überhaupt los ist. Bei Java muss es einen nicht kümmern und man kann sich auf "wichtigere" Sachen konzentrieren.

Grundsätzlich bin ich sowieso dagegen am Anfang eine Programmiersprache zu lernen - anfangen sollte man mit Programmierkonzepten und diese anhand von Beispielen nahe bringen (womit man quasi automatisch eine Programmiersprache erlernt aber (hoffentlich) auch offen genug sein sollte es leicht auf andere Programmiersprachen zu übertragen). Und die meisten Grundkonzepte erlernt man am besten mit C (und ja, Pointer (Zeiger) gehören da für mich dazu). Ist auch der Grund wieso ich jeden Anfänger dazu raten würde nicht mit einer IDE wie Eclipse, Visual Studio, IntelliJ, Netbeans usw. anzufangen sondern mit Editor der Syntaxhervorhebung und automatische Einrückung beherrscht (VIM ;-)). Erst wenn man diese Grundkenntnisse hat sollte man anfangen Softwareentwicklung zu lernen. (Deshalb auch meine Unterscheidung oben). Um diesen Schritt zu unterstützen sollte die Programmiersprache als auch die IDE so einfach wie möglich zu benutzen sein. Hier ist dann z.B. Java mit Eclipse eine Möglichkeit.

PS: Wie oft habe ich Java Programmierer erlebt die bei EJB z.B. ganz überrascht über den Unterschied call-by-value und call-by-reference waren. Jemand der zumindest Grundkenntnisse in C (o.ä.) hat kann damit eben schon etwas anfangen.
 
Zurück
Oben