AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlertoleranz DELPHI Compiler

Ein Thema von bernhard_LA · begonnen am 27. Nov 2012 · letzter Beitrag vom 28. Nov 2012
Antwort Antwort
Seite 3 von 5     123 45      
Patito

Registriert seit: 8. Sep 2006
108 Beiträge
 
#21

AW: Fehlertoleranz DELPHI Compiler

  Alt 28. Nov 2012, 10:35
Ich meinte damit, dass man sich dort (bis auf Ausnahmen) keinen Kopf um Speicherverwaltung machen muss - was ich hier nicht bewerten möchte, da es sowohl Vor- als auch Nachteile mit sich bringt.
Um Speicherverwaltung direkt nicht. Aber das eigentliche praktische Problem ist doch, dass man Zugriffe auf bereits entsorgte Objekte verhindern möchte. Da hilft einem der GC gar nicht - bzw. dort ist einfach alles erlaubt.

Ich sehe den Vorteil eher auf der nicht-GC Seite. Dort kann man konkret testen und debuggen.
Während mit GC einfach jedes tote Objekt lustig weiter verwendet werden kann.

Dieses "sich keinen Kopf machen müssen" mit GC halte ich für eine reichlich naive Sichtweise.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#22

AW: Fehlertoleranz DELPHI Compiler

  Alt 28. Nov 2012, 10:53
Dieses "sich keinen Kopf machen müssen" mit GC halte ich für eine reichlich naive Sichtweise.
Siehe meine Signatur.

Aber stimmt ... noch ein Grund, warum der "Probleme" bereiten kann.

Und die hatte ich sogar schon lange bevor das hier auftauchte:
http://www.delphipraxis.net/171824-g...i-objekte.html
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#23

AW: Fehlertoleranz DELPHI Compiler

  Alt 28. Nov 2012, 11:44
Ich sehe den Vorteil eher auf der nicht-GC Seite. Dort kann man konkret testen und debuggen.
Während mit GC einfach jedes tote Objekt lustig weiter verwendet werden kann.
Die Aussage ist ja in sich schon widersprüchlich; entweder ein Objekt wird noch verwendet, dann kann es aber nicht gleichzeitig tot sein. Oder aber es wird nicht mehr verwendet, dann wird es der GC auch wegräumen Ganz im Gegenteil, das Beispiel aus dem Eingangspost zeigt doch sehr schön, dass man derartige Probleme aber bei manueller Speicherverwaltung sehr wohl haben kann. Mit Garbage Collection aber halt schlicht und ergreifend nicht. Und wie du darauf kommst, mit GC liese sich schlechter Debuggen oder Testen, das würde mich ja mal interessieren...
Leo S.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#24

AW: Fehlertoleranz DELPHI Compiler

  Alt 28. Nov 2012, 11:47
Ein GC räumt erst dann Objekte weg, wenn alle Referenzen die auf sie verweisen aus ihrem Scope fallen. Zugriffe auf Referenzen die nicht im Scope liegen, sind schon durch den simplen Syntax-Check abgedeckt.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: Fehlertoleranz DELPHI Compiler

  Alt 28. Nov 2012, 12:31
Die Aussage ist ja in sich schon widersprüchlich; entweder ein Objekt wird noch verwendet, dann kann es aber nicht gleichzeitig tot sein. Oder aber es wird nicht mehr verwendet, dann wird es der GC auch wegräumen
Das Objekt ist tot, wenn es von der "zuständigen Stelle" freigegeben wird.
Ab dann sind Zugriffe auf das Objekt von anderer Stelle aus (Referenzen) darauf grundsätzlich fehlerhaft.
Entweder werden
a) vor kurzem noch korrekte Daten benutzt, die inzwischen aber im Projektkontext keine Gültigkeit mehr haben
b) komplett ungültige Daten benutzt, weil die Speicherstellen inzwischen überschrieben wurden
c) knallt es weil Methoden auf Grund eines überschriebenen Speichers nicht mehr ausführbar sind

Ein GC sichert ab, dass nur Problem a) entsteht. Aber eine ausreichende Lösung ist das noch nicht.
Im Spiel könnte so noch auf das Raumschiff zugeriffen werden, obwohl es eigentlich schon explodiert ist. Jetzt kann man streiten ob das besser ist als eine Exception.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.017 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#26

AW: Fehlertoleranz DELPHI Compiler

  Alt 28. Nov 2012, 12:50
Ich sehe den Vorteil eher auf der nicht-GC Seite. Dort kann man konkret testen und debuggen.
Während mit GC einfach jedes tote Objekt lustig weiter verwendet werden kann.

Dieses "sich keinen Kopf machen müssen" mit GC halte ich für eine reichlich naive Sichtweise.
Wie schon andere gesagt haben, nein, so funktioniert ein GC nicht. Der GC weiß, welche Instanzen noch in Gebrauch sind (mindestens eine Referenz existiert noch). Genau aus diesem Grund gibt es auch in C# WeakReference.
Außerdem ist der GC etwas schlauer als das simple RefCounting, was COM Interfaces praktizieren (zirkuläre strong references = memleak).
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Patito

Registriert seit: 8. Sep 2006
108 Beiträge
 
#27

AW: Fehlertoleranz DELPHI Compiler

  Alt 28. Nov 2012, 12:51
Ich sehe den Vorteil eher auf der nicht-GC Seite. Dort kann man konkret testen und debuggen.
Während mit GC einfach jedes tote Objekt lustig weiter verwendet werden kann.
Die Aussage ist ja in sich schon widersprüchlich;
Ist sie nicht. Stell Dir mal vor Du hast ein Objekt, das eine Bestellung von 100 Tonnen
nassem Beton repräsentiert - der in deinen Vorgarten gekippt werden soll.

Jetzt willst Du dieses Objekt löschen - und alle Zugriffe auf das Objekt sollen
zu Fehlern führen. Mit GC ist das ein Krampf - man muss da quasi händisch das Rad der
Access Violation neu erfinden.

Meiner Erfahrung nach sind die QS-Werkzeuge auf der Seite des GC einfach wesentlich
schlechter.

Dass manche Leute gar nicht erst auf die Idee kommen warum man mal Objekte als erledigt
markieren will spricht Bände...
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.017 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#28

AW: Fehlertoleranz DELPHI Compiler

  Alt 28. Nov 2012, 13:13
Ich sehe den Vorteil eher auf der nicht-GC Seite. Dort kann man konkret testen und debuggen.
Während mit GC einfach jedes tote Objekt lustig weiter verwendet werden kann.
Die Aussage ist ja in sich schon widersprüchlich;
Ist sie nicht. Stell Dir mal vor Du hast ein Objekt, das eine Bestellung von 100 Tonnen
nassem Beton repräsentiert - der in deinen Vorgarten gekippt werden soll.

Jetzt willst Du dieses Objekt löschen - und alle Zugriffe auf das Objekt sollen
zu Fehlern führen. Mit GC ist das ein Krampf - man muss da quasi händisch das Rad der
Access Violation neu erfinden.

Meiner Erfahrung nach sind die QS-Werkzeuge auf der Seite des GC einfach wesentlich
schlechter.

Dass manche Leute gar nicht erst auf die Idee kommen warum man mal Objekte als erledigt
markieren will spricht Bände...
Dass man den Zustand "Bestellung erledigt" auf Speicherverwaltungsebene abhandelt, anstatt als eben das, eine Eigenschaft deiner Bestellung will mir mal gar nicht in den Kopf.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#29

AW: Fehlertoleranz DELPHI Compiler

  Alt 28. Nov 2012, 13:24
Klar, man kann ja gerne ein "Erledigt" Flag in seine Klassen einbauen.
Das muß dann aber auch entweder extern überall geprüft werden, oder man prüft es intern und baut in jede Methode, Getter und Setter die Prüfung ein.
(früher reichte es mal, wenn das Objekt dA freigegeben wurde, wo man Free aufrief. )
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#30

AW: Fehlertoleranz DELPHI Compiler

  Alt 28. Nov 2012, 13:28
Überhaupt habe ich den Eindruck, dass ein GC fast nur dann zu diesen ominösen Problemen führen kann, wenn man einen Speichermanager fälschlicherweise missbraucht um Geschäftslogik zu implementieren.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz