On Fri, 9 Mar 2018, Ryan Joseph wrote:
On Mar 9, 2018, at 3:55 AM, Graeme Geldenhuys <mailingli...@geldenhuys.co.uk>
wrote:
My first question....
What is a managed record?
My second question....
Why would I need it?
My third question.....
What is different compared to a "normal record"
and compared to FPC's Object data type. eg: TSomeObject = object;
I think the proper term is "management operators” for records which basically
tell you when records are going in and out scope. The obvious use for them is
ARC-like systems to manage reference counting. There’s probably other interesting
things you could do with them we haven’t figured out yet.
I’m still sticking with Apple’s Cocoa model of the auto-release pool that adds
temporary data to a list and dumps it after every even cycle. Easy, doesn’t
require new languages features. It’s a stupid waste of resources but that’s
modern computing in a nutshell.
Or is this all about trying to follow Delphi again because they broke the Object Pascal
"Object" type and then reintroduced that same functionality (because EMBT developers are
id**ts these days) using Records, and magically called it "advanced records". aka Objects
- what Turbo Pascal 7 had.
In almost every instance I can think of using so called "managed records" I
could have achieved the same benefit by simply not allocating the class on the heap in
the first place. Pascal has gone the way of Java or other high level languages that
produce tons of garbage by allocating everything on the heap and then performing
complicated tricks to dispose of all the waste they made.
c++ solves this easily by having a unified class/record model but Pascal would
need to basically overhaul the entire system to make this work. Until then
we’re stuck in the middle, using records when we want stack allocation (with a
broken OOP model) and using Classes when we need OOP features but forced into
dynamic memory management scenarios.
Why don't you use objects ? No-one has obsoleted this, and you get what you
want: an object that can be allocated on the stack or on the heap.
I'm sure that we can add some extension to it to get rid of the somewhat awkward
new(someobject,init)
syntax to allocate one on the heap.
Michael.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal