Was genau habe ich von Pointern?
-
zeiger sind doch nun wirklich nützlich. vor allem wilde zeiger. mit denen kann man wunderbar elefanten jagen.

-
Tachyon schrieb:
NixDa schrieb:
Denn Zeiger hat ja fast jede Sprache: Java, C#, PHP, Python,...
Jo, das sind alles Sprachen mit Zeigern...
Ja sind sie, auch wenn sie es immer "Referenzen" nennen. Aber das ist Marketing-Blabla weil Zeiger ja böse sind...
-
fricky schrieb:
...dass es auch mit referenzen geht, war nur eine annahme von mir..
..die aber nunmal am entscheidenden Punkt falsch ist. Das Besondere an Referenzen ist eben, dass sie nicht "umhängbar" sind und das ist bei "Indizes" (genauergesagt: Bei den Variablen, die die Indexinformationen halten) und auch bei Pointern anders.
Gruß,
Simon2.
-
NixDa schrieb:
Ja sind sie, auch wenn sie es immer "Referenzen" nennen. Aber das ist Marketing-Blabla weil Zeiger ja böse sind...
Ich würde es anders sagen: Zeiger können problematisch sein (gerade wenn sie wie in C++ "ungeprüft" sind), sind aber auch in gewissen Grad nötig. Sprich: "Vermeide Zeiger wo möglich, verwende sie wo nötig".
cu André
-
NixDa schrieb:
Tachyon schrieb:
NixDa schrieb:
Denn Zeiger hat ja fast jede Sprache: Java, C#, PHP, Python,...
Jo, das sind alles Sprachen mit Zeigern...
Ja sind sie, auch wenn sie es immer "Referenzen" nennen. Aber das ist Marketing-Blabla weil Zeiger ja böse sind...
Ne, das sind Referenzen.

-
Tachyon schrieb:
NixDa schrieb:
Tachyon schrieb:
NixDa schrieb:
Denn Zeiger hat ja fast jede Sprache: Java, C#, PHP, Python,...
Jo, das sind alles Sprachen mit Zeigern...
Ja sind sie, auch wenn sie es immer "Referenzen" nennen. Aber das ist Marketing-Blabla weil Zeiger ja böse sind...
Ne, das sind Referenzen.

.... und was sind dann "Zeiger" ?
... und was sind dann "C++-Referenzen" ?
Gruß,
Simon2.
-
Tachyon schrieb:
Ne, das sind Referenzen.

Im C++ sinne sind es lustigerweise aber zeiger

man kann es nennen wie man will - insofern ist marketing blabla schon treffend (und die leute fallen massig drauf rein): zeiger in c++ und referenzen in java,... sind das exakt selbe konzept. ob man es nun zeiger oder referenz oder rebindable object nennen mag - es ist das selbe konzept.
der einzige unterschied ist, dass man in c++ zeiger incrementieren und decrementieren kann - das ist idr aber nie ein problem. das problem mit zeigern ist, dass sie wild sein koennen und da hilft einen auch kein gc dagegen. aber marketingmaessig sieht das natuerlich komplett anders aus...
c++ referenzen gibt es in der tat nirgendwo anders, zumindest nicht im mainstream bereich.
-
Shade Of Mine schrieb:
das problem mit zeigern ist, dass sie wild sein koennen und da hilft einen auch kein gc dagegen.
Java-"Zeiger" können nicht verwildern.
-
ThaRealMatix schrieb:
Was genau habe ich von Pointern?
Die Adresse und den Wert.
-
Shade Of Mine schrieb:
c++ referenzen gibt es in der tat nirgendwo anders
so eine tolle erfindung ist das aber auch nicht. ähnliches gibts schon lange.
int a; #define A_REF a A_REF = ...; // <-- verändert a
-
fricky schrieb:
Shade Of Mine schrieb:
c++ referenzen gibt es in der tat nirgendwo anders
so eine tolle erfindung ist das aber auch nicht. ähnliches gibts schon lange.
int a; #define A_REF a A_REF = ...; // <-- verändert a
Doch - das "Tolle" an Referenzen (ggü. Deinem Ansatz) sind z.B.
- ihre "Sichtbarkeit für den Compiler" ... was z.B. Typsicherheit und all die anderen Folgen nach sich zieht.
- die Gültigkeit von Referenzen auch außerhalb der Sichbarkeit der "verwiesenen Variablen"
- ...
Und damit sind C++-Referenzen schon etwas "Neues" und "Tolles", weil sie vernünftig das Konzept des "festen Verweises" benutzbar umsetzen.
Gruß,
Simon2.
P.S.: "Getretener Quark wird breit, nicht stark" ... da helfen auch keine Smilies. Ich habe mit jedem Deiner Posts stärker den Eindruck, dass Du C++-Referenzen nicht wirklich durchschaut hast - aber einfach gerne widersprichst.
-
Simon2 schrieb:
Ich habe mit jedem Deiner Posts stärker den Eindruck, dass Du C++-Referenzen nicht wirklich durchschaut hast - aber einfach gerne widersprichst.
es ging mir nicht um die feinheiten. ich meinte, dass die idee, die selbe variable unter verschiedenen namen ansprechen zu können, keinen besonders brillianten geist erfordert. das bezog sich auf die aussage von shade'o'mine, der sagte: 'c++ referenzen gibt es in der tat nirgendwo anders'.

-
Das mag sein, aber diese Analogie ist nicht Deine erste, die an der entscheidenden Stelle schräg ist ...
Shade hat auch nirgends "Genialität" postuliert, sondern lediglich "Einzigartigkeit" (bzw. "Seltenheit") ... damit ist nicht einmal ein positives Qualitätsmerkmal verbunden (man kann auch einzigartig dämlich sein
).Gruß,
Simon2.
-
...
-
@Simon2:
exakt. Referenzen in C++ sind etwas dass es sonst kaum gibt. Punkt aus. Java hat keine Referenzen, PHP hat keine,...
Das sagt nichts über die wertigkeit aus. Aber es ist halt ein Fakt den viele übersehen weil der Name Referenz immer und überall fällt.Andromeda schrieb:
Shade Of Mine schrieb:
das problem mit zeigern ist, dass sie wild sein koennen und da hilft einen auch kein gc dagegen.
Java-"Zeiger" können nicht verwildern.
Doch sehr wohl. Und das zeigt zB wieder dieses schöne "Marketing Bla Bla".
In Java kann ein Objekt einen ungültigen zustand haben. zB weil ich close() aufgerufen habe. Ergo kann eine Referenz auf ein ungültiges Objekt verweisen.
Es geht aber noch weiter: Referenzen in Java können aber auch auf zu alte Objekte zeigen die man nicht mehr verwendet und halt noch gültig sind weil der GC sie nicht weggeräumt hat aber eben bereits durch ein anderes Objekt ersetzt wurde. Ist btw sehr böse, weil es eben keine Fehlermeldung dann gibt.
Und die beliebten NullPointerExceptions gibts auch.
Ich sage nicht dass Referenzen in Java schlecht sind, ich sage nur dass Referenzen in Java das selbe Konzept wie Zeiger in C++ sind.
-
ShadeOfMine@work schrieb:
Andromeda schrieb:
Shade Of Mine schrieb:
das problem mit zeigern ist, dass sie wild sein koennen und da hilft einen auch kein gc dagegen.
Java-"Zeiger" können nicht verwildern.
...
In Java kann ein Objekt einen ungültigen zustand haben. zB weil ich close() aufgerufen habe. Ergo kann eine Referenz auf ein ungültiges Objekt verweisen.Das Objekt existiert aber noch. Du hast hier keinen "Wild" Pointer.
ShadeOfMine@work schrieb:
Es geht aber noch weiter: Referenzen in Java können aber auch auf zu alte Objekte zeigen die man nicht mehr verwendet und halt noch gültig sind weil der GC sie nicht weggeräumt hat ...
Ja, siehe oben.
ShadeOfMine@work schrieb:
... aber eben bereits durch ein anderes Objekt ersetzt wurde.
Wie meinst Du das?

-
Andromeda schrieb:
Shade Of Mine schrieb:
das problem mit zeigern ist, dass sie wild sein koennen und da hilft einen auch kein gc dagegen.
Java-"Zeiger" können nicht verwildern.
Das würde ich auch so sehen (wobei ich kein Javaspezi bin) ... hat aber nicht wirklich etwas mit "Zeigern" zu tun, sondern mit dem gesamten "Lebenszeitende"-Konzept, dass es in Java eben nicht gibt, das in C++ aber ein starkes Element ist.
Ergo: Diese "Nicht-Verwilderbarkeit" kostet auch einiges.Einen echten Vorteil von "Java-Referenzen" ggü. "C++-Zeigern", sehe ich darin, dass Erstere beim erzeugen auf null gesetzt werden (IIRC !!)...
man kann also nicht vergessen, einen Zeiger mit 0 zu initialisieren - aber das ist IMHO kein konzeptioneller Unterschied, sondern eher ein kleiner Handlingsvorteil (mal ganz abgesehen davon, dass man natürlich auch in Java vergessen kann, eine Referenz auf das gewünschte Objekt umzubiegen).Gruß,
Simon2.
-
Andromeda schrieb:
Wie meinst Du das?

Model m=obj.getModel(); obj.setModel(new Model());m ist wild pointer
-
ShadeOfMine@work schrieb:
Andromeda schrieb:
Wie meinst Du das?

Model m=obj.getModel(); obj.setModel(new Model());m ist wild pointer
Ohne zusätzliche Infos ist das nicht zwangsläufig der Fall.
-
Tachyon schrieb:
Ohne zusätzliche Infos ist das nicht zwangsläufig der Fall.
"nicht zwangslaeufig" impliziert dass dies der fall sein kann.
q.e.d.danke.