Java vs C++



  • kingruedi schrieb:

    Ein sehr netter Rant über Java: Execution in the Kingdom of Nouns

    geil:

    ...advocating Object-Oriented Programming is like advocating Pants-Oriented Clothing.

    😃 😃



  • adonis schrieb:

    ich verstehe pointer auch nich immer, aber zwingt mich auch keiner
    sie zu benutzen deswegen mache ich sie nicht schlecht.

    Wenn du Pointer nicht verstehst, kann es schnell passieren, dass deine C++ Anwendung langsamer wird als eine gleiche Java Anwendung.



  • Ich behaupte mal, die allerwenigsten sind überhaupt dazu in der Lage, objektiv das Thema Java vs C++ zu behandeln. Denn die allerwenigsten kennen alle Feinheiten beider Sprachen gut genug und in den meisten Fällen gibts eh kein richtig oder falsch.

    Wenn Dich o.g. kostenloses Online-Buch stört, dann versuchs doch einfach mal mit einem richtigen Buch, z.B. Thinking in Java von Bruce Eckel. Der kennt nämlich auch die "andere Seite" und beschreibt sie in seinem Buch Thinking in C++. 😉

    gez. ein Java-Progger



  • NaN schrieb:

    Wenn Dich o.g. kostenloses Online-Buch stört, dann versuchs doch einfach mal mit einem richtigen Buch, z.B. Thinking in Java von Bruce Eckel. Der kennt nämlich auch die "andere Seite" und beschreibt sie in seinem Buch Thinking in C++. 😉

    Glaub mal nicht, das in "Thinking in Java" nicht ganz ähnliches gebracht wird. Auch dort wird andauernd ein Bezug zu C++ hergestellt und die Vorteile von Java werden herausgearbeitet.

    Zum Beispiel da beim GC:

    Thinking in Java 3rd edition schrieb:

    With Java, the garbage collector is designed to take care of the problem of releasing the memory (although this doesn't include other aspects of cleaning up an object). The garbage collector "knows" when an object is no longer in use, and it then automatically releases the memory for that object. This (combined with the fact that all objects are inherited from the single root class Object and that you can create objects only one way-on the heap) makes the process of programming in Java much simpler than programming in C++. You have far fewer decisions to make and hurdles to overcome.

    oder da:

    Thinking in Java 3rd edition schrieb:

    What has impressed me most as I have come to understand Java is that somewhere in the mix of Sun's design objectives, it appears that there was the goal of reducing complexity for the programmer. As if to say "we care about reducing the time and difficulty of producing robust code." In the early days, this goal resulted in code that didn't run very fast (although there have been many promises made about how quickly Java will someday run) but it has indeed produced amazing reductions in development time; half or less of the time that it takes to create an equivalent C++ program. This result alone can save incredible amounts of time and money, but Java doesn't stop there. It goes on to wrap many of the complex tasks that have become important, such as multithreading and network programming, in language features or libraries that can at times make those tasks easy. And finally, it tackles some really big complexity problems: cross-platform programs, dynamic code changes, and even security, each of which can fit on your complexity spectrum anywhere from "impediment" to "show-stopper." So despite the performance problems we've seen, the promise of Java is tremendous: it can make us significantly more productive programmers.

    ...oder hälst Du das für Objektivität? 😉



  • Tja, so ist es halt. Was man nicht kennt, ist grundsätzlich erstmal ablehnenswerter als das, was man kennt.
    Dass man mit C++ viel Unsinn anstellen kann, ist ja kein Geheimnis. Wer sowas macht, zeigt aber einfach nur seine Unfähigkeit, da im Standard eigentlich alles dazu geschrieben steht.
    Das "Böse" im Beispiel sind übrigens auch nicht die Zeiger, sondern der Cast, weil das Typsystem nunmal verhindert, dass ein Ganz_unsicher Zeiger einfach so einem char Zeiger zugewiesen werden kann. Mal ganz abgesehen vom Rest der Anwendung. 🙄
    Ich verstehe auch nicht, warum es immer wieder Leute gibt, die eine der Sprachen verteufeln. Ich sehe sie weniger als Konkurrenten, sondern vielmehr als Ergänzung.



  • @Gregor: OK, wenn es danach geht, gibt es wahrscheinlich überhaupt kein rein objektiv geschriebenes Buch. Denn sobald man auch nur einen Vergleich zwischen zwei Sprachen macht, ist man schon nicht mehr objektiv.

    Aber es gibt eben Menschen, die möchten auch mal über den Tellerrand schauen. Ich hatte bei Thinking in Java (4th Edition) bisher nicht das Gefühl, dass C++ in irgendeiner Weise schlecht gemacht wird. Er beschreibt zwar Vorteile von Java gegenüber C++, aber wer auch nur ein bißchen mitdenkt, der merkt, dass Java sich diese Vorteile häufig mit Nachteilen in anderen Bereichen erkaufen muss. Gerade beim Thema Garbage Collection liegt das ja auf der Hand.

    Davon abgesehen schreibt er aber halt Fakten:

    This (...) makes the process of programming in Java much simpler than programming in C++. You have far fewer decisions to make and hurdles to overcome.

    Das ist halt so. Und das sollte eigentlich jedem - egal ob Java oder C++ Programmier - schon klar sein. Für mich hat das wenig mit "C++ schlechtmachen" zu tun. Du könntest auch genug stellen aus dem Buch quoten, wo er sich kritisch über Java äußert.


  • Administrator

    NaN schrieb:

    This (...) makes the process of programming in Java much simpler than programming in C++. You have far fewer decisions to make and hurdles to overcome.

    Das ist halt so. Und das sollte eigentlich jedem - egal ob Java oder C++ Programmier - schon klar sein. Für mich hat das wenig mit "C++ schlechtmachen" zu tun. Du könntest auch genug stellen aus dem Buch quoten, wo er sich kritisch über Java äußert.

    Dieser Satz hat für mich sogar gar nichts mit C++ Schlechtmachen zu tun, sondern dann eher Java. Das heisst ja nichts anderes, dass man in Java Hilfsmittel hat. Doch Hilfsmittel heisst für mich automatisch auch Einschränkungen. Daher gefällt mir C++ automatisch besser ^^

    Und zum ganzen Zeugs Java vs C++. Soll doch jeder das programmieren was er am liebsten tut. Wieso sollte ein Java-Programmierer C++ proggen, wenn er mit Java zufrieden ist und andersrum? Die, welche immer wieder auf die Programmierer der anderen Sprache losgehen, zeigen schlussendlich nur, dass sie vom ganzen keine Ahnungen haben und zudem nicht viel Grips haben. Es ist immer so, dass die eine Sache für dies gut ist und die andere Sache für was anderes. Eine ultimative super Sprache wird es nie geben. Oder dann ist es halt die Bitsprache ^^

    Kommt mir vor wie die Religionen. Judentum, Christentum, Islam usw. Alle kommen vom gleichen Ort, alle glauben grundsätzlich an den gleichen Gott, aber alle bekämpfen sich ^^

    Grüssli



  • mhh meine erfahrung ist eher dass man so die wichtigsten sprachen
    können sollte und dazu noch ein paar script sprachen.

    zumindest sehe ich das so, wenn man nach jobs sucht.
    und meine erfahrung is auch das man nicht weit kommt wenn man sich
    festbohrt bei einer sprache und die wehement verteidigt.

    zumal sich eine sprache nicht immer für alles eignet, oder die optimale
    lösung ist.

    um das prinzip von spiele programmierung zu lernen nehme ich nicht c++,
    es dauert halt einfach zulange. wenn ich mir die grundprinzipien angeeinget
    habe dann versuche ich das in c++.

    programmieren lernen allerdings find ich in c++ besser, weil ich
    da die grundlagen im programmieren lernen kann, ohne mich gleich mit
    oop auseinanderzusetzen.

    ich mag auch basic sprachen, um mal was schnell auszuprobieren optimal.

    für mich hat jede sprache ihre vor und nachteile, hauptgrund für mich
    mit c++ zubeschäftigen war, dass ich es mag die kontrolle über alles zu haben,
    auch wenn ich mir da sehr viele fehler einbauen kann, aber übung macht ja den
    meister 🙂

    PS: bin erstaunt das der thread noch nich closed is, gratz an euch:)



  • The Perils of JavaSchools

    auch ein interessanter Artikel über die Probleme die dadurch entstehen, dass an vielen Universitäten fast nur noch Java unterrichtet wird.



  • kingruedi schrieb:

    The Perils of JavaSchools

    auch ein interessanter Artikel über die Probleme die dadurch entstehen, dass an vielen Universitäten fast nur noch Java unterrichtet wird.

    Andererseits liefert das auch einen entsprechenden Markt für Schulungen, Zertifizierungen, etc.. um sich herauszuheben aus der Masse. Das "Problem" ist halt, dass es keine grundlegenden Dinge gibt, die man zum Aussortieren hernehmen kann, denn alles was für manche zu kompliziert werden könnte, sind bestimmte APIs, Frameworks, etc..



  • jemand`` schrieb:

    kingruedi schrieb:

    The Perils of JavaSchools

    auch ein interessanter Artikel über die Probleme die dadurch entstehen, dass an vielen Universitäten fast nur noch Java unterrichtet wird.

    Andererseits liefert das auch einen entsprechenden Markt für Schulungen, Zertifizierungen, etc.. um sich herauszuheben aus der Masse.

    BTW: Ich wollte schon immer mal fragen, ob es etwas wie auf der folgenden Seite auch im C++ Umfeld gibt:

    www.javablackbelt.com

    ...würde mich sehr interessieren. (...ohne jetzt den Sinn und Unsinn solcher Multiple-Choice-Tests zu diskutieren.)



  • Gregor schrieb:

    jemand`` schrieb:

    kingruedi schrieb:

    The Perils of JavaSchools

    auch ein interessanter Artikel über die Probleme die dadurch entstehen, dass an vielen Universitäten fast nur noch Java unterrichtet wird.

    Andererseits liefert das auch einen entsprechenden Markt für Schulungen, Zertifizierungen, etc.. um sich herauszuheben aus der Masse.

    BTW: Ich wollte schon immer mal fragen, ob es etwas wie auf der folgenden Seite auch im C++ Umfeld gibt:

    www.javablackbelt.com

    ...würde mich sehr interessieren. (...ohne jetzt den Sinn und Unsinn solcher Multiple-Choice-Tests zu diskutieren.)

    ich progge euch eh alle an die Wand 🕶



  • kingruedi schrieb:

    Ein sehr netter Rant über Java: Execution in the Kingdom of Nouns

    Das ist richtig gut!



  • jemand`` schrieb:

    kingruedi schrieb:

    The Perils of JavaSchools

    auch ein interessanter Artikel über die Probleme die dadurch entstehen, dass an vielen Universitäten fast nur noch Java unterrichtet wird.

    Andererseits liefert das auch einen entsprechenden Markt für Schulungen, Zertifizierungen, etc.. um sich herauszuheben aus der Masse. Das "Problem" ist halt, dass es keine grundlegenden Dinge gibt, die man zum Aussortieren hernehmen kann, denn alles was für manche zu kompliziert werden könnte, sind bestimmte APIs, Frameworks, etc..

    Das Problem ist eher, dass die Leute ein immer unpraktischeres Basiswissen bekommen. Es ist nun mal wichtig, dass jemand weiß wie Pointer funktionieren und wo die Probleme liegen. Es ist auch genau so wichtig, dass ein Programmierer viele unterschiedliche Programmiervarianten kennen lernt. Die Ausbildung ist eben die Zeit, in der das Denken geprägt werden soll.

    Als Personalchef würde ich niemanden einstellen, der nur eine Programmiersprache kann oder der die üblichen Schrott-Kombinationen hat wie Java und PHP oä. Aber leider bin ich kein Personalchef 🙂



  • Naja, versteht ihr unter "eine Programmiersprache können"? Die Syntax beherrschen? Ein Hello World schreiben können? Geht schnell. Die Sprache richtig beherrschen? Dauer (je nach Vorwissen) lange, ich würde mal sagen: Jahre.

    Ich würde von mir mal behaupten, dass ich Java recht gut beherrsche (5 Jahre Erfahrung). Wenn ich jetzt mit C++ anfangen würde, dann könnte ich vielleicht in ein paar Jahren sagen, dass ich diese Sprache gut beherrsche. Aber beherrsche ich dann auch noch Java gut? Ich denke nicht, denn in einigen Jahren hat sich jede Sprache weiterentwickelt. Es gibt neue Frameworks, Libs etc.

    Und was hat bitte ein Unternehmen von einem Programmierer, der zwar mehrere Sprachen ein bißchen beherrscht, aber keine richtig? Was soll das bringen? Wechselt ihr vielleicht alle paar Monate das Projekt und damit auch die Programmiersprache? Oder sind die Projekte in der Regel nicht vielleicht so komplex, dass man doch länger daran arbeitet und die eingesetzte Sprache auch perfekt beherrschen sollte?

    My 2 cents...



  • NaN schrieb:

    Und was hat bitte ein Unternehmen von einem Programmierer, der zwar mehrere Sprachen ein bißchen beherrscht, aber keine richtig? Was soll das bringen?

    Wenn du alle Sprachen ein bisschen beherschst, fällt es dir leichter eine bestimmte Sprache auszubauen, z.B. für den Beruf. Aber wenn du nur eine Sprache kannst, wird es schwer dich nun in eine neue Sprache komplett reinzudenken.

    mfg.



  • NaN schrieb:

    Wechselt ihr vielleicht alle paar Monate das Projekt und damit auch die Programmiersprache?

    Ne, ich programmiere im gleichen Projekt mit C++ und Java.



  • Nun, ich hatte jetzt 2 Semester lang C++ gelernt, 2 Semester lang ARM-Assembler und 1 Semester lang Java und ich glaube, jede Sprache hat seine Vor- und Nachteile.

    Versuch zum beispiel mal mit Java auf Systemebene zu programmieren (wenn man mal von Suns Java-Prozessor absieht) 🙂
    Oder eine Platformübergreifende Web-Anwendung mit GUI unter C++.
    Oder einen Systemscheduler ohne Assembler.

    Also, ich persönlich bin froh, alle 3 Sachen zu können 🙂



  • In mein derzeitiges Projekt fließen so viele Technologien ein: C++, JavaScript, XHTML (+CSS), XML, XSLT und für Tools überlege ich gerade C# zu verwenden.

    Ich wüsst gar nicht was ich machen sollte, wenn ich so nen Sprachfanatiker wäre, dass ich nur C++ und Winapi/POSIX benutzen würde und den Rest alles selber schreiben..



  • Hallo

    Warum man immer öfter Java als Lehrsprache anstelle von Python, Smalltalk oder
    C nimmt, verstehe ich auch nicht.

    Python ist eine Art "Pseudo-Code", mit dem sich der Lernende fast völlig
    auf das algorithmische Problem konzentrieren kann. Smalltalk ist als reine OO-Sprache sicher methodisch besser geeignet, um OO-Konzepte zu veranschaulichen als eine Mischsprache wie Java. Und Systemprogrammierung und Hardware-nahe Programmierung kann man mit C besser lernen als mit Java, mit dem man gar nicht direkt auf Hardware zugreifen kann.

    Außerdem ist Java meinem Eindruck nach recht langatmig ("public static void main..."); ob es hilfreich ist, den 3-Zeiler "Quicksort" mittels 20 Zeilen
    Java zu erklären, sei mal dahingestellt.

    Abgesehen davon: was geschieht mit Java, wenn Sun es nicht mehr weiterentwickelt, das Interesse verliert oder nicht mehr weiterentwickeln kann?

    Grüße


Anmelden zum Antworten