You’re working into the wee hours trying to fix that bug. But by time the debugger catches it the original cause has long since passed. How are you going to figure out just what went wrong a billion instructions earlier? It’s at times like these that you need a reversible computer. The idea is simple: a computer merely executes a sequence of elementary instructions. If we could just run through that list of instructions in reverse we could work backwards and find the original cause of our error. But of course things are never quite that simple.