Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 16

Thema: c++ vs. Java

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.05.2006
    Ort
    Bremen
    Beiträge
    39

    c++ vs. Java

    So, ich wünsche euch erstmal frohe Weinachten gehabt zu haben.

    ...tjoar, jetzt stehe ich vor dem Problem und weiß nicht so recht weiter. Bevor ich mich voll in die Materie schmeiße, hab ich gedacht, ich frage euch einfach mal.
    Bevor ich mir hunderte ergooglete Berichte durchlese *fg*

    Und zwar wollte ich eigentlich nur die Stärken und Schwächen von Java und C++ wissen. Weil ich mich noch nicht so recht entscheiden kann, ob ich nun Java oder C++ lernen soll.

    Was ich weiß.

    Java:
    + Plattform unabhängig
    - relativ langsam

    C++:
    + sehr schnell
    - nicht Plattform unabhängig

    Was will ich eigentlich programmieren?!
    Kleiner Tools, vielleicht sogar Anwendungen mit MDI-Fenster.

    Gruß Olly

  2. #2
    Registrierter Benutzer
    Registriert seit
    02.12.2002
    Ort
    Darmstadt
    Beiträge
    615
    Das mit Java und "relativ langsam" ist ein sich hartnäckig haltendes Vorurteil. Sicher braucht die VM einen gewissen Overhead, gerade beim starten der Anwendung, danach sollten sich aber eigentlich kaum meßbare Unterschiede in der Performance ergeben. Als nächstes wird die Plattformunabhängigkeit angekreidet: Java ist nur auf den Plattformen für die eine VM zur Verfügung steht wirklich plattformunabhängig (und es gibt genug auf denen das nicht ist). Genauso ist es möglich mit C++ (relativ) plattformunabhängigen Code zu produzieren.

    Ansonsten kenne ich C++ zu wenig, als das ich dort Vor- und Nachteile aufzählen könnte. Java gefällt mir persönlich, auch wenn es sicher ein paar Probleme hat, wie z.B. die zum Teil schlechten "Generics". Es ist wahrscheinlich eher eine Glaubensfrage was man denn benutzen möchte, kommt man aus der C Ecke, wird man sehr wahrscheinlich zu C++ tendieren, da dieses syntaktisch schon sehr ähnlich ist und schon sehr viel in der Sprache kennt (auch wenn man es tunlichst vermeiden sollte C Code als C++ Code zu benutzen).

    Etwas das ich persönlich als Vorteil von Java erachte:
    + Eine klare, recht einfache Syntax (auch wenn das zuweilen zu längeren Codezeilen führt)
    + Eine umfangreiche Standardbibliothek an Features
    + Andere Bibliotheken sind sehr einfach einzubinden
    + Einfacher zu Debuggen (ein pures "Segmentation Fault" vs "FooBarException in Line xxxx")

    Allgemein solltest du dich aber auf jeden Fall wenigstens mit den Grundlagen von objektorientiertem Design befassen, bevor du anfängst mit den Sprachen wirklich zu hantieren. Für dieses Vorhaben ist das Buch "Head First Design Patterns" von O'Reilly zu empfehlen.
    Seine Rätselhaftigkeit wird nur durch seine Macht übertroffen!

  3. #3
    Registrierter Benutzer
    Registriert seit
    07.05.2003
    Beiträge
    127
    Ich glaube, beides einigermaßen zu kennen. Jedenfalls habe ich mal privat jemandem Nachhilfe in C++ gegeben, damit er eine Prüfung packt und er hat es geschafft. Soll heißen: Ich halte mich für absolut keinen C++ Experten, aber so ganz doof kann ich scheinbar auch nicht sein.

    - Ich finde die Syntax von C++ abartig komplex.
    - Java ist ganz sicher nicht langsamer.
    - Java ist im Normalfall schneller, es sei denn, Du kennst Dich sehr gut aus mit C++ und steckst viel Zeit in die Optimierung.
    - Programme, die sich viel "mit dem Speicher befassen" (z.B. genetische Algorithmen) lassen sich daher aus oben genanntem Grund in C++ beschleunigen. Die c't (oder iX?) hat mal Java mit C/C++ und Pascal verglichen: Java ist nicht unbedingt langsamer!
    - Java ist sehr gut dokumentiert.
    - Es gibt fast nichts, was mit Java nicht ginge, es gibt für fast alles die passenden Bibliotheken.

    Ich würde eventuell mal über den Tellerand schauen und Ruby nicht aus den Augen verlieren!

    HTH,
    3m

  4. #4
    Registrierter Benutzer
    Registriert seit
    26.01.2005
    Beiträge
    10
    hallo
    am flexibelsten bist du definitiv mit c++.
    wenn du systemnah programmieren möchtest, low level sachen schreiben,
    oder spiele (d.h. alles was grafisch und stark performance abhängig ist) programmieren möchtest bist du mit c++ imo eindeutig besser beraten.
    auch in der open soruce szene sieht es für dich wesentlich besser aus, da weitaus mehr in c/c++ geschrieben wird als in java (auch wenn später jemand anderes dein programm verbesseren möchte).
    ein weiteres problem von der java vm ist, dass sie die halbe welt neu erfindet.
    sie implementiert sachen neu, die schon längst als c bilbliothek im darunterliegenden betriebssystem vorhanden ist. daher ist die speicherauslastung bei java am größten unter den gängigen programmiersprachen. oft integrieren sich java programme nicht richtig in den desktop, da sie auf bibliotheken wie swing setzen - das hängt allerdings ganz davon ab inwieweit du die "java-eigenen" bibliotheken verwendest.
    allerdings ist java wahnsinnig schön dokumentiert! wenn du "web anwendungen" (java applets) programmieren willst, die viel dynamik erfordern wirst du auch java brauchen.

    aber wenn du dich für java entscheidest solltest du dich auch fragen:
    warum ausgerechnet java? wieso nicht c# + .net oder sogar python?

  5. #5
    Registrierter Benutzer
    Registriert seit
    20.05.2006
    Ort
    Bremen
    Beiträge
    39
    Danke erstmal für die Antwort.

    Also meine Entscheidung liegt bis jetzt doch eher bei C++.

    Gründe:
    • Hatte mal mit C++ angefangen zu programieren ist aber schon bisschen her.
    • Zitat: am flexibelsten bist du definitiv mit c++.
    • Zitat: wenn du systemnah programmieren möchtest, low level sachen schreiben,
      oder spiele (d.h. alles was grafisch und stark performance abhängig ist) programmieren möchtest bist du mit c++ imo eindeutig besser beraten.


    Wenn ich relativ gut in C++ programmieren kann, dann kann ich mir Java ja immer noch anschauen ;-) (will ja auch nicht dumm sterben *fg* )

    Gruß Olly

    (...frohes neues Jahr wünsch ich euch.)

  6. #6
    Registrierter Benutzer Avatar von Fabeltier
    Registriert seit
    02.10.2006
    Beiträge
    51
    Oh Yeah, der Titel verraet "Flame War"!!!

    Zitat Zitat von djaliced Beitrag anzeigen
    Java:
    + Plattform unabhängig
    -> die JVM ist eine Plattform, woanders laeuft der Code nicht! Abgesehn davon, hast Du ein grosses Problem, wenn Du von der Plattform runter musst, sh. JNI (diese Schnittstelle musste dann wieder in C/CPP implementieren, und das liess sich zumindest noch in 1.5 phasenweise nur schwer debuggen)
    - relativ langsam
    -> kommt absolut drauf an.

    C++:
    + sehr schnell
    -> kommt auch drauf an, allein schon ob Du mit Deinem Compiler umgehen kannst, etc
    - nicht Plattform unabhängig
    -> kommt auf die Library an, Qt ist ziemlich portierbar, GTKmm auch, etc.

    Imho: Die eigentlichen Argumente sind wohl heute doch eher andere, fuer Dich zaehlt hier vllt eher C++ dauert laenger zum erlernen, aber Du lernst auch etwas mehr was "unter der Motorhaube steckt" und musst die Konzepte besser verstanden haben als in Java um was zu zerreissen. In Java lernst Du dafuer mehr ueber Dinge die gerade "im Trend" liegen, wirst gut durch die Sprachmittel beschuetzt Schmarrn zu machen und zu einem saubereren Stil gezwungen. Mit Java kommst Du gerade am Anfang um einiges schneller zum Ziel als bei C++.

  7. #7
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Zitat Zitat von Fabeltier Beitrag anzeigen
    Oh Yeah, der Titel verraet "Flame War"!!!
    Eindeutig!!! (=ich will auch mitmachen )

    Mein Beitrag dazu: Beide Sprachen sind ok - du musst dir zuerst einmal klar machen, was du willst und danach die passende auswählen.

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  8. #8
    Registrierter Benutzer
    Registriert seit
    20.05.2006
    Ort
    Bremen
    Beiträge
    39
    Also, was ich genau machen will?!

    Einen eigenen Editor Programmieren.
    Einen IRC-Client.
    Vielleicht sogar einen mp3-Player (es gib ja noch nicht genug *fg* )
    Diverse Tools (kleinere Dialoge).

    Gruß Olly

  9. #9
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Zitat Zitat von djaliced Beitrag anzeigen
    Also, was ich genau machen will?!

    1. Einen eigenen Editor Programmieren.
    2. Einen IRC-Client.
    3. Vielleicht sogar einen mp3-Player (es gib ja noch nicht genug *fg* )
    4. Diverse Tools (kleinere Dialoge).

    Gruß Olly
    ad 1: jEdit beweist es geht gut in Java
    ad 2: Durch die vielen vorgeferitgten Klassen ist die Entwicklung bestimmt rascher.
    ad 3: Hab ich schon mal getan. War nicht schwer in java.
    ad 4: ? Geht eh alles

    Ich arbeite meistens in Java und hab schon Nachhilfe sowohl in Java als auch in C++ gegeben. Die Lernkurve war in Java eindeutig besser als in C++ bei all meinen Nachhilfeschülern (und nein es lag nicht an mir). Dazu die schon erwähnte komplizierte Syntax bei C++.

    In der Firma wo ich arbeite trau ich mich zu sagen, dass egal in welche Abteilung ich gehe und ich nach einer String-Library für einfache Operationen frage ich jedes Mal eine andere bekomme, z.T. selbst gefrickelt. Wegen Java hat noch nie ein Mensch nach einer String-Library gefragt. Zudem ist es besser dokumentiert.

    Aber Spiele und systemnah programmieren geht natürlich besser in C/C++. Aber da du noch Anfänger bist ... Aber man soll sich seine Ziele ja hoch setzen.

    lg, christian
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

  10. #10
    Registrierter Benutzer Avatar von Fabeltier
    Registriert seit
    02.10.2006
    Beiträge
    51
    Zitat Zitat von Waxolunist Beitrag anzeigen
    In der Firma wo ich arbeite trau ich mich zu sagen, dass egal in welche Abteilung ich gehe und ich nach einer String-Library für einfache Operationen frage ich jedes Mal eine andere bekomme, z.T. selbst gefrickelt.
    "string" in C++ ist doch quasi das gleiche wie "String" in Java?!!

    Wenn Deine Kollegen die Standard String implementierung nicht verwenden, denke ich, werden sie schon ihre Gruende haben, aber das ist weder ein Argument fuer oder wider C++ oder Java.

  11. #11
    Registrierter Benutzer Avatar von Sym
    Registriert seit
    05.09.2002
    Ort
    Bremen
    Beiträge
    278
    Was ist in C++ ein Standard-String?

    Zum Thema: Java ist relativ einfach zu lernen - jedenfalls im Vergleich zu C++. Mit C++ kannst Du allerdings mehr machen.

    Ich würde vielleicht mit Java beginnen. Und wenn Du an Grenzen stößt, kannst Du Dir immer noch C++ anschauen. C++ hat am Anfang einfach viel Overhead.

    Ansonsten ist mein Favourit ganz klar C++ mit Qt.
    Denk mal drüber nach...

    Lars

    ACHTUNG: ersetze Linux durch GNU/Linux an den entsprechenden Stellen
    www.macuser.de, MSVC2005 Express und Qt, Qt/Mac installieren

  12. #12
    Registrierter Benutzer Avatar von Fabeltier
    Registriert seit
    02.10.2006
    Beiträge
    51
    Zitat Zitat von Sym Beitrag anzeigen
    Was ist in C++ ein Standard-String?
    "C++ programmers have the option of using the standard std::string class defined in ISO/IEC 14882."

  13. #13
    Registrierter Benutzer Avatar von Sym
    Registriert seit
    05.09.2002
    Ort
    Bremen
    Beiträge
    278
    Wenn schon Zitat, dann auch mit Quelle.

    Es gibt den std::String und den C-String. Beides wird genutzt und keines von beiden ist Standard (auch wenn es beim ersten quasi im Namen steckt).
    Denk mal drüber nach...

    Lars

    ACHTUNG: ersetze Linux durch GNU/Linux an den entsprechenden Stellen
    www.macuser.de, MSVC2005 Express und Qt, Qt/Mac installieren

  14. #14
    Registrierter Benutzer Avatar von Fabeltier
    Registriert seit
    02.10.2006
    Beiträge
    51
    Klar, man kann's afaik sogar noch ausweiten auf wstring, etc wenn man die Unterschiede zwischen UNICODE und ANSII Formaten mitberuecksichtigen muss oder QString,... weil's in Qt optimierter ist. "Standard" bezieht sich hier eher auf "standartisiert" (Gibts sowas mittlerweile eigentlich in Java oder is das immer noch einfach nur SUN Monopol?). Nja, in reinem C++, wird man wohl v.a. mit std::string und STL arbeiten. Und auch wenn man mit besagtem QString aus der Qt arbeitet, std::string geht trotzdem immer - weil std::string eben "standardmaessig" vorhanden ist.

    Quellenangabe des Satzes hab ich vergessen, die ISO Standartisierung gibt's hier (als Entwurf, der sich allerdings kaum von den fertigen Fassungen unterschieden soll. Diese gibt's afaik bei der ANSI Kommission zu kaufen):
    http://www.open-std.org/jtc1/sc22/wg21/

  15. #15
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Nun, ich kenne mindestens 3 Implementierungen der Klasse java.lang.String.

    Alle drei verhalten sich jedoch gleich, werden gleich aufgerufen. Sind anscheinend also genormt.

    Da wäre einmal die Gnu-Variante.
    die IBM-Variante
    und natürlich die Sun-Variante.
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •