@mark @SmallOther@techhub.social @mcc
It's not only that machines are nondeterministic (after all, positions of all electrons in a relay circuit are not really deterministic in any way, shape, or form), but that the abstractions they present aren't (or are leaky-thus-wrong in a way that exposes the nondeterminism).
The whole area of concurrent data structures is IMO (but I'm biased) a very nice example of eking out as much determinism as you can out of a system that's nondeterministic at the next lower abstraction level. Another similar area are distributed protocols, in particular ones that admit adversaries.
It also struck me at some point that we don't really have reasonable fault-tolerant computing models: we have lots of ways of handling faulty storage, but very little for handling faulty logic. The ones I know of either replicate all of it, or are reifications of some byzantine-tolerant distributed protocol. I know of ~none that are aimed at handling cases of stochastic breakdown as cheaply as possible that are not just heuristics.