Feature-Request: Deklaration von Objekten

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Patito
Beiträge: 203
Registriert: Di 22. Sep 2009, 13:08
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Feature-Request: Deklaration von Objekten

Beitrag von Patito »

mschnell hat geschrieben:Genau.

Und FPC macht solche Sachen mit Absicht nicht, um hochperformante Applikationen zu ermöglichen.

-Michael
Außerdem hilft der GC auch nicht wirklich Bugs zu vermeiden, sondert verschleiert eher die Probleme.
Objekte haben oft einen Lebenszyklus, wobei nach dem Tod des Objekts jeder Versuch darauf zuzugreifen ein Bug ist.

Ohne GC sieht das so aus:
a) Man bekommt eine Access-Violation, oder greift auf eventuell grob unsinnigen Datenmüll zu...
Mit sowas wie FastMM kriegt man im Debug-Modus solcher Fehler samt Ursache praktisch auf dem Tablett geliefert.
Ein guter Speichermanager kann im Debug-Modus die Objekte beim Vernichten komplett Nullen oder mit Jumps zu aussagekräftigen Expeptions überschreiben, o.Ä...
-> Sehr leicht erkennbare Bugs, deren Ursache sich fast vollautomatisch ermitteln läßt.

Mit GC:
b) Das Zombie-Objekt wird durch jede beliebige Referenz am Leben gehalten. Methodenaufrufe des Objekts sehen komplett legal aus.
-> Sehr schwer erkennbare Bugs

Um mal ein Beispiel zu geben:
Objekt A ist eine Bestellung von 20 Tonnen nassem Zement, die direkt vor deine Garage gekippt werden.

Ohne GC:
1) User klickt auf "Bestellung Sofort LÖSCHEN"
2) Objekt wird freigegeben.
3) Irgendein dummer BackgroundThread versendet die Bestellung.
4 ) Jetzt gibt es folgende Möglichkeiten:
a) das Programm crasht
b) es werden 7 "Grügel" nach Dunzenhausen bestellt.
c) (ohne Debug-Modus) das Objekt liegt noch unberührt auf derselben Speicherstelle und wird bestellt.
5) Alle wundern sich

Mit GC:
1) Die Bestellung wird gelöscht.
2) Der BackgroundThread versendet die Bestellung trotzdem
3) Der Beton wird direkt vor deine Garage gekippt
4) "War doch so ausgemacht!"

Kommt jetzt auf die Sichtweise an. Manche Leute werden sicher sagen, dass durch das Verschleiern der Bugs die Code-Qualität zunimmt (schwer reproduzierbar -> blame the User -> keine Probleme)

Fazit: ObjektPascal ist dem Schweinekram von C++, Java etc. so haushoch überlegen, dass es schon unwürdig ist darüber zu diskutieren...

lrlr
Beiträge: 127
Registriert: Di 3. Nov 2009, 09:48

Re: Feature-Request: Deklaration von Objekten

Beitrag von lrlr »

sehe ich genauso wie patito...


zum:
>Eine Art "Garbage Collector" mittels Referenzzählung


das geht nicht.. (sobald sich 2 gegenseitig referenzieren wird nix mehr freigegenben..)

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Feature-Request: Deklaration von Objekten

Beitrag von pluto »

Ich habe nicht gesagt das ich das befürworten würde, aber es wäre umsetzbar, aber ob das wirklich der Thread Ersteller im Sinn hatte ?
MFG
Michael Springwald

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6771
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Feature-Request: Deklaration von Objekten

Beitrag von af0815 »

pluto hat geschrieben:Ich habe nicht gesagt das ich das befürworten würde, aber es wäre umsetzbar, aber ob das wirklich der Thread Ersteller im Sinn hatte ?
Wenn es wer unbedingt will, so kann er sich ja die Programmiersprache aussuchen die das drauf hat und muß das nicht in eine Sprache hineinreklamieren, die diese Szenarien seit urgedenken nicht will.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Feature-Request: Deklaration von Objekten

Beitrag von pluto »

Es ist schon eigenartig: Jemand macht eine Anfrage und was bekommt er ?
Nur Doofe antworten. Ich möchte nicht behaupten ich hätte ihn verstanden. Aber egal was man auch vorschlägt: Entweder es wird behauptet: Das braucht keiner oder es wird gesagt, wegen Delphi Kompatibilität oder es ist eine besondere Funktion. Mal ehrlich: Soll sich das Projekt nicht weiter Entwickeln und von anderen Projekten Lernen ? Also Warum werden alle Wünsche und Anregen so gehandhabt ? Sogar wenn man verbesserungs Vorschläge zum Forum hat, werden sie verneint. Also es ist kein Wunder, wenn irgendwann überhaupt keine Vorschläge mehr kommen.

Tut mir Leid, aber so kann es nicht weiter gehen. Ich finde, wir sollten mir Vorschlägen anders umgehen oder mit Wünschen. Nur weil ihr da gegen seit, müsst ihr ihn noch lange nicht so behandeln. Ihr könnt höflich eure Meinung sagen und euren Standpunkt da stellen. Aber in einem angebrachten Ton. Wir sind hier doch in einem Fach Forum und wir können uns wie Erwachsende Unterhalten und über sowas reden. Also wirklich, ich verstehe euch nicht mehr... Dieser Thread ist nur ein Beispiel dafür, ich könnte noch andere Beispiele aus dem Forum aufzählen....
MFG
Michael Springwald

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Feature-Request: Deklaration von Objekten

Beitrag von Socke »

pluto: Ich stimme dir vollkommen zu.

Ich denke, dass Pascals Ursprünge als Lehrsprache immer noch gut sichtbar sind. Man muss alles von Hand machen. In Visual Basic 6 musst du fast gar nichts mehr von Hand machen, dafür hast du aber auch keine Datentypen und weißt nicht, wie dein Datum im Speicher vorliegt. Das ist für einen Pascal-Programmierer unvorstellbar (sehe ich an mir selbst). Deswegen muss in Pascal auch alles nachvollziehbar sein, ohne dass der Compiler irgendetwas automatisch ohne wissen des Programmierers erledigt (ich bekomme ja schon bei Referenz gezählten Interfaces Probleme). Hier prallen Welten und Religionen aufeinander.

Zum Thema möchte ich sagen, dass sich die ganze Referenzzählung bzw. GarbageCollectors von Objekten durch entsprechendes Design überflüssig wird. Bei einfachen Datentypen wie Strings, die vollkommen automatisiert sind, bringt die Referenzzählung natürlich einiges an Vereinfachung. Sicherlich gibt es auch Projekte, bei denen das automatisierte Freigeben von Objekten weniger Programmierarbeit bedeutet. Beispiel: 3D-Spiele - sobald ich ein 3D-Objekt nicht mehr brauche (der Spieler ist in einem anderen Level) werden alle nicht mehr benötigen Objekte freigegeben. Für Pascal-Programmierer ist das nicht nachvollziehbar und deshalb böse. In Pascal muss so etwas wieder von Hand geschrieben werden, sodass in der Praxis oft zu anderen Sprachen gegriffen wird.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten