Java vs C++



  • 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



  • 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

    Mir hingegen würde es auch reichen, wenn er z.B: nur Java beherrscht, sofern Java auch die Sprache für all unsere Projekte sind, solange er sie wirklich beherrscht. Das wiederum gilt es dann halt im Bewerbungsgespräch "herauszukitzeln", was mit den richtigen Themengebieten, bzw. Fragen allerdings machbar sein sollte.

    Falls es dennoch Situationen geben sollte, wo eine Sprache wie C++ erforderlich ist, ein eher umfrangreiches Wissen quer über mehrere Programmiersprachen also angebracht ist, dann würde ich halt einfach jemanden schulen lassen. Im Endeffekt, müsst ich den "Allrounder" aber genauso am Beginn schulen um für die speziellen Gegebenheiten und Anforderungen des Projekts gerüstet zu sein nur, dass ich diesen nicht kenne, also auch kein entsprechendes Vertrauen haben kann im Gegensatz zu einem bereits angestellten Entwickler.

    Nicht dass ihr mich jetzt falsch versteht, ich bin eigentlich ganz klar dafür, dass auf Universitäten breit gefächert unterrichtet wird (vor allem auch eine funktionale Sprache und Algorithmen), denn von mir aus würde ich mich damit nicht beschäftigen, sondern wirklich nur mit jenem, wovon ich glaube, dass ich es im Berufsleben brauchen werde (z.B: J2EE).

    [offtopic]

    Gregor schrieb:

    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.)

    Mich würde interessieren, ob außer mir noch weitere Personen Probleme bei der Registrierung haben. Ich versuche es seit längerer Zeit, aber das Formular wird lediglich zur Hälfte wieder gelöscht und als ungültig erkannt, keine Ahnung warum.
    [/offtopic]



  • NaN schrieb:

    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...

    Ich meine nicht, dass man eine Sprache perfekt können muss. Man muss nur die "Denkweise" bzw. die Designprinzipien einer Programmiersprache verstehen. Dadurch lernt man Probleme auf verschiedene Weise zu betrachten um so einen optimalen Weg für die Lösung zu finden. Der Artikel nennt ja zB den Google Artikel von MapReduce, die Technik stammt aus dem funktionalen Programmieren und ist daher extrem skalierbar. So einen Ansatz muss man aber erst einmal entwickeln und der fällt einem Schwer, wenn man sich in einer Methode festfährt.

    Wie heißt es so schön: "Wenn man nur einen Hammer hat, dann sieht jedes Problem aus wie ein Nagel"

    Wobei ich es auch für wichtig halte eine Programmiersprache zu haben, die man als Basis benutzen kann.



  • Da gebe ich Dir grundlegend Recht. Es schadet nie, wenn man breitgefächertes Wissen hat und auch mehrere Sprachen beherrscht. Aber ich finde ich es halt persönlich erstmal wichtiger - grade wenn man z.b. noch in der Ausbildung ist - dass man erstmal eine Sache richtig lernt. Wenn ich hier manchmal Sachen lese "dann hab ich ein Jahr Java gemacht und danach ein Jahr C++ ..." - da frage ich mich, was soll sowas bringen? Ich möchte jetzt nicht von mir behaupten, dass ich der Überflieger bin, aber als ich Java gelernt habe, war ich nach einem Jahr alles andere als ein guter Javaprogrammierer.

    In meinen Augen ist es am sinnvollsten, erstmal eine Sprache richtig zu lernen. Dabei sollte man aber immer den Blick über den Tellerrand nicht verlieren. Ich habe bisher (fast) kein C++ gemacht und trotzdem ist mir durchaus bewusst, in welchen Bereichen kein Java sondern C++ zum Einsatz kommen sollte/muss. Ich denke einfach, beherrscht man erstmal eine Sprache richtig (damit meine ich nicht, die Syntax zu können und die Sprachkonstrukte einmal in der Theorie durchforstet zu haben), dann fällt es einem auch wesentlich einfacher, eine neue Sprache kennenzulernen und sich dort reinzuarbeiten.

    Am Ende ist es fast sowieso egal, welche Sprache eingesetzt wird, denn die Sprache ist nur Mittel zum Zweck, Probleme zu lösen.

    MFG, ein Javaprogrammierer



  • NaN schrieb:

    Da gebe ich Dir grundlegend Recht. Es schadet nie, wenn man breitgefächertes Wissen hat und auch mehrere Sprachen beherrscht. Aber ich finde ich es halt persönlich erstmal wichtiger - grade wenn man z.b. noch in der Ausbildung ist - dass man erstmal eine Sache richtig lernt. Wenn ich hier manchmal Sachen lese "dann hab ich ein Jahr Java gemacht und danach ein Jahr C++ ..." - da frage ich mich, was soll sowas bringen? Ich möchte jetzt nicht von mir behaupten, dass ich der Überflieger bin, aber als ich Java gelernt habe, war ich nach einem Jahr alles andere als ein guter Javaprogrammierer.

    In 1 Jahr kann man IMO eine Sprache sehr wohl "gut lernen", kommt auf's Vorwissen drauf an & darauf, wieviel Zeit man sich in diesem einem Jahr nimmt, ernsthaft die Sprache zu lernen und wie viel man nur damit "arbeitet".
    Angenommen ich muss ein Projekt in einer Sprache durchfuehren, die ich nicht kenne, aber die ich aufgrund meines Backgrounds relativ leicht verstehe (z. B. angenommen ich habe schon mehrere Objektorientierte Sprachen hinter mir und muss jetzt etwas in ObjectPascal). Jetzt kann man

    a) sich 2-3 Tage mit Syntax, IDE & Co vertraut machen und gleich loslegen
    b) sich erstmal richtig intensiv mit der Sprache befassen: Quellcodes aus der Sprache lesen, evtl. ein weiterfuehrendes Buch, und dann erst loslegen.

    Man kommt mit beiden Wegen ans Ziel. mit a) bin ich gleich mal produktiv, aber das Endergebnis wird evtl. ausschauen wie z. B. "Java in ObjectPascal Syntax", und ich werd nur langsam mit der neuen Sprache zurecht kommen.
    Mit b) werd ich 'ne Weile brauchen, aber danach wahrscheinlich "besseren" Code haben.

    Bei mir persoenlich ists z. B. so:
    Webanwendungen die ich in PHP schreibe, schauen in den Augen echter Webprogrammierier sicher abscheulich aus, weil ich mich (trotz mittlerweile 3 Jahren, in denen ich immer wieder mal mehrere Monate an PHP-Projekten sitze) nie mit PHP ernsthaft auseinander gesetzt habe. Ich habe die Sprache mehr oder weniger via "learning by doing" und anhand der offiziellen Docu gelernt, kenne daher die typischen PHP-Entwurfsmuster und die typischen "Do & Don't"s der Sprache nicht. Meinem Code ist wahrscheinlich voellig PHP-untypisch, weil viel daraus aus der Phython-, C++ oder sonst einer anderen Welt kommt. Trotzdem hab ich jedes Projekt zu Ende gefuehrt und die Auftraggeber waren immer zufrieden mit den Ergebnissen, selbst wenn sie die spaetere Wartung des Quellcodes selbst uebernommen haben.
    Mit Python hingegen beschaeftige ich mich erst seit 1-2 Jahren, und ich hab wesentlich weniger Projekte in Python als in PHP geschrieben. Trotzdem glaube ich, dass ich mehr Ahnung von Python als von PHP habe, einfach weil ich mich mit Python selbst beschaeftigt habe: ich habe Buecher darueber gelesen, hin & wieder in den Quellcodes von OpenSource - Projekten herumgeschnueffelt, ....


Anmelden zum Antworten