Ergebnis 1 bis 14 von 14

Thema: Verwendung von Pointern/Zeigern!?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von Mog Beitrag anzeigen
    Pointer sind toll und das Grundelement einer brauchbaren Sprache. Man sieht ja bei Java was passiert, wenn man keine Pointer und ordentliches Constantness hat.
    Java mag keine Pointer im Sinne von C++ haben, jedoch sind
    die Referenzen vom Konzept her equivalent.
    Wer nun unbedingt Sachen wie eine verlinkte Liste haben möchte,
    der findet dafür immerhin eine eigene Collection. Nur so als Beispiel.

    Du verschweigst außerdem das Pointer "mal eben" für einige
    große Programmierfehler die Quelle sind. Die sich dann meist
    auch noch schlecht nachvollziehen lassen. Pointer sind also
    kein allheiliges Wundermittel.

    Aber mal nebenbei: Was sieht man denn bei Java? Mich würde
    da irgendwo deine Meinung mal interessieren. Mal schauen ob
    du nur ein C++ Narr bist der gegen Java wettert oder ob du
    wirklich so etwas wie sinnige Argumente hast.

  2. #2
    folgendes steht im Wikipedia-Artikel von Java:
    Zitat Zitat
    Der Objektzugriff in Java ist über Referenzen implementiert. Aus Sicherheitsgründen ist es nicht möglich, deren Speicheradresse zu modifizieren. So genannte Zeigerarithmetik ist mit der Sprache also ausgeschlossen. Per Design können so Fehler, welche häufig in anderen Programmiersprachen auftreten, von vornherein ausgeschlossen werden.
    mich interessiert das "aus Sicherheitsgründen"! Ist das "nur" auf die in anderen Programmiersprachen auftretenden Fehler, welche da angesprochen werden, bezogen oder gibts da noch speziell für Java zutreffende Gründe?

    nur so btw...

  3. #3
    Zitat Zitat von elsen Beitrag anzeigen
    folgendes steht im Wikipedia-Artikel von Java:

    mich interessiert das "aus Sicherheitsgründen"! Ist das "nur" auf die in anderen Programmiersprachen auftretenden Fehler, welche da angesprochen werden, bezogen oder gibts da noch speziell für Java zutreffende Gründe?

    nur so btw...
    Java wurde so entworfen, dass es simpel und trotzdem einigermaßen mächtig sein sollte. Daher wurden Zeiger anders implementiert, nämlich als Referenzen. Diese Referenzen können nicht verändert werden, um zu verhindern, dass sie auf fehlerhafte oder geschützte Speicherbereiche verweisen und das Programm damit zum Absturz bringen.
    Der häufigste Fehler bei Pointern dürfte nämlich der sein, dass man mit dem Freimachen, verschieben und löschen von Speicherstellen und Pointer auf diese einen Fehler einbaut, der zumeist zum Absturz führt. Und diese Fehler sind dann nicht immer leicht zu finden, weil es in der Regel Laufzeitfehler sind, die manchmal nicht reproduzierbar sind, weil sie nur zu ganz bestimmten Konstellationen auftreten (z.B. wenn Speicherbereich X gerade mit Wert Y belegt ist und Programm Z darauf zugreift, das eigene Programm diesen Bereich aber anders belegen will)
    Um solche Fehler zu vermeiden gibt es keine echten Pointer in Java sondern nur die Referenzen, die weniger mächtig sind, aber nach einem ähnlichen Prinzip arbeiten.

    In Java wirst du es öffters antreffen, dass gewisse Dinge nicht machbar sind. Beispielsweise per Applet Dateien auf dem Client-System verändern geht nicht. Das hat auch wieder Sicherheitsgründe, damit Java nicht zur Programmierung von schädlicher Software eingesetzt wird, die dir beim laden einer Website plötzlich die Platte formatiert oder sonstige Sachen anrichtet. Andere Formate wie ActiveX haben die Möglichkeit, Daten zu ändern. Dies stellt ein erhebliches Risiko dar, dafür ist es in diesem Punkt aber auch mächtiger in den Möglichkeiten als eben Java. Nach dem gleichen Prinzip werden dir noch ein paar Dinge unterkommen, die Java aus Sicherheitsgründen nicht unterstützt.

    Zitat Zitat
    Wer nun unbedingt Sachen wie eine verlinkte Liste haben möchte,
    der findet dafür immerhin eine eigene Collection.
    Eine LinkedList ist doch auch in Java kein Thema - eine Referenz übernimmt den Verweis auf das vorherige bzw nächste Element der Liste und schon hast du die Möglichkeit die Liste zu durchlaufen und dynamisch hinzuzufügen. Dafür braucht man keine Pointer.

    Geändert von Ynnus (24.08.2008 um 08:34 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •