On Wednesday, 13 January 2021 at 20:06:51 UTC, H. S. Teoh wrote:
On Wed, Jan 13, 2021 at 06:58:56PM +0000, Marcone via
Digitalmars-d-learn wrote:
I've always heard programmers complain about Garbage Collector
GC. But I never understood why they complain. What's bad about
GC?
It's not merely a technical issue, but also a historical and
sociological one. The perception of many people, esp. those
with C/C++ background, is heavily colored by the GC shipped
with early versions of Java, which was stop-the-world,
inefficient, and associated with random GUI freezes and jerky
animations. This initial bad impression continues to persist
today esp. among the C/C++ crowd, despite GC technology having
made great advances since those early Java days.
Aside from skewed impressions, there's still these potential
concerns with the GC:
(1) Stop-the-world GC pauses (no longer a problem with modern
generational collectors, but still applies to D's GC);
(2) Non-deterministic destruction of objects (D's dtors are not
even
guaranteed to run if it's a GC'd object) -- you cannot predict
when an
object will be collected;
(3) GC generally needs more memory than the equivalent manual
memory
management system.
I think you also have to consider that the GC you get with D is
not state of the art, and if the opinions expressed on the
newsgroup are accurate, it's not likely to get any better. So
while you can find examples of high performance applications, AAA
games, or whatever that use GC, I doubt any of them would be
feasible with Ds GC. And given the design choices D has made as a
language, a high performance GC is not really possible.
So the GC is actually a poor fit for D as a language. It's like a
convertible car with a roof that is only safe up to 50 mph, go
over that and its likely to be torn off. So if you want to drive
fast you have to put the roof down.