c++ vs. java... was hat zukunft
-
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.
-
dot schrieb:
eine verknüpfung von zwei objekten.
außerdem sollte man bedenken, dass die welt nicht nur aus OOP besteht.
Eine "Verknüpfung von 2 Objekten" ist nichts, was mir aus der Begriffswelt der OOP bekannt ist?! ...sicher gibt es mehr als OOP. Und ich hatte ja auch schon festgestellt, dass C++ eine Multiparadigmensprache ist. Java ist das aber nicht.
-
Gregor schrieb:
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.
Und warum wurde eine bestimmte (recht kleine) Gruppe von Klassen ausgewählt, die Java speziell behandelt?
Jester schrieb:
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?
Das Problem habe ich schon mehrfach versucht zu erklären, aber keiner der Javaner hat richtig zugehört
Mit einem 'int x=y;' erzeugst du einen eigenständigen int-Wert, den du völlig unabhängig von y weiter behandeln kannst. Mit 'MyType x=y;' erzeugst du eine eigenständige Referenz, die aber mit dem gleichen Objekt arbeitet, das y festhält.
-
CStoll schrieb:
Mit einem 'int x=y;' erzeugst du einen eigenständigen int-Wert, den du völlig unabhängig von y weiter behandeln kannst. Mit 'MyType x=y;' erzeugst du eine eigenständige Referenz, die aber mit dem gleichen Objekt arbeitet, das y festhält.
da ist nichts mit 'festhalten', eine referenz ist auch bloss eine variable, nicht das objekt selber. wieso ist das nur so schwer zuverstehen
-
CStoll schrieb:
Das Problem habe ich schon mehrfach versucht zu erklären, aber keiner der Javaner hat richtig zugehört
Mit einem 'int x=y;' erzeugst du einen eigenständigen int-Wert, den du völlig unabhängig von y weiter behandeln kannst. Mit 'MyType x=y;' erzeugst du eine eigenständige Referenz, die aber mit dem gleichen Objekt arbeitet, das y festhält.
Ich sehe das Problem in der Tat nicht. "=" ist der Zuweisungsoperator. Jetzt kann man sich angucken, was man da für Variablen hat. In Java bezeichnen die entweder primitive Datentypen oder Referenzen auf Objekte. ...und der Zuweisungsoperator macht immer das Gleiche. Das was rechts steht, wird der Variablen zugewiesen, die links steht.
-
int x = y; x = x + 1; // verändert y nicht MyType x = y; x.add(1); // verändert y
so hab ich das als nicht javaianer verstanden.
-
pale dog schrieb:
CStoll schrieb:
Mit einem 'int x=y;' erzeugst du einen eigenständigen int-Wert, den du völlig unabhängig von y weiter behandeln kannst. Mit 'MyType x=y;' erzeugst du eine eigenständige Referenz, die aber mit dem gleichen Objekt arbeitet, das y festhält.
da ist nichts mit 'festhalten', eine referenz ist auch bloss eine variable, nicht das objekt selber. wieso ist das nur so schwer zuverstehen
Du hast selber gesagt, daß man in Java die Referenzen komplett vergessen kann. Aber bei der Zuweisung ist es dann doch wieder wichtig, ob man jetzt einen Primitiv-Typ oder eine Referenz zuweisen will (ich halte mich an deine Worte und betrachte die Objekte, mit denen ich arbeiten will - und das sind der int-Wert bzw. das MyType-Objekt).
@Gregor: Die Referenzen sind auch nur ein Hilfsmittel - wichtig für den Anwendungsprogrammierer sind die Primitivtypen und die referenzierten Objekte.
-
dot schrieb:
int x = y; x = x + 1; // verändert y nicht MyType x = y; x.add(1); // verändert y
so hab ich das als nicht javaianer verstanden.
Darf ich ? Darf ich ?
[javaner-modus]y wird nicht verändert ! Es zeigt immer noch auf dasselbe Objekt ![/javaner-modus]Richtig, pale ?
Gruß,
Simon2.
-
CStoll schrieb:
Du hast selber gesagt, daß man in Java die Referenzen komplett vergessen kann. Aber bei der Zuweisung ist es dann doch wieder wichtig, ob man jetzt einen Primitiv-Typ oder eine Referenz zuweisen will (ich halte mich an deine Worte und betrachte die Objekte, mit denen ich arbeiten will - und das sind der int-Wert bzw. das MyType-Objekt).
Ich weiß nicht, was pale dog in diesem Zusammenhang gesagt hat. ...vermutlich ging es um "Java hat keine Zeiger" oder so. Damit meint man: "Java hat keine Zeigerarithmetik". ...was IMHO eher positiv zu sehen ist.
-
Irgendwie habe ich hier den Eindruck, ihr solltet euch alle nochmal die Java-Variante von "Pointer-fun with Binky" anschauen.
-
Simon2 schrieb:
Darf ich ? Darf ich ?
[javaner-modus]y wird nicht verändert ! Es zeigt immer noch auf dasselbe Objekt ![/javaner-modus]Man hätte es nicht treffender auf den Punkt bringen können.
-
Simon2 schrieb:
Darf ich ? Darf ich ?
[javaner-modus]y wird nicht verändert ! Es zeigt immer noch auf dasselbe Objekt ![/javaner-modus]das is mir klar. ich meinte natürlich, dass es das objekt auf welches sich y referenziert verändert.
und ich frag mich nur grad wo da jetzt der vorteil liegt.