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



  • Gregor schrieb:

    Simon2 schrieb:

    Mal aus Interesse: Wie ist denn java.lang.BigInteger geschrieben ? Können die mehr als der normale Javaprogrammierer ?

    Ganz normale Javaklasse. ...

    Und wie haben die das gemacht ? (Weil CStolls Fragen ja konzeptioneller Natur und durchaus interessant sind)

    Gruß,

    Simon2.



  • generell kann man sagen das java nicht vollkommen generisch ist, da man immer zwischen primitiven und objektreferenzen unterscheiden muss, und diese unterschiedlich behandeln muss, da es keine möglichkeit der gleichbehandelung gibt



  • Gregor schrieb:

    CStoll schrieb:

    Ich verlange Gleichberechtigung.

    Java hat nichts mit Idealismus zu tun. Habe ich doch schon gesagt: Es geht mehr um Pragmatismus.

    Und schon beim Pragmatismus hapert es. Vielleicht bin ich ja zu tief im C++ Template-Denken verankert, aber für mich definiert sich ein Objekt nicht nur dadurch, was es kann, sondern auch wie du dieses Können abrufen kannst. Und wenn die selbe Operation (z.B. Addition) bei verschiedenen Typen völlig anders angesprochen werden muß oder die Wirkung einer Anweisung (z.B. das recht primitive 'x=y;') davon abhängt, welche Typen man verwendet, läuft das zumindest meinem Konzept zuwider.



  • schon aus smalltalk dürften protokolle bekannt sein
    alles was sich aufführt wie ein integer wird wohl einer sein
    in java hat man eher - oh alles was sich aufführt wie eine primitive geht mir auf die nerfen weils unvereinbar mit anderen objekten ist



  • Also wenn ich Echtzeitanwendungen brauche dann ist mir ein nichtdeterministischer GC einfach im Weg.

    Um also mal zum eigentlichen Thema zurückzukommen ( irgendwie driftet das hier in Richtung "meine Syntax ist besser als deine, weil ich BigInts per operatoroverloading für Dummys benutzbar machen kann" ab):

    Es wird für beide ( und andere ) Programmiersprachen eine Zukunft geben, solange es unterschiedliche Anforderungen an Software gibt.

    Verge



  • Simon2 schrieb:

    Gregor schrieb:

    Simon2 schrieb:

    Mal aus Interesse: Wie ist denn java.lang.BigInteger geschrieben ? Können die mehr als der normale Javaprogrammierer ?

    Ganz normale Javaklasse. ...

    Und wie haben die das gemacht ? (Weil CStolls Fragen ja konzeptioneller Natur und durchaus interessant sind)

    du kannst dir den source code anschauen, es sind keine versteckten tricks darin.
    der ist aber etwas länglich um ihn hier zu posten...
    oder soll ich mal?



  • pale dog schrieb:

    ...
    der ist aber etwas länglich um ihn hier zu posten...
    oder soll ich mal?

    Neee, aber vllt. Kannst Du CStoll ja seine Fragen zu dem Thema anhand des Quellcodes beantworten.

    Gruß,

    Simon2.



  • Simon2 schrieb:

    pale dog schrieb:

    ...
    der ist aber etwas länglich um ihn hier zu posten...
    oder soll ich mal?

    Neee, aber vllt. Kannst Du CStoll ja seine Fragen zu dem Thema anhand des Quellcodes beantworten.

    die frage: 'Wie ist denn java.lang.BigInteger geschrieben ? Können die mehr als der normale Javaprogrammierer ?'
    kann man beantworten mit: 'normale javaprogrammierer hätten sich die klasse selber schreiben können'
    🙂



  • Und hätten sich normale Java-Programmierer auch die Klasse String oder Int selber schreiben können?



  • ...als ob zwei blinde sich streiten wer besser sieht...



  • CStoll schrieb:

    Java hat nichts mit Idealismus zu tun. Habe ich doch schon gesagt: Es geht mehr um Pragmatismus.

    Und schon beim Pragmatismus hapert es. Vielleicht bin ich ja zu tief im C++ Template-Denken verankert, aber für mich definiert sich ein Objekt nicht nur dadurch, was es kann, sondern auch wie du dieses Können abrufen kannst. Und wenn die selbe Operation (z.B. Addition) bei verschiedenen Typen völlig anders angesprochen werden muß oder die Wirkung einer Anweisung (z.B. das recht primitive 'x=y;') davon abhängt, welche Typen man verwendet, läuft das zumindest meinem Konzept zuwider.[/quote]
    Ich habe im Zusammenhang mit OOP mal gelernt, dass Objekte in der abstrakten Anschauung über Nachrichten miteinander kommunizieren. Das kannst Du zum Beispiel über Methoden bzw. Methodenaufrufe realisieren. Wie genau passen da jetzt Operatoren rein? aus "a=b*c" ist mir persönlich nicht direkt ersichtlich, welchem Objekt hier eine Nachricht zugeschickt werden soll, dass es etwas bestimmtes machen soll. Naja, die Operatoren definiert man ja meistens eh außerhalb der Klassen, sie haben also keinen direkten Bezug zu den Objekten. Mit anderen Worten: Man müsste mal darüber reden, ob sich Operator-Overloading überhaupt gut mit Prinzipien der Objektorientierung in Einklang bringen lässt.

    Also sag mal: Was stellt so ein binärer Operator eigentlich aus OOP-Sicht dar?



  • xivVerge schrieb:

    Also wenn ich Echtzeitanwendungen brauche dann ist mir ein nichtdeterministischer GC einfach im Weg.

    Es gibt durchaus echtzeitfähige Javavarianten. Was genau willst Du also sagen?



  • CStoll schrieb:

    Und hätten sich normale Java-Programmierer auch die Klasse String oder Int selber schreiben können?

    String hab' ich gerade überflogen, ist natürlich viel quelltext, aber sieht ganz so aus, als wäre sie auch nur mit einfachen Java-mitteln gemacht.
    🙂



  • Gregor schrieb:

    Also sag mal: Was stellt so ein binärer Operator eigentlich aus OOP-Sicht dar?

    eine verknüpfung von zwei objekten.

    außerdem sollte man bedenken, dass die welt nicht nur aus OOP besteht.



  • Gregor schrieb:

    xivVerge schrieb:

    Also wenn ich Echtzeitanwendungen brauche dann ist mir ein nichtdeterministischer GC einfach im Weg.

    Es gibt durchaus echtzeitfähige Javavarianten. Was genau willst Du also sagen?

    Das es z.B. keine DSPs gibt, welche ich mit Java programmieren kann.



  • Gregor schrieb:

    Also sag mal: Was stellt so ein binärer Operator eigentlich aus OOP-Sicht dar?

    a+b -> a.operator+(b)



  • CStoll schrieb:

    Und hätten sich normale Java-Programmierer auch die Klasse String oder Int selber schreiben können?

    Du kannst Dir die ganze Standardbibliothek selbst schreiben. Sowohl die String-Klasse, als aich die Integer-Klasse. ...nur hast Du dann nicht die Sonderbehandlungen für diese Klassen, die in der Sprachspezifikation eben genau für diese Klassen geregelt sind.



  • Gregor schrieb:

    Ich habe im Zusammenhang mit OOP mal gelernt, dass Objekte in der abstrakten Anschauung über Nachrichten miteinander kommunizieren. Das kannst Du zum Beispiel über Methoden bzw. Methodenaufrufe realisieren. Wie genau passen da jetzt Operatoren rein? aus "a=b*c" ist mir persönlich nicht direkt ersichtlich, welchem Objekt hier eine Nachricht zugeschickt werden soll, dass es etwas bestimmtes machen soll. Naja, die Operatoren definiert man ja meistens eh außerhalb der Klassen, sie haben also keinen direkten Bezug zu den Objekten. Mit anderen Worten: Man müsste mal darüber reden, ob sich Operator-Overloading überhaupt gut mit Prinzipien der Objektorientierung in Einklang bringen lässt.

    Ich hätte auch kein Problem damit, keine Operatoren zu haben - und int's über Methoden miteinander zu multiplizieren. Nur sollten die Möglichkeiten einheitlich für jedes Objekt sein (inklusive Zahlen).

    Also sag mal: Was stellt so ein binärer Operator eigentlich aus OOP-Sicht dar?

    Im einfachsten Fall eine Methode der Zahlenklasse ala "multipliziere dich mit dem Wert x". Aber praktisch dürfte so ein Operator auf double-dispatching hinauslaufen.



  • CStoll schrieb:

    Und wenn die selbe Operation (z.B. Addition) bei verschiedenen Typen völlig anders angesprochen werden muß oder die Wirkung einer Anweisung (z.B. das recht primitive 'x=y;') davon abhängt, welche Typen man verwendet, läuft das zumindest meinem Konzept zuwider.

    x=y; wird in Java immer denselben Effekt haben. x hat danach den selben Wert wie y. Wo genau siehst Du da ein Problem?



  • xivVerge schrieb:

    Das es z.B. keine DSPs gibt, welche ich mit Java programmieren kann.

    http://www.fadata.bg/products/jevm/
    😃


Anmelden zum Antworten