I’ve stopped using the phrase “backtracking” and try to use the phrase “exhaustive search”. Backtracking is an implementation detail, “exhaustive search” is a semantic concept that doesn’t imply how it’s implemented.

Note that Microsoft Word has had “exhaustive search” for a loooong time (WordStar had it before Word. Ed/vi/emacs?). Grep could do exhaustive search. We should’a turned left at Albuquerque (Bugs Bunny).

Mathematics notation employs exhaustive search. The strive for immutability is in aid of exhaustive search.

Mathematics is 2 things: (1) a pencil-and-paper notation that employs exhaustive search and (2) a body of experience with using that notation.

Reversability. Who cares? No one asked for reversability, but it was a side-effect of immutability and now has risen to the level of an ideology.

Reversability can be used to solve one class of problems - UNDO. Should we be forced to bolt UNDO into every app? We seem to force ourselves to bolt time-sharing into every app. Is this a good thing? (If we were allowed to use multiple paradigms, we would be able to choose time-sharing and UNDO when we actually needed it, instead of having it built-into every language we use).

Garbage collection might have been the latest useful feature that we invented. Is UNDO in that same class? (I don’t know, this is rhetorical question).

Time-sharing came about due to premature optimization (we optimized CPU usage instead of believing in Moore’s Law). Are we making the same mistake again?