Machines that do everything, expect know when they'll finish
Our modern life is so full of luxuries and privileges. We have all this technology doing so much of the hard work for us. And we do not only expect it to do its work good, but also to inform us when the job is expected to finish.
Downloading the new software update? Running the complex simulation that your project demands? Or even desperately trying to time the wash cycle with the rest of your life only to get stuck at the last 8 minutes for half an hour? Well, let's say there are reasons why computers find it hard to estimate how long their work will take - and this has a lot to do with how they are built. In other words, computer architecture is to blame for poor task predictions.
The limits of computer architecture
Let's start by explaining the main purpose behind the design of a computer. The goal is to calculate the correct outputs based on user inputs - and do this as fast and cheap as possible. (You might have noticed that predicting the time of the tasks is not part of the objective)
The best method we have found to accomplish these goals is to divide the machine into different parts and assign each part a specific task. The main parts are:
- The Input (mouse, keyboard, buttons, sensors, networking or anything that delivers information to be processed)
- The Memory (where this information is stored)
- The Processor (where information is actually processed)
- The Output (screens, audio systems or other means to deliver and display information)
Furthermore, all these parts are interconnected. This internal communication bus is much slower than the processor. So when a task is performed (like installing a video game) the computer guesses what information will be needed and stores it to the processor directly. So when a different piece of information is needed, the processor must fetch it from the memory, costing extra time. This is called a cache miss and is one example causing unpredictability in tasks finishing.
A science of educated guesses
From the previous example, you might have noticed the importance of guessing to the computer. In fact, guessing is in the very essence of modern computing. This is also another reason why the progress bars fail - they are fundamentally all about guessing.
The computer doesn't know how much time the task will take. So it does the next best thing - trying to see how much time the first part of the work did and extrapolate this to the future. The constant guessing and adapting is also why these estimates might change while the task is being done.
If we also consider that during the task the computer might receive different input, the complexity of this task estimate game rises. The sensors of the washing machine might notice more humidity or network speed might randomly decrease during a download. Background tasks and updates obviously do not help either.
We are also bad at predicting time - take it easy!
Computers (and yes, that includes cars and washing machines) are doing their best to predict the future. Their progress bars and timers are polite guesses, built on past performance and a bit of optimism. But time prediction has never been our strong suit either; humans are famously bad at estimating how long things will take. So when your device insists it’ll finish “in 8 minutes,” take it with a pinch of salt. After all, both we and our machines are just trying to make sense of uncertainty — and to please us users the best they can.
Comments
Post a Comment