You hear the phrase all the time when you're working with computers, especially on customer service calls: "Please reboot your computer." Why do we use the word reboot to mean "turn it off and on again"? It all goes back to tech history -- and to one of the most revolutionary aspects of these computing machines.
Back in the 1950s, the earliest computer engineers had a conundrum. Put simply, they didn't know how to describe the process of turning a computer on. It sounds bizarre, but they were working at a time when most machines had fairly simple on and off states -- you flicked a switch, the device powered up using electricity or fuel, and then it was "on". Computers didn't work quite like that. Sure, you'd flick a switch to send power to its circuitry. But then it would need to load a tiny bit of software code. And that code would load more code, which loaded more code, and so on until its peripherals and operating system were running and ready to execute programs.
To be fully "on", in other words, the computer had to go through a several-step process. The really revolutionary part was that the machine was essentially starting itself, by loading each new piece of code until it was finally ready. So these early engineers finally hit upon the perfect way to describe what their machines were doing: pulling themselves up by their bootstraps, or "booting up".
Booting has changed a lot since the mid-twentieth century, when the process often began by loading an initialisation sequence or word from magnetic drums, tape, or punchcards. (This is also why many early computers had "load" buttons, which you would press after powering up.) Later computers would store a bootstrap loader program in read-only memory (ROM), or firmware, so that the computer could start itself from a bit of code that lived permanently on the circuit board.
Nowadays when a computer boots up, it usually begins by starting a small program called a bootloader, which can live in many kinds of storage devices, from hard drives and CDs, to USB drives and flash memory cards. Some computers even store them in a special chip right on the circuit board. The boot loader is responsible for loading other programs, and depending on the device, this may involve starting up your peripherals like monitors, drives, and keyboards. It also loads your operating system (Windows, OS X, Linux, Chrome, etc) into RAM. Once the operating system has loaded and can take commands, the computer is finally booted and ready to go.
You may have heard of bootloaders before in the context of jailbreaking devices. A common way to jailbreak involves injecting code into the boot loader, or replacing it altogether, to give you more control over what programs will run on the machine.
Understanding the boot process gives you a pretty big hint about why rebooting can fix a lot of weird bugs. For a variety of reasons, code errors can pile up in multiple programs and in your operating system. You won't really notice until things have gotten so tangled that you experience terrible slowness or your apps freeze. At that point, the best solution is to return all your programs to their pristine, pre-buggy state. Which is what rebooting is all about. The process of shutting down all your programs, then bootstrapping through all that code again, returns the machine to its optimal "on" state. Now it's as ready for work as it will ever be.
So next time you turn your computer on -- whether its a desktop, a phone or embedded in some other random gadget -- remember that you are witnessing a marvel of self-starting machinery. The on button is just the spark. The software itself takes care of the rest.