I think Steele in his Constraints thesis made the same analogy between GC and constraints. Hell, programmers carried on doing GC for forty years after Lisp solved it. Like manual data change propagation, it was an unnecessary brake on software development allowed to continue simply because programmers were so inured to it. The funny thing is that at my failed Clojure-NYC presentation I asked how many had managed memory manually, and not sure I saw any hands go up. But I got quite a few hands on how many managed state manually. I was surprised they understood they were doing that. I certainly took it for granted until I tripped over data flow.
Still could not close the deal. 🙂