AGB  ·  Datenschutz  ·  Impressum  







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

Warum ARC abgeschafft?

Ein Thema von stahli · begonnen am 29. Mai 2020 · letzter Beitrag vom 2. Jun 2020
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von stahli
stahli

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

Warum ARC abgeschafft?

  Alt 29. Mai 2020, 13:20
Delphi-Version: 10.4 Sydney
Warum ist in D 10.4 ARC für mobile Anwendungen abgeschafft?

Dass es einheitlich für Desktop und Mobil sein sollte, ist klar.
Aber wäre es nicht gut gewesen, ARC auch für Desktop einzuführen?

Ich arbeite nur noch mit Interfaces und finde ARC extrem angenehm.
Einziger Nachteil ist das doppelte Schreiben von Interface- und Klassendeklarationen.

Wenn ich mal Objekte freigeben muss, dann nervt mich das eher.

Was spricht gegen ARC?


Etwas Speicherverbrauch und Leistungsverlust stört mich nicht, wenn das nicht zu spüren ist. Die Entwicklungsarbeit wird jedenfalls deutlich vereinfacht (wenn die Interfacedeklarationen etwas automatisiert werden), was mir die Sache auf jeden Fall wert ist.

Mobil habe ich noch nichts entwickelt. Aber wie seht Ihr die Abschaffung von mobilem ARC?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Warum ARC abgeschafft?

  Alt 29. Mai 2020, 13:30
Ich arbeite nur noch mit Interfaces und finde ARC extrem angenehm.
Da gilt ja auch weiterhin ARC, du hast also nichts verloren 😎

Einziger Nachteil ist das doppelte Schreiben von Interface- und Klassendeklarationen.
Interfaces haben auch so noch ganz andere Vorteile, außer der automatischen Freigabe. Keine Bange, es lohnt sich. Und wer nicht gerne viel tippt ist bei Pascal sowieso falsch

Was spricht gegen ARC?
Dass ein Großteil der Delphi-Bibliotheken (dazu gehört z.B. auch die komplette VCL) explizit auf ein manuelles Verwaltungssystem setzt? Code der mit irgendwelchen Ownern und manueller Freigabe von Objekten entstanden ist kannst du nicht auf ARC bringen. Den Aufwand tut sich niemand an.

Aber wie seht Ihr die Abschaffung von mobilem ARC?
Gut dass es endlich einheitlich ist. Ich hatte 2016 mal einen Versuch gewagt mit dem RAD Studio was für iOS/Android zu machen, viel Code ließ sich überhaupt nicht oder nur unter zu großem Aufwand wiederverwenden.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Warum ARC abgeschafft?

  Alt 29. Mai 2020, 13:53
Die Akzeptanz von ARC war von vornherein eher mau.

Das lag zum einen daran, dass man ebend nicht einfach seinen Krams nehmen konnte und es unter ARC lief sondern sich mitunter ein Arm und Bein ausreißen musste.

Zusätzlich war die Implementierung von ARC sauschlecht, was Performance angeht dazu nur 2 Dinge erläutert: 1. die ObjAddRef und ObjRelease Methoden waren virtuell, somit äußert schlecht zu Optimieren für die Häufigkeit der Aufrufe 2. viele Parameter in RTL und FMX waren nicht const, somit wurden die zuvor erwähnten Methoden öfter als notwendig aufgerufen.

Es fehlten wichtige Features, um ohne riesengroße Hacks fehlerfrei entwickeln zu können, wie z.B. die Möglichkeit, anzugeben, was in anonymen Methoden wie gecaptured werden sollte (siehe https://quality.embarcadero.com/browse/RSP-10176 und https://quality.embarcadero.com/browse/RSP-16251)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (29. Mai 2020 um 13:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#4

AW: Warum ARC abgeschafft?

  Alt 29. Mai 2020, 14:07
Aber wäre es nicht gut gewesen, ARC auch für Desktop einzuführen?
Ein Problem dabei war wohl, daß die VCL nicht mal eben so umgestellt werden kann. Da aber eine deutliche Mehrheit der bestehenden Applikationen VCL sind und auch noch eine ganze Weile sein werden, hätte das wohl ein ziemliches Erdbeben ausgelöst. Insofern blieb zur Vereinheitlichung einfach nur diese eine Option.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Warum ARC abgeschafft?

  Alt 29. Mai 2020, 14:21
Willst du uns umbringen?
ARC im Windows ... dann würe ja garkein vorhandenes Programm mehr im 10.4 lauffähig sein.

Zitat:
Aber wäre es nicht gut gewesen, ARC auch für Desktop einzuführen?
Davor hatte ich große Angst und Andere bestimmt auch.
Es war ja angekündigt, dass es irgendwann, in ferner Zukunft, einheitlich werden soll, aber damals klang es noch so, als wenn am Ende alles zum ARC überläuft.


So richtig abgeaschafft wurde es ja nicht ... bissl ist wohl noch da.

Aber der Hauptgrund ist eben, dass nun endlich alle Platformen "vereinheitlicht" sind und somit ein Code viel einfacher zu portieren und wiederzuverwenden ist,
abgesehn vom großen Wiederstand dagegen.

Ich bin aber auch noch am rumschauen was nun wie genau vereinheitlich wurde und was sich nun genau geändert hat und was nun alles mit wem wierum "vereinheitlicht" wurde.

Zuerst fing ich an der Stelle an zu suchen, als ich das "unified memory management" geört hatte.
https://www.delphipraxis.net/204423-...m-windows.html



Ich hatte das letzte halbe Jahr über bissl rumgeschaut, wie ich meine Komponenten auch für Nextgen zum laufen bekomme,
ohne vom ARC gepisackt zu werden und ohne alles durch Interfaces doppelt programmieren zu müssen und bei vielen Property unnötig durch erzwungene Getter/Setter erschlagen und ausgebremst zu werden.

Nun hatte ich von jemandem die virtuellen Interfaces aufgegriffen und teilweise über die Generics in einer Art "Vererbung" auf Records angewendet.
Jetzt war das Konzept vor Kurzem lauffähig und einfach "benutzbar" und ich kann nun "glücklich" alles wieder wegwerfen (das Konzept als Proof-of-concept bleibt erhalten)
und kann nun auch Dank der neuen Record-Operatoren das machen, was ich ursprünglich schon vor 5 Jahren vor hatte.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Mai 2020 um 14:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Warum ARC abgeschafft?

  Alt 29. Mai 2020, 14:59
Ok danke.

Zusammenfassend verstehe ich es so: ARC ist nicht generell schlecht aber schwer umsetzbar für bestehende Frameworks (VCL und Co). Und unterschiedliche Handhabung auf verschiedenen Zielplattformen sollte vermieden werden.


@Schönling

Ich hatte nicht die Befürchtung, dass das einen Einfluss auf Interfaces hat. Dabei bleibe ich so oder so.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (29. Mai 2020 um 15:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Warum ARC abgeschafft?

  Alt 29. Mai 2020, 15:02
Jo, bei Interfaces war es schon immer so und wird auch so bleiben, wie es war.

Mit ARC versuchte man deren Verhalten (automatische Freigabe), und noch bissl mehr (z.B. Weak-Referenzen), brutal in die alten Delphi-Objekte reinzuprügeln.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von MEissing
MEissing

Registriert seit: 19. Jan 2005
Ort: Egelsbach
1.384 Beiträge
 
Delphi 12 Athens
 
#8

AW: Warum ARC abgeschafft?

  Alt 29. Mai 2020, 15:39
Non-ARC hat auch einen Performance-Vorteil. Nicht viel... aber etwas.
Matthias Eißing
cu://Matthias.Eißing.de [Embarcadero]
Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Warum ARC abgeschafft?

  Alt 31. Mai 2020, 10:27
Nun auch mal meinen Senf zum Thema ARC.

Ich konnte mich noch nie mit ARC anfreunden. Wenn ich etwas erzeuge, dann möchte ich auch selber entscheiden, wann es freigegeben wird. Bin vielleicht darin etwas altmodisch.

Lästig ist allerdings der ganze try-finally-Block innerhalb einer Procedure.

Aber dafür hat man mit Managed Records ja nun eine Art ARC-Lite. Einfach eine TStringlist in ein Managed Record (TMyStringlistRec) reinschmeissen. Der Record übernimmt das Erzeugen und Freigeben der Stringlist. Nun muss nur noch in einer Procedure statt einer TStringlist der Record (TMyStringlistRec) deklariert werden und ich kann auf die Stringlist zugreifen. Um das Create und Free muss ich mich nicht mehr kümmern. Try-Finally fällt weg.

(Soviel zur Theorie. In der Praxis habe ich das noch nicht getestet.)
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Warum ARC abgeschafft?

  Alt 31. Mai 2020, 10:41
Zitat:
Ich konnte mich noch nie mit ARC anfreunden. Wenn ich etwas erzeuge, dann möchte ich auch selber entscheiden, wann es freigegeben wird. Bin vielleicht darin etwas altmodisch.
Das durftest du auch. (so halb)

Jemand kam nur auf die saudämliche geniale Idee die Funktion dafür umzubenennen (DisposeOf), damit dein Code auch garantiert nicht abwärtskompatibel ist.

Zitat:
Try-Finally fällt weg
Nicht wirklich,

aber ja, das Eigene schon, denn Delphi baut bei gemanagten lokalen Variablen ein implizites Try-Finally ein. (quasi im Begin und End deiner Prozedur)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:31 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