eli5 what are Computer “Drivers”

865 views

After painstakingly installing printer drivers for a thermal printer at work I realized I still don’t truly understand what I was installing. (Bonus points if you can cover video card drivers too cause idk what drivers are In that sense either)

In: 2515

42 Answers

Anonymous 0 Comments

I like to think that software development is somewhat analogous to building a home.

First off, you make the blueprints of your house (software dev writes the code).

Then, you lay the foundation the house is built on (ops teams creates servers somewhere, most likely on the cloud, but it doesn’t really matter).

Next up, you actually build the house to the specs in the blueprints (deployments team deploys that code to those servers).

For this analogy, a driver acts as the construction company. The blueprints just specify the house you’re building, they don’t know where to get raw materials, or how to nail 2x4s together. Just like angry birds doesn’t know how to download itself onto a phone, it just knows how to let the user play angry birds. A driver (or installer or wizard or what have you) makes sure the code ends up where its supposed to, then screws off because its not needed once everything is fully deployed.

Now that I went through that grandiose analogy about software development. Hardware drivers behave rather differently, but they touch on the idea that code only knows what it does and does not have a clue how to actually operate itself. They more or less act as a middleman or a specialist. You don’t expect a (non-roomba) vacuum to be able to drive itself around your house, you wouldn’t expect a printer to run itself. You just hand the responsibility off to another program rather than a person.

When the user tells their computer they want to print out a file, the computer tells the driver “print this file”, and the driver figures out what pixels to put black ink in and also checks to see if there is enough toner, paper, ink etc. to follow through with the act of printing.

You might be asking, *why* is that layer of separation wanted/needed? And the answer to that is that every printer behaves differently. Hell, every operating system behaves differently, even between minor versions of the same OS. Rather than making one printer that intrinsically knows how to act in every single printer/OS combination that exists or ever could exist, it makes sense to just hire a specialist that handles that specific printer/OS combo. This also means that you when new operating systems or printers come out, you can just make a new driver and tell your user to install it and there you go, works like a charm.

You are viewing 1 out of 42 answers, click here to view all answers.