C++ oder Java kann mich nicht entscheiden.



  • Hallo Liebe Community. Wie oben schon beschrieben würd ich gerne eine Programmiersprache lernen. Die Zeit und die Motivation dies durchzuziehen denke ich habe ich und nun stellt sich nur noch die Frage welche dieser 2 tollen Sprachen soll ich nehmen.

    Ich hab mal gehört das im laufe der Zeit extrem viel mit Java gearbeitet wird und das viele Programme zb. bei Druckern etc mit Java erstellt werden oder auch im laufe der Zeit sich das in die Schiene einordnen soll. Jetzt hab ich ein bisschen die befürchtung dass, wenn ich C++ lerne, dass es später (also in einigen Jahren vllt.) garnicht mehr aktuell ist und nicht mehr von nöten ist.

    Ich weiß über die beiden Sprachen nur das sie sich doch recht ähnlich sind, doch weiß ich weder Vorteile von Java bzw. von C++ weshalb ich ausgerechnet diese Sprache nehmen sollte.

    Desweiteren frage ich mich, was man als einzelnde Person alles mit diesen Sprachen erreichen kann, denn ich denke mal ein sehr großes Projekt etc. lässt sich alleine schwer realisieren.

    Für C++ habe ich mich ein bisschen wegen Büchern etc. umgeschaut und würde glaube ich "C++ lernen und professionell anwenden" nehmen könnt ihr mir das als Anfänger empfehlen? ( geringe Grundkenntnisse habe ich bereits durch AutoIT,PureBasic aber wirklich nicht viel)

    Ich danke euch allen schonmal vielmals für eure Antworten
    MFG TurboGolom



  • TurboGolom schrieb:

    Hallo Liebe Community.

    Hallo TurboGolom!

    Diese Frage kann so ohne weiteres nicht beantwortet werden. Das hängt immer davon ab, was Du eigentlich machen willst. Für bestimmte Dinge ist C++ besser geeignet, für andere Java. Java kommt sprachbedingt mit etwas Overhead daher (sowohl Geschwindigkeits- als auch Speicher-technisch). Dafür ist es relativ leicht anzuwenden und die große "Standardbibliothek" bietet ordentlich Funktionalität. C++ ist komplexer und auch, was das Abstraktions-Spektrum angeht, umfangreicher -- also low-level + high-level. In C++ fällt die Standardbibliothek etwas dünner aus. Man kann sich aber aus anderen Quellen beliebte Bibliotheken dazu holen (zB Boost, Poco, Qt, ...), die einem das Leben etwas leichter machen. In C++ gibt es aber auch -- bedingt durch das Motto "trust the programmer" (der Programmierer weiß schon was er tut) -- viel mehr Fallen in die man als Anfänger tappen kann. Wo man in Java von der Virtual Machine durch Laufzeit-Überprüfungen (wie zB ob ein Index für ein Array-Zugriff nicht zu groß ist, oder ob eine Referenz auch keine Nullreferenz ist) geschützt wird, bleibt so etwas in C++ größtenteils dem Programmierer überlassen. Wenn da der Programmierer Mist baut, dann kann schonmal das Programm abstürzen, ohne dass man leicht nachvollziehen kann, was eigentlich schief gegangen ist -- wenn man es nicht gerade im Debugger laufen lässt. Und es dauert wahrscheinlich eine Weile länger, bis man mit C++ richtig umgehen kann... Aber dafür kann man mit ihr auch tolle Sachen anstellen (Blödsinn natürlich auch). Ich verwende C++ für rechenintensive Programme (zur Berechnung von Lösung von großen, nichtlinearen Ausgleichsproblemen oder Bildverarbeitungsalgorithmen und co).

    TurboGolom schrieb:

    Jetzt hab ich ein bisschen die befürchtung dass, wenn ich C++ lerne, dass es später (also in einigen Jahren vllt.) garnicht mehr aktuell ist und nicht mehr von nöten ist.

    Das wird so schnell nicht passieren. Weder mit C++ noch mit Java.

    TurboGolom schrieb:

    Ich weiß über die beiden Sprachen nur das sie sich doch recht ähnlich sind,

    Das stimmt schonmal nicht. Sie sehen nur auf den ersten Blick ähnlich aus. Aber viellecht ist das auch eine Definitionsache von "ähnlich". Aber ich würde behaupte, dass Neulinge die Unterschiede unterschätzen.

    TurboGolom schrieb:

    Für C++ habe ich mich ein bisschen wegen Büchern etc. umgeschaut und würde glaube ich "C++ lernen und professionell anwenden" nehmen könnt ihr mir das als Anfänger empfehlen?

    Du kannst ja mal "Programming -- Principles and Practice using C++" von B. Stroustrup probieren.

    kk



  • Wenn du noch garnicht programmieren kannst, dann fang mit Java an oder noch was einfacheres z.B. Basic oder Python.



  • C++ oder Java kann mich nicht entscheiden.

    Wirf eine Muenze!



  • C++ oder Java kann mich nicht entscheiden.

    Lern C# 🙂



  • also soweit ich das beurteilen kann (habe mit beiden nicht viel erfahrung) bietet java eine sauberer designte/größere/konsitentere stdlib. auf der anderen seite dann eine nativ kompilierende sprache "c++" dessen vorteil die performance ist. ein direkter vergleich ist so unmöglich.

    evtl. könnte man sagen: willst du wissen wie gängigerweise klassenmember benannt werden nimm java, ist dir das latte und du willst dass es möglichst schnell läuft nimm c++.



  • dot schrieb:

    C++ oder Java kann mich nicht entscheiden.

    Lern C# 🙂

    gute idee, lass uns noch mehr unsicherheit verbreiten. zur auswahl stünden auch noch php/ocaml/js/as/c/erlang/haskell falls du dich jetzt immer noch nicht entscheiden konntest nimm brainfuck.



  • __-- schrieb:

    dot schrieb:

    C++ oder Java kann mich nicht entscheiden.

    Lern C# 🙂

    gute idee, lass uns noch mehr unsicherheit verbreiten. zur auswahl stünden auch noch php/ocaml/js/as/c/erlang/haskell falls du dich jetzt immer noch nicht entscheiden konntest nimm brainfuck.

    Da Microsoft bald mit Windows 8 das gesamte Betriebssystem virtualisieren will und dann die ganze Software möglichst unter .Net laufen sollte, ist die Antwort von dot bezügl. C# gar nicht so falsch.

    Denn wenn das eintritt, dann wird C# eine führende Rolle bei Software für Windows einnehmen.



  • c# ist doch genauso beschissen wie java



  • __-- schrieb:

    c# ist doch genauso beschissen wie java

    Das ist ja egal, wenn du als Entwickler auf C# Zwangsumsteigen muß, weil das Windows Betriebssystem 8 und später das so vorgibt.



  • __-- schrieb:

    c# ist doch genauso beschissen wie java

    Nein, eben genau nicht. C# ist das was Java hätte sein sollen. Darum ja auch mein Ratschlag 😉



  • dot hat recht schrieb:

    __-- schrieb:

    c# ist doch genauso beschissen wie java

    Das ist ja egal, wenn du als Entwickler auf C# Zwangsumsteigen muß, weil das Windows Betriebssystem 8 und später das so vorgibt.

    wie du im beruf und ausbildung subforum nachlesen kannst hab ich mir meine autonomität bewahrt. ich verdiene kein geld damit für windows software zu schreiben. und schon gar nicht mit java bzw. c#. da geh ich lieber ans fließband oder baue kugelschreiberzusammen als mich damit mittel/langfristig zu beschäftigen.



  • dot schrieb:

    __-- schrieb:

    c# ist doch genauso beschissen wie java

    Nein, eben genau nicht. C# ist das was Java hätte sein sollen. Darum ja auch mein Ratschlag 😉

    Das merkt man vor allem, wenn man C#-Programme hat, die für verschiedene Versionen vom .KACK-Framework erstellt wurden. Für jede Version muss man auch die passende Framework-Version installiert haben. Was für ein Müll. Unter Windows der absoulte Graus.

    Java ist da um Längen voraus. Okay, Mono macht es auch besser...



  • Tachyon schrieb:

    Das merkt man vor allem, wenn man C#-Programme hat, die für verschiedene Versionen vom .KACK-Framework erstellt wurden. Für jede Version muss man auch die passende Framework-Version installiert haben. Was für ein Müll. Unter Windows der absoulte Graus.

    Java ist da um Längen voraus. Okay, Mono macht es auch besser...

    Stimmt, deswegen bringen ja einige Programme ihre spezielle JRE mit, damit ja die richtige (sprich kompatible) Java-Version vorhanden ist. Ich habe selbst zu Windows 7 Zeiten etliche JRE-Versionen auf dem Rechner. Ist natürlich besser als .Net wo es 3 wichtige Versionen gibt (1.1, 3.5, 4.0 - alle anderen können mittels Update auf diese Versionen hochgesetzt werden; Innerhalb dieser Versionen sollten Programme mit dem Framework kompatibel sein).



  • asc schrieb:

    Stimmt, deswegen bringen ja einige Programme ihre spezielle JRE mit, damit ja die richtige (sprich kompatible) Java-Version vorhanden ist. ...

    Nenn mal Beispiele. Ich hatte bis jetzt nur Programme, die mit der jeweils aktuellsten JRE wunderbar liefen. Eigene JREs jatte da bis jetzt keins mitgebracht.



  • Beispiel: Matlab



  • Tachyon schrieb:

    Nenn mal Beispiele.

    z.B.: Araxis Merge, AMD RAIDXpert...

    P.S: Und ja, ich hatte in der Vergangenheit schon einige Programme die mit der jeweils aktuellen JRE nicht liefen, zu dem Zeitpunkt war es aber auch nicht unüblich dutzende verschiedene JRE auf dem Rechner parallel zu haben (Dutzend ist vielleicht übertrieben, ich hatte auf meinen letzten XP insgesamt 10 gezählt [Mit weit mehr benötigten Platzverbrauch als alle .Net Versionen damals zusammen (1.1, 3.5 waren auf dem PC)], ist aber nun auch schon etwas her).

    .Net definiert ganz klar wann eine Abwärtskompatibilität aufgegeben wird, daher auch mehrere Version (wie gesagt, derzeit 3 Stück: 1.1 (1.0,1.1), 3.5 (2.0,3.0,3.5) und 4.0. Ein altes Programm kann auf einer neuen Version laufen, dies ist aber nicht zwingend gegeben (sofern die entsprechende .Net Version gefunden wird, wird diese daher auch verwendet).

    Bei Java gab es gerade am Anfang einige massive Brüche, ohne das irgendein Mechanismus in der Anfangszeit dieses verhindert hat. Daher wurde dann teilweise für Versionssprünge neue Verzeichnisse angelegt, vielleicht haben sie dies inzwischen (etwas) im Griff.

    Ich persönlich habe mit dem .Net-Versionierungen keine Probleme, wenigstens ist dort klar definiert wo eine Kompatibilität gegeben ist, und wo nicht.



  • Viele Programme bringen ihre eigene JRE nicht mit, weil sie inkompatibel zu anderen wären, sondern nur aus dem Grund, falls der User noch keine JRE installiert hat. Ich hab auch ungefähr eine Milliarde msvcrt.dlls u.Ä. auf meinem Rechner, genau das gleiche.



  • gastantwort schrieb:

    Viele Programme bringen ihre eigene JRE nicht mit, weil sie inkompatibel zu anderen wären, sondern nur aus dem Grund, falls der User noch keine JRE installiert hat...

    Dann müssten sie diese aber nicht in ihr eigenes Verzeichnis kopieren, sondern sollten dies a) prüfen, und b) in die normalen Verzeichnisse installieren (so das keine unnötigen Versionen auf dem PC liegen).



  • asc schrieb:

    gastantwort schrieb:

    Viele Programme bringen ihre eigene JRE nicht mit, weil sie inkompatibel zu anderen wären, sondern nur aus dem Grund, falls der User noch keine JRE installiert hat...

    Dann müssten sie diese aber nicht in ihr eigenes Verzeichnis kopieren, sondern sollten dies a) prüfen, und b) in die normalen Verzeichnisse installieren (so das keine unnötigen Versionen auf dem PC liegen).

    Das ist aber kein Problem von Java, sondern des jeweiligen Programms. AMD RAIDXpert ist an sich schon arg plattformabhängig. Und Araxis Merge läuft mit 'ner normal installierten JRE sofern sie gleich oder neuer der mitgelieferten Version ist. Liegt also am Hersteller.


Log in to reply