c++ vs. java... was hat zukunft



  • java verliert aber zunehmend grund gegen ruby und python

    ich selbst setze für alle webprojekte python und javascript ein,
    da man ganz einfach mehr mit weniger code schafft

    die sucess-stories geben mir recht (es werden immer wieder java projekte in python/ruby überführt, und alle freuen sich das sie nur 10-20% der loc, bei ähnlichem speed und wesentlich geringerem speicherbedarf haben



  • SammyRukka schrieb:

    Außer vielleicht, daß man in Java sich an O0 halten muß.

    Aua.



  • Tim schrieb:

    SammyRukka schrieb:

    Außer vielleicht, daß man in Java sich an O0 halten muß.

    Aua.

    dolormin is ein gutes schmerz(bekämpfungs)mittel
    xD

    [hab mir eben den rest durch gelessen, ich geh mir mal nen dolormin einschieben, lol]



  • LinkeT schrieb:

    ps wie kann c++ die selbe "wurzel" wie java hben wenn c++ die "wurzel" von java ist [klassen + vererben mit einbezogen!]?!

    Java ist keine Weiterentwicklung von C++ (als Weiterentwicklung könnte man eventuell C++/CLI oder C# ansehen) - die haben vielleicht einige Konzepte und Syntax-Elemente aus C++ übernommen, aber im Kern ist Java etwas eigenständiges.



  • CStoll schrieb:

    LinkeT schrieb:

    ps wie kann c++ die selbe "wurzel" wie java hben wenn c++ die "wurzel" von java ist [klassen + vererben mit einbezogen!]?!

    Java ist keine Weiterentwicklung von C++ (als Weiterentwicklung könnte man eventuell C++/CLI oder C# ansehen) - die haben vielleicht einige Konzepte und Syntax-Elemente aus C++ übernommen, aber im Kern ist Java etwas eigenständiges.

    der syntax, sowie diverse keywords ist von c++ "kopiert" das als "wurzel"



  • Tim schrieb:

    SammyRukka schrieb:

    Außer vielleicht, daß man in Java sich an O0 halten muß.

    Aua.

    Kannst Du Deinen Medizinbedarf auch begründen? Außer, daß ich das 'O' nicht erwischt habe?
    Dass man das schon koennen sollte und das dann auch einigermassen bei C++ durchhalten kann, steht ausser frage (deshalb auch die Klammer), aber die OO-Möglichkeiten werden von Java ja wohl eindeutig besser gestellt, oder nicht?



  • class MyMath
    {
        stataic public final int add(int a, int b)
        {
             return a + b;
        }
    }
    

    Die Benutzung von add ist natürlich seeeehr OO. Vorallem das ich native primitive Datentypen habe, zwingt mich seeehr nach OO zu programmieren. 😃 🤡



  • @pale dog
    Ich finde nicht, das mein Posting ein höheres Flame-Potential hat, als die anderen. Außerdem wie sollte man bitte bei diesem Thema entspannen? Ist doch klar, dass das zu einem Flamewar wird. Das einzige was hilft wäre schließen. Vielleicht könnte man aber mal einen vernünftigen FAQ-Beitrag entwerfen für die "Was ist besser C++ oder *"-Threads

    LinkeT schrieb:

    der syntax, sowie diverse keywords ist von c++ "kopiert" das als "wurzel"

    Java orientiert sich imho nicht sonderlich stark an C++. Die vielen Gemeinsamkeiten kommen eher dadurch das beide Sprachen sich an C orientiert haben.

    SammyRukka schrieb:

    Tim schrieb:

    SammyRukka schrieb:

    Außer vielleicht, daß man in Java sich an O0 halten muß.

    Aua.

    Kannst Du Deinen Medizinbedarf auch begründen? Außer, daß ich das 'O' nicht erwischt habe?
    Dass man das schon koennen sollte und das dann auch einigermassen bei C++ durchhalten kann, steht ausser frage (deshalb auch die Klammer), aber die OO-Möglichkeiten werden von Java ja wohl eindeutig besser gestellt, oder nicht?

    Man kann niemanden zu einem Konzept zwingen und nur weil ich die Leute dazu zwinge Funktionen in "Klassen" zu schreiben heißt das nicht, dass der Code auch Objekt Orientiert wird.

    Genauso wie man in einer Programmiersprache die nicht auf OOP ausgelegt ist OO programmieren kann, kann man in einer Sprache die einem OOP aufzwingen möchte kein OO programmieren.

    Siehe zB die ganzen Math-Sachen aus Java. Das sind ja aus C++-Sicht nichts anderes als Funktionen in einem Namespace. OOP wäre dagegen wohl eher 4.sqrt();



  • Ok, wenn das die Beurteilungsgrundlage ist, dann habt ihr natürlich recht.
    Ich habe in den letzten 6 Jahren allerdings etwas mehr als nur Additionen programmiert, vielleicht bin ich damit überqualifiziert 🙂

    Für eine Versicherungstechnik würde ich übrigens auch kein Java benutzen, sondern C/C++, aber sehr wohl für die Architektur, die darauf aufbaut, Workflow, Persistenz, GUI, MVC what ever.

    Ist immer schade, wenn ein Beitrag auf einen Satz reduziert wird und halbwahr widerlegt.
    Und wer noch niemals in Smalltalk programmiert hat, der hat auch noch niemals mit reinem OO zu tun gehabt. *ablenken tun* :p

    oops: da kam ein neuer Beitrag dazwischen...

    Man kann niemanden zu einem Konzept zwingen und nur weil ich die Leute dazu zwinge Funktionen in "Klassen" zu schreiben heißt das nicht, dass der Code auch Objekt Orientiert wird.

    Genauso wie man in einer Programmiersprache die nicht auf OOP ausgelegt ist OO programmieren kann, kann man in einer Sprache die einem OOP aufzwingen möchte kein OO programmieren.

    Fein! Das wollte ich mit meiner Klammer ausdrücken.
    Es ist nur immer gefährlich, wenn jemand der seit 10 Jahren C programmiert und vor 4 Jahren ++ dazugenommen hat, dann meint er könnte (sorry, klingt gehässig) OO und über Java urteilen, nur weil er HelloWorld auf den Bildschirm bekommen hat.
    Aber die eigentliche Frage war ja, ob es sich lohnt, sich mit Java zu beschäftigen und dem ist auf jeden Fall so, mathematische Berechnungen und verfügbare IDEs hin- oder her.
    Isch abe fertig 😃 .



  • darthdespotism schrieb:

    - Java ist, und bleibt darauf ausgelegt interpretiert zu werden. Selbst wenn man Java in Maschienencode übersetzt, was ja möglich ist, dürfte es einem _guten_ C++ - Programm an performance hinterherhinken

    Soweit die (hoffentlich soweit korrekten) Tatsachen.

    In den meisten Fällen wird das stimmen, auch wenn man mit irgendwelchen Gedankenspielchen Fälle konstruieren kann, in denen Java von der Performance her theoretisch im Vorteil sein sollte. Du formulierst das allerdings als eine ziemlich absolute Aussage mit großer Dramatik. Diese Relevanz wird das in den meisten Fällen nicht haben. Der Unterschied ist IMHO nicht sooo groß. Hast Du diesbezüglich quantitative Vorstellungen? Oder hast Du mehr eine allgemeine Assoziation "C++ -> schnell" und "Java -> lahm"? Wenn man sich genauer klar gemacht hat, wie groß der Unterschied eigentlich ist, muss man sich auch überlegen, was einem der Performancevorteil wert ist.

    Mit C++ kann man sehr effizient arbeitende Programme schreiben. Man hat auch sprachliche Möglichkeiten, sehr elegante Programme zu schreiben. Aber was will man letztendlich eigentlich haben? Eleganten Code? Wer bezahlt einen dafür? Ein 20% schnelleres Programm? Dafür bezahlen einen bestimmt Leute. ...in ganz bestimmten Bereichen. Für den Großteil der Programme ist die Performance nicht sooo relevant, dass es auf 20% ankommt. ...oder meinetwegen 50%. Außerdem sollte einem bei theoretischen Performancebetrachtungen immer klar sein, dass die Realität nicht dem theoretischen Idealfall entspricht. In der Realität werden Programme von Menschen geschrieben und die holen nunmal nicht 100% raus. Genausowenig wie sie fehlerfreie Programme schreiben. In der Realität hat man oft nichtmal selbst direkten Einfluss auf performancekritischen Code, weil man bestimmte Frameworks nutzt, die von anderen zur Verfügung gestellt werden.

    Bei Java wird es nicht angestrebt, in diesen beiden Bereichen - der absoluten Performance und den umfassensten Sprachmöglichkeiten - die absolute Nr. 1 zu sein. Wer das ohne Einschränkung braucht, der sollte lieber zu C++ greifen. Bei Java spielt es mehr eine Rolle, dass dem Entwickler viele Entscheidungen einfach gemacht werden sollen. Man soll leicht, schnell und effektiv damit programmieren können. Aus diesem Grund ist die Sprache im Vergleich zu C++ einfacher gehalten. Aus diesem Grund wird eine große Standardbibliothek mitgeliefert. Und aus diesem Grund sind auch die Werkzeuge (IDEs usw.) für Java ausgereifter. Das macht den wesentlichen Vorteil von Java aus, der in der Wirtschaft auch oft sehr relevant ist.



  • Gregor schrieb:

    ....

    Danke!



  • rüdiger schrieb:

    @pale dog
    Ich finde nicht, das mein Posting ein höheres Flame-Potential hat, als die anderen. Außerdem wie sollte man bitte bei diesem Thema entspannen?

    na, einfach locker bleiben 🙂
    ok, ein wenig kann ich euch c++ fans schon verstehen.
    wenn man mitbekommt, wie im laufe der jahre eure lieblingssprache langsam ins abseits gedrängt wird (und gerade Java 'der erzfeind' hat damit angefangen!), dann kann's schon frustrierend sein und vielleicht erklärt das auch, warum c++ fans ganz besonders auf java so allergisch reagieren.
    ich weiss zwar nicht, was auf Java-boards so abgeht, aber ich möchte wetten, dass es dort viel-viel weniger flamewars gibt, wenn mal einer nach 'C++' fragt...



  • rüdiger schrieb:

    OOP wäre dagegen wohl eher 4.sqrt();

    Zahlen als Objekte? Als Perfektion der objektorientierten Programmierung? Naja, ich weiß nicht so ganz, was das soll? Warum sollte man das machen? Letztendlich ist das ja sogar eine philosophische Frage...

    Also: Warum betreibt man überhaupt OOP? Da wird einem ganz oft gesagt, dass das Denken mit Objekten mehr dem menschlichen Denken entspricht, als das Denken in Funktionen oder Prozeduren oder so so. Und es geht um die Beherrschung von Komplexität. Wie ist das jetzt mit Zahlen? Behandelt der Mensch Zahlen in seinen Gedanken wie Objekte? Kleinkinder machen das: Wenn man denen das Zählen beibringen möchte, dann koppelt man Zahlen dabei nicht ohne Grund an konkrete Objekte. Da wird nicht 1,2,3 gezählt, sondern 1 Apfel, 2 Äpfel, 3 Äpfel. Ok, Entwickler sind aber in den seltensten Fällen Kleinkinder und haben im Allgemeinen Zahlen von konkreten Objekten abstrahiert. Das betrifft auch die Menschheit im Allgemeinen. Hat man in der Antike noch mit Strecken gerechnet, so stellt die enorme kulturelle Leistung, Zahlen hiervon zu abstrahieren, eine Grundlage dar, die viel Fortschritt ermöglicht hat. Man muss sich nur mal überlegen, was es heißt, Zahlen als konkrete Entitäten von Strecken zu sehen. Da gibt es dann plötzlich Unterschiede der Art "die selbe Strecke vs. die gleiche Strecke". ...es dürfte sogar oft unmöglich sein, bestimmte Gleichheiten zu erkennen.

    In meinen Gedanken unterscheide ich nicht zwischen unterschiedlichen Entitäten der "5". Es gibt da keinen Unterschied zwischen Referenzgleichheit und Wertegleichheit in meinen Gedanken. 5 ist 5 und niemals "eine andere 5". 5 wird auch niemals erzeugt: 5 hat schon immer existiert und wird auch immer existieren. 5 hat keinen Lebenszyklus. 5 hat auch keinen Zustand.

    Wenn ich an Objekte denke, dann verbinde ich aber solche Eigenschaften damit. Nicht immer alle, aber immer einige. Insofern ist es für mich persönlich nicht unbedingt einleuchtend, warum man es anstreben sollte, Zahlen in Programmiersprachen wie Objekte zu behandeln. ...nur weil man das für 100% OOP hält?



  • pale dog schrieb:

    ...
    wenn man mitbekommt, wie im laufe der jahre eure lieblingssprache langsam ins abseits gedrängt wird (und gerade Java 'der erzfeind' hat damit angefangen!), dann kann's schon frustrierend sein und vielleicht erklärt das auch, warum c++ fans ganz besonders auf java so allergisch reagieren.
    ich weiss zwar nicht, was auf Java-boards so abgeht, aber ich möchte wetten, dass es dort viel-viel weniger flamewars gibt, wenn mal einer nach 'C++' fragt...

    Kann vielleicht auch eher daran liegen, dass hier immer frustrierte Javafans auftauchen, die nicht verkraften, dass ihre Sprache immer noch nicht "den großen Bruder C++ verdrängt hat" .... weswegen sie das Gegenteil als ewiges Mantra wiederholen (in der Hoffnung, dass es dadurch endlich wahr werden möge).
    Ist ja auch blöd, wenn es Leute gibt, die einen gar nicht darum beneiden, dass man auf dem "Hiptrain" sitzt .... sondern lieber schnell ankommen.
    😃

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Ist ja auch blöd, wenn es Leute gibt, die einen gar nicht darum beneiden, dass man auf dem "Hiptrain" sitzt .... sondern lieber schnell ankommen.

    "Hiptrain"? Meinst Du, Java stellt nur einen vorübergehenden Hype dar? Für die IT-Branche dauert dieser Hype schon enorm lange an, heh? Ich könnte ja verstehen, wenn Du das 1997 gesagt hättest, aber inzwischen ist es schon 10 Jahre später und Java ist immer noch enorm wichtig. Java hat sich in vielen Bereichen etabliert und ist längst kein Hype mehr.



  • @pale dog: Was ich so beobachte, bist du recht gut in C unterwegs. Wie kommt es dann, daß du so gegen C++ stehst (ist doch viel näher an C als Java)?



  • Simon2 schrieb:

    pale dog schrieb:

    ...
    wenn man mitbekommt, wie im laufe der jahre eure lieblingssprache langsam ins abseits gedrängt wird (und gerade Java 'der erzfeind' hat damit angefangen!), dann kann's schon frustrierend sein und vielleicht erklärt das auch, warum c++ fans ganz besonders auf java so allergisch reagieren.
    ich weiss zwar nicht, was auf Java-boards so abgeht, aber ich möchte wetten, dass es dort viel-viel weniger flamewars gibt, wenn mal einer nach 'C++' fragt...

    ...

    Da wir ja alle locker bleiben: Zumindest schon einmal gut gebrüllt, Löwe 😃
    Hätt ich nicht besser gekonnt.

    Aber ein Hype ist Java mit allen Techniken drum herum schon lange nicht mehr.

    Und was die Zahlen betrifft, erstens stehen einem die nativen Typen auch weiterhin zur Verfügung und die benutzt man zum Rechnen auch, und zweitens gibt es Situationen, in denen man die Zahlen-Objekte benötigt. Bsp. ist hier die Reflection-API.
    btw: Zahlen sind nicht die einzigen Objekte, die Java bietet und erstrecht nicht das einzige, was Java ausmacht.
    In Smalltalk waren sogar die Klasse Objekte, und wenn jemand fragt, warum man das machen sollte, dann muß man antworten, weil Smalltalk *wirklich* objektorientiert ist und nach einigen Jahren beruflicher Praxis wird man hier und da über Stellen stolpern die einen Aha-Effekt hervorbringen. 'Beruflicher Praxis' deshalb, weil man im privaten Bereich normalerweise nicht vor so 'grossen' Designaufgaben steht.



  • Simon2 schrieb:

    Kann vielleicht auch eher daran liegen, dass hier immer frustrierte Javafans auftauchen, die nicht verkraften, dass ihre Sprache immer noch nicht "den großen Bruder C++ verdrängt hat"

    das glaube ich nicht.
    so ein verdrängungsprozess läuft in etwa ab wie darwins 'natürliche auslese' 😉
    nach dem motto 'das bessere ist des guten feind' werden programmiersprachen mit dem höheren gebrauchswert andere zurückdrängen.
    daran können alle flamewar-gestählten Java- und C++ freunde dieser welt nichts ändern...
    🙂



  • @CStoll:
    btw: Ich bin nicht gg. C++, das kann ich mir beruflich auch nicht erlauben, wenn ich die Wahl hätte, würde ich aber lieber wieder mit Java weitermachen (nachdem ich vor Jahren dazu gezwungen wurde...).

    @all:
    Um mal wieder konsruktiv zu werden, falls jmd. echtes Interesse an Java hat und sich Eclipse gezogen hat (sollte er dann tun) und nicht weiter kommt, dann kann er gern bei mir nachfragen. Bei grundlegende Fragen kann ich sicher helfen. Die meisten Fragen werden aber sowieso in vielen Foren beantwortet.



  • pale dog schrieb:

    wenn man mitbekommt, wie im laufe der jahre eure lieblingssprache langsam ins abseits gedrängt wird

    Wer sagt, dass C++ meine lieblings Sprache sei? :p

    ansonsten halte ich deinen Beitrag für einen billigen Flame versuch (siehe CStolls Antwort :p)

    Gregor schrieb:

    Zahlen als Objekte? Als Perfektion der objektorientierten Programmierung? Naja, ich weiß nicht so ganz, was das soll? Warum sollte man das machen? Letztendlich ist das ja sogar eine philosophische Frage...

    Was es soll ist ein anderes Thema. Hier ging es darum zu Zeigen, das Java eben nicht der Quell der Objektorientiertheit ist, weil man nur Methoden und keine freien Funktionen hat.

    btw: Zahlen sind nicht die einzigen Objekte, die Java

    Java bietet überhaupt keine Zahlen als Objekte. Gerade in Java gibt es ein Typsystem und ein Objektsystem. Das sind aber zwei komplett verschiedene Paar Schuhe. Daher ist es in Java auch nicht direkt möglich Klassen als Typen zu modelieren (siehe mangelnde Operator-Überladung oder fehlender Typ-Support in den OO-Bereichen oder bei Generics).


Anmelden zum Antworten