Frage von DerMaster1, 88

Was sollte ich lieber lernen, Java oder C++?

C++ oder Java Editor?

Java ist eindeutig leichter und schneller zu lernen, aber wenn ich C++ beherrsche, kann ich doch alles, oder nicht?

Antwort
von hghfve, 66

Nein, wenn du C++ beherrschst, kannst du noch lange nicht alles :-)

C++ ist eine eigene Sprache, die sich sogar von normalem C oder C# unterscheidet.

Java zwar auch, allerdings ist Java, wie du sagst, relativ einfach und hinzukommend bauen sehr viele Sprachen auf Java auf, bzw. sind Java sehr ähnlich. Ich kann es zwar nicht, aber meines Wissens nach ist man mit Java nie auf der falschen Seite.

Kommentar von DerMaster1 ,

Damit meinte ich eigentlich, dass C++ nicht so einfach ist, und wenn man das schafft zu lernen, kann man ja alles lernen? habe es nur bisschen unpassend formuliert :) Aber danke für deine Antwot :))

Kommentar von hghfve ,

Kein Problem! Ich denke nur dass es von der Reihenfolge wohl besser wäre als erstes Java zu lernen und dann C++, da mit Java C++ relativ flott geht. 

Antwort
von Darc007, 32

Auch ich empfehle dir, mit c++ anzufangen. Es ist zwar etwas komplizierter, aber da es dir mehr Kontrolle gibt (ob du willst oder nicht) lernst du dabei die Vorgänge kennen, die bei Java oder C# im Hintergrund ablaufen.

Du hast schon recht: wenn du Dinge wie Speicherverwaltung mal kannst, ist es leicht, sie wieder wegzulassen.

Expertenantwort
von TeeTier, Community-Experte für programmieren, 29

C++ ist von den Sprachfeatures und den Konzepten viel umfangreicher, aber für Anfänger auch schwieriger. Java hat eine größere Standardbibliothek und bringt deshalb Anfänger oft schneller ans Ziel.

Trotzdem gibt es Bindings zu Drittbibliotheken meistens auch für C++, aber eigentlich bieten alle großen Projekte auch Java-Wrapper an.

Es kommt immer darauf an, was du machen willst, aber eigentlich sind beide Sprachen mächtig und gut.

An deiner Stelle würde ich ehrlich gesagt beide lernen! Aber nicht gleichzeitig, sondern ein paar Monate versetzt eine nach der anderen. Die Reihenfolge ist eigentlich egal, aber wenn du dich eher für Low-Level-Sachen interessierst, fang mit C++ an, wenn dich hingegen am Anfang "schonen" willst, nimm Java. :)

Viel Spaß und viel Erfolg beim lernen! ;)

PS: Lies dir bitte auch meinen längeren Kommentar auf die Antwort von VBHHerzog durch! Ich glaube, das ist wichtig! :)

Antwort
von HardwareGuru, 31

Java ist objektorientiert und streng typisiert, daher meiner Meinung nach gut für den Anfang.

Kommentar von TeeTier ,

Naja, genau das ist C++ aber auch. :)

Kommentar von HardwareGuru ,

Aber Java ist noch stärker objektorientiert

Kommentar von TeeTier ,

Ich nehme an, du beziehst dich auf das Fehlen von Funktionen außerhalb von Klassen?

Wenn du das so siehst, dann ist C++ aber stärker objektorientiert, da es Mehrfachvererbung gibt (nicht nur bei Interfaces) und sowohl Operatoren, also auch Typkonvertierungen und vieles mehr direkt als Member geschrieben werden können, was in Java oft nur mit Kopfständen möglich ist - wenn überhaupt. :)

Naja, egal ... auf jeden Fall stimme ich dir zu, dass man mit Java nichts falsch machen kann. Und zwar nicht nur am Anfang! :)

Antwort
von Shanks3d2y, 39

C++ ist im Grunde c mit Erweiterungen also ein zwischending von c und c# (das java sehr ähnlich ist)

Ich empfehle dir mit java/c # anzufangen und danach c zu lernen

Denn wenn du c# und c kannst dann ist c++ einfach in 1 Woche dazu zu lernen

Kommentar von DerMaster1 ,

Vielen Dank :)

Kommentar von TeeTier ,

Also das stimmt definitiv nicht. :)

Du unterschätzt massiv wie komplex C++ ist!

C, C# und C++ unterscheiden sich gewaltig! Wenn man über die Basics hinaus kommen will, dann muss man sich wesentlich länger als nur eine Woche damit beschäftigen. Das gilt selbst dann, wenn man schon mehrere Jahre mit C# gearbeitet hat.

Allein das Öffnen einer Datei und dazu das allozieren eines Puffers bekommen Anfänger in C aller meistens selbst nach einem halben Jahr nicht sauber hin! Höchstens auf Hello-World-Niveau, aber nicht so, wie man es in einem "richtigen" Programm machen würde. Und das sind nur 2 Operationen!

Wenn jetzt noch fseek() und fread() hinzu kommen, sind wir ganz schnell bei Spaghetti-Code der vor Fehlern und Speicherlecks nur so wimmelt, und in dem Fehlercodes meist ignoriert werden.

Allein um C programmieren zu können, muss man deutlich mehr als Schleifen und Bedingungen beherrschen. Ansonsten entsteht nämlich spätestens nach 150 Zeilen Quelltext ein wirres Chaos.

Und C++ hat gefühlt noch mal eine Million mehr Features ...

Das alles in einer Woche? Niemals! ;)

Antwort
von VBHHerzog, 39

java ist leichter zu lernen ja

aber wenn du eine programmiersprache kannst, lernst du andere sprachen in wenigen wochen/monaten, weil das prinzip überall gleich ist, nur die syntax muss man noch lernen.

ich würde cir c++ empfehlen, warum findest du im netz, allerdings bin ich auch ein java hater^^

Kommentar von ByteJunkey ,

Ich kann dir in allen Punkten zustimmen :D

Kommentar von VBHHerzog ,

hoffe hasst auch schön den kommentar geliked ;D

Kommentar von ByteJunkey ,

Klar :D

Kommentar von TeeTier ,

Ohhhhh ... ganz starker Widerspruch von meiner Seite!!!

aber wenn du eine programmiersprache kannst, lernst du andere sprachen in wenigen wochen/monaten, weil das prinzip überall gleich ist, nur die syntax muss man noch lernen.

Wenn du das wirklich glaubst, dann hast du aber noch nicht eine einzige Programmiersprache wirklich verinnerlicht! (Nicht böse gemeint!!!)

Die Syntax zweier Programmiersprachen - auch wenn sie sehr ähnlich ist - sagt eigentlich nichts über die Konzepte oder Paradigmen einer Programmiersprache aus!

Du kannst in Java nicht wie in C++ programmieren, und umgekehrt auch nicht! Allein schon das Nicht-Vorhanden-Sein von "finally" in C++, und die damit verbundene Nutzung von RAII, erfordert eine VÖLLIG andere Denkweise! Am Ende werden Funktionen mit Exception-Handling in C++ und in Java völlig anders aussehen:

// Java:
public static void foo() {
try {
// hier evtl. Ausnahme werfen
} finally {
// aufräumen
}
}

// C++:
void foo() {
Cleaner; // aufräumen

// hier evtl. Ausnahme werfen
}

Wie du siehst, haben diese beiden Ansätze GAR NICHTS gemeinsam. :)

Und das ist nicht alles. Da Java i. d. R. die Aufräumarbeiten einem GC überlässt, während man in C++ meistens keinen GC einsetzt, gibt es auch hier einen völlig anderen Denkansatz.

Die Fähigkeiten von Java zum Überladen von Operatoren sind nur rudimentär vorhanden, bei C++ hingegen kann man sogar so exotische Dinge wie den Sequenzoperator (also das Komma) überladen.

Außerdem erlaubt C++ die Definition von Funktionen als Member, oder als Klassenexterne (Friend-)funktion, was richtig krasse Konzepte zur Steuerung der Überladung erlaubt, die jemand - nur mit Java- und ohne C++-Kenntnisse - nicht mal ansatzweise verstehen kann.

Dann das große Thema der Generics ... Verglichen mit C++ Templates sind Java-Generics kinderkram. Nur in den einfachsten Fällen ist die von dir angesprochene Syntax gleich. C++ kennt zwar nicht mal "extends", ist im Großen und Ganzen aber um Faktoren mächtiger. Vor allem, wenn man die sog. "Konzepte" betrachtet, die es leider nicht mehr in C++14 geschafft haben.

Ach, und dann noch die Iteratoren, die in Java für Anfänger viiieeel leichter zu begreifen sind. Bei C++ tun sich da Einsteiger schon schwerer. (hasNext() und next() vs. begin() und end())

Und dann noch die Metaprogrammierung ... kann man bei C++ und Java gar nicht vergleichen!

Anfänger glauben oft, dass wenn man sich die Syntax und ein paar Regeln eingeprägt hat, plötzlich programmieren kann. Dem ist nicht so. Das, was du beschreibst, macht vielleicht 2% von dem aus, was man benötigt, um guten Code schreiben zu können. Vielleicht auch 3%. Mehr nicht.

Es dauert einige Jahre (oder gar Jahrzehnte) bis man dahinter kommt.

Das was du sagst ist ungefähr: "Wenn man auf dem Klavier spielen kann, dann kann man auch Saxophon ... Musikinstrumente machen alle irgendwie Geräusche, also sind alle gleich."

Und glaub mir, C++ und Java sind sich nicht ähnlicher, als Klavier und Saxophon. Dass beide Töne nach Noten produzieren heißt noch lange nicht, dass man sie auch gleich einsetzen kann / muss / sollte / darf.

Von daher: Einspruch! ;)

Kommentar von VBHHerzog ,

kam vlt falsch rüber,

ich meinte das so, das wenn du einmal die logik des programmierens verstehst, das du die sprachen dann erheblich schneller lernst, if u know what i mean :p

Keine passende Antwort gefunden?

Fragen Sie die Community