On Mon, 03 Feb 2014 19:49:04 -0500, Adam Wilson <[email protected]> wrote:

On Mon, 03 Feb 2014 16:24:52 -0800, NoUseForAName <[email protected]> wrote:

On Monday, 3 February 2014 at 23:00:23 UTC, woh wrote:
ur right I never thought of that, I bet all them game devs never thought of it either, they so dumb. I bet they never tried to use a GC, what fools! Endless graphs of traced objects, oh yes oh yes! It only runs when I allocate, oh what a fool I've been, please castigate me harder!

Also people should consider that Apple (unlike C++ game devs) did not have a tradition of contempt for GC. In fact they tried GC *before* they switched to ARC. The pro-GC camp always likes to pretend that the anti-GC one is just ignorant, rejecting GC based on prejudice not experience but Apple rejected GC based on experience.

GCed Objective-C did not allow them to deliver the user experience they wanted (on mobile), because of the related latency issues. So they switched to automated ref counting. It is not in question that ref counting sacrifices throughput (compared to an advanced GC) but for interactive, user facing applications latency is much more important.


That may be the case, but StackOverflow shows that ARC hasn't been panacea in Apple land either. Way to many people don't understand ARC and how to use it, and subsequently beg for help understanding heisenleaks and weak references. ARC places a higher cognitive load on the programmer than a GC does. And Android runs just fine with GC'ed apps, but ARC guys don't want to talk about Google's successes there.

Where you have to be cognizant is avoiding cycles. Plain and simple. And it's not that difficult. The compiler takes care of the rest. It's somewhat magical I suppose :) Managing your autorelease pools can make a difference, but is not necessarily critical.

I think when working on embedded systems, it is quite important to understand the limitations and strengths of the language/hardware you are using, much more so than on a full PC/Server. Where ARC really beats the GC is on memory usage. It's very very close to malloc/free usage.

I would love to see D attain an ARC system, especially if it can link seamlessly with Objective-C. What I don't know is if one can replace a GC with an ARC memory manager without having to port any high-level code. I don't think that is the case. Which leads me to think -- is it even possible to write druntime/phobos in an agnostic way? If it isn't, what subset can be done that way?

-Steve

Reply via email to