Software is a number, or in other words it’s not actually something physical. This takes a lot of explaining to understand, but typically someone trying to explain this concept tells you to look at the number 5. Is that five? No, it’s a universally agreed upon symbol meant to represent five. Then there’s the english word used to represent five. One of the security features of writing a check is to write the number in two different ways to ensure the amount written out is what is actually meant. This process makes it harder to tamper with after the amount is written.
Out of context, 5 doesn’t really mean anything on its own. It could be the second digit of a string of four digits, or it could mean nothing.
Computers typically operate on electricity, so, you use current or no current to create a gate capable of representing 1 or 0. This fundamental representation is true throughout your entire digital computer. You could say the entire point of a digital computer is to interpret those 1’s and 0’s in a way that allows it to modify them and send them along throughout the computer. It’s super weird to think our most powerful of digital computers ONLY understand two values at a fundamental level.
If WE thought about it that way we’d never be able to communicate with the dang thing, so we start grouping the 1’s and 0’s into bigger chunks, and we make the computer send and receive them in bigger chunks as well. The word size is how many simultaneous 1’s and 0’s we expect the computer to deal with in one go.
You know what, I still don’t want to talk to a computer using patterns of 1’s and 0’s. I wanna use my own words. So let’s make a program that can describe some collections of letters and turn them into the corresponding 1’s and 0’s for me. We’ve finally reached the “assembly compiler” program, and believe it or not there were people who used to use binary codes that *scoffed* at the idea of using real human words to tell a computer what to do.
Today you *still* don’t really use that compiler directly. The number of sheer software that sits upon software next to the hardware, which could be firmware (software written directly to a computer to control it) or the operating system (basically, software that sits in between the user and the computer and interprets all those keystrokes and sends them to the right program at the right time while also managing the programs and hardware for the programs you run) makes modern programming a completely different beast than writing something for the Commodore 64 of old. It’s more akin to SethBling’s manual code injection into Super Mario World that eventually let him play Flappy Bird from within Super Mario World. Half of the payload was just to make it easier and less error prone to add more payload.
Latest Answers