Rob wrote:
Solar, you say: "...because of the non-deterministic run-time impact of a GC starting up..."
I've always had a hard time wrapping my head around the "non-deterministic" 'thing', mainly since English is not my primary language. Could you please elaborate on it and in combination with the rest of that sentence (ie, run-time impact, GC starting up)?
Deterministic stuff has a pre-determined path (it will always do that). When you make a program that does 20 nops after another, on a 386 that has a deterministic execution path, you can calculate how long it'll take. On a P4, it's nondeterministic, you can't say how long it'll take due to execution units being taken, pipeline stalls etc.
When I go to my work, I drive along a road. If there's no other car and I drive a certain speed, I can calculate when I'll arrive. I'll have a deterministic arrival time.
The truth is that there are other cars and there are stuff like accidents, traffic jams and traffic lights that are all nondeterministic compared to my car movement (they won't go green or dissolve when I drive toward them). That makes my arrival time non-deterministic, that means, I can't guarantee that I'll be in time. I can leave in time and account for some delay, but if a plane crashes in front of me on the motorway (highway) I can't turn around and I'm going to be late.
Same thing for automatons (state machines). There's a subclass of them called Finite Automaton (FA), which have an ending (which may take very long to reach, but for each given input it has 0 or more paths to take). There are two variations of this, non-deterministic (NFA) and deterministic (DFA).
The NFA has paths that you can take based on nothing, you can take any number of paths on a certain input from a given position and you can't actually use it unless you keep track of all paths until there's only one left you could've taken.
The DFA has only states that have nonempty output paths, it has 0 or 1 output path for each possible input and it will not be accepting for more than one outcome.
The point of difference, in a DFA there's nothing left to choice or accidence. There's ONE path that you can follow on any given input and it either ends in an accepting state (you accept then) or it ends, where you give an error. On an NFA, you COULD take this path, but you could just as well take any other.
PS: Je kunt ook in het woordenboek kijken, determinisme is ook een Nederlands woord