Java vs C++



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



  • @NaN
    Ich denke man kann locker eine Programmiersprache in einem Jahr lernen, wenn man sich ernsthaft damit befasst. Natürlich kennt man danach nicht unbedingt jede Falle der Sprache und auch nicht jeden Trick. Aber man kann danach schon ziemlich gut damit programmieren.

    Als professioneller Programmierer hast du doch idr. deutlich weniger Zeit eine Programmiersprache oder ein Framework zu erlernen.

    Wie gesagt, ich denke auch, dass man eine Programmiersprache gut können sollte. Aber dafür rechne ich keine 5 Jahre lernzeit ein. Wobei beim programmieren ist lernen eben programmieren. Durch Theorie lernt man keine Programmiersprache. Nur durch Praxis lernt man die Probleme und die Denkweise der Sprache kennen.

    Und wenn man eine C-ähnliche Sprache kann, dann kann man idr. innerhalb kurzer Zeit eine andere C-ähnliche Sprache lernen. Daher halte ich es ja auch für wichtig ganz andere Konzepte sich anzugucken.



  • Blue-Tiger schrieb:

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

    Nix anderes habe ich oben doch geschrieben. Wenn man schon eine oder mehrere andere Sprachen beherrscht - also ein gutes Backgroundwissen hat - dann erlernt man neue Sprachen natürlich schneller als die erste. Aber es ging mir ja gerade darum, dass man zunächst (als Anfänger) erstmal eine Sprache richtig lernen sollte, anstatt mehrere Sprachen etwas. Denn sonst kannst Du von vielen ein bißchen aber nix richtig.

    Und wie lange man nun wirklich braucht, um etwas zu beherrschen, das hängt ja nun von diversen Faktoren ab, nicht nur vom Vorwissen. Setze ich mich z.B. 1 Jahr hin und mache nichts anderes als die Sprache zu lernen, dann werde ich wohl recht viel Wissen in der Zeit aufbauen. Muss ich das jedoch neben meiner normalen Arbeit oder dem Studium machen, dann werde ich wohl nicht ganz so viel mitnehmen in der Zeit.



  • Sorry, dass ich diesen Thread nochmal reanimiere, aber ich bin gerade über etwas gestolpert, das folgende Offtopic-Frage beantwortet:

    jemand`` schrieb:

    [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]

    Angeblich war der Registrierungsprozess zur Zeit der Fragestellung tatsächlich kaputt. ...über mehrere Tage hinweg. Inzwischen sollte der aber wieder funktionieren.



  • Angeblich war der Registrierungsprozess zur Zeit der Fragestellung tatsächlich kaputt. ...über mehrere Tage hinweg. Inzwischen sollte der aber wieder funktionieren.

    Danke für die Information, jetzt funktioniert es wirklich wieder.



  • jemand`` schrieb:

    Angeblich war der Registrierungsprozess zur Zeit der Fragestellung tatsächlich kaputt. ...über mehrere Tage hinweg. Inzwischen sollte der aber wieder funktionieren.

    Danke für die Information, jetzt funktioniert es wirklich wieder.

    javablackbelt scheint allerdings auch in anderen Bereichen noch ziemlich buggy zu sein. Ich bin da heute auch einem sehr merkwürdigen Bug begegnet. Wunder Dich also nicht, wenn Du noch auf weitere Probleme triffst.



  • hm, also ich hab in meinem Info-Studium auch nur Java (und grausiges Zeugs wie Ocaml/SML/Datalog/Prolog) gehabt. Is ja auch egal welche Hochsprache man lernt. Die Syntax is Schall und Rauch und Informatiker sind eh keine Progger ^^



  • this->that schrieb:

    hm, also ich hab in meinem Info-Studium auch nur Java (und grausiges Zeugs wie Ocaml/SML/Datalog/Prolog) gehabt. Is ja auch egal welche Hochsprache man lernt. Die Syntax is Schall und Rauch und Informatiker sind eh keine Progger ^^

    Geht ja auch nicht um Syntax. Eigentlich spricht hier niemand von Syntax.

    Lies dir mal den Artikel durch: http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html


Anmelden zum Antworten