It's not garbage collected, but also, not completely manually memory managed either. I can't quite recall how it works but it's mostly some sort of ref counting + some manual.
When teaching, non-GCd languages just get in the way. You don't want students apps to be segfaulting constantly because they're running into memory errors whilst you're trying to teach them something else. Learn programming and get confident with it first, THEN learn the techniques needed to safely manage memory (maybe).
I actually learned programming as a kid with first Turbo Pascal then Delphi. My programs crashed with the dreaded access violation error all the time. Debugging that sucked. I assume it's better these days.
It is manually memory managed, but that is only for objects you create explicitly or memory you allocate explicitly. Other types that deal with dynamic memory, like dynamic arrays and strings are reference counted.
But i still do not see why this is an anachronism. Do you consider manual memory management an anachronism?
>>My programs crashed with the dreaded access violation >>error all the time. Debugging that sucked. I assume >>it's better these days.
How would automatic garbage collection help in a scenario where you are deliberately accessing an object that you haven't created or have destroyed already?
Hm, have you used a GCd type safe language before? This is a bit of an odd question. In modern languages like Java (but unlike Delphi) you can't access an uncreated object or manually destroy objects, outside of special cases like file handles.
My point is that there's a lot to learn when you start out programming. Most developers don't write manually memory managed code anymore so it's a skill that can be pushed far down the list of things to learn, and trying to learn it right at the start will just get in the way.
Such as?