What is Software?

According to WikiPedia “Computer software, or simply software, is a collection of data or computer instructions that tell the computer how to work. This is in contrast to physical hardware, from which the system is built and actually performs the work. “

This is a correct definition, but still leaves many people feeling there is something mysterious about it. Software is not mysterious. It does not “think”, and it will never become “aware” (even though some good films have been made on the basis that it can). It’s actually nothing but data, some of which is “instructions”. Any data can be stored as words or numbers, but we’ll come back to that.

Before there can be software, there must be hardware; in this case, we are talking about computer hardware. The word “hardware” existed long before the word “software”. It means things like nuts, bolts, wires, batteries, light bulbs, switches and so on. There is nothing mysterious about any of it. You might go into a hardware store and pick something up and wonder “What is this?” or “How does it work?”. But you could ask someone and find out. Computer hardware is no different, except that, in some cases, the pieces are very, very small.

Did you know that the surface of a computer screen is covered with millions and millions of little tiny “light bulbs”? Well, they’re not actually “bulbs”, but they are actually little tiny lights, called “pixels”. The computer is set up so that each one of these pixels can light up in any color, made brighter or dimmer or can be turned off completely. These pixels are so small that if only one of them on the whole screen was made bright yellow, and the rest were “black” or “off”, you might have trouble finding that one bright yellow pixel with your eyes. When you watch a video on the computer screen, every pixel on the screen is separately turning different colors and each one is getting brighter and dimmer in just the right pattern, very, very quickly. When you look at the screen, you don’t always notice all that, you just see a video.

It depends on your computer, or display monitor, but each pixel can display thousands of possible colors at any level of brightness from zero light (black) to full on white. There isn’t even a name for every one of those possible colors. Of course we have the names red, yellow, blue, green, orange, purple and hundreds of other names for colors, but not enough. So in the computer, every one of those thousands of colors gets a number, and the brightness gets a number too. So if you want to turn any picture into data, all you have to do is cut the picture up into millions of pieces, figure out the right color number, and brightness number for each piece, write them down and keep them in the right order. To do this for a single picture would take a person years, if not centuries, to do, and it would be a very boring job. But fortunately there are “machines” that can do it in a few seconds, these machines are called “digital cameras” or “scanners”. This is how a picture can be turned into data, which is nothing but a bunch of numbers. The numerical data can be turned back into a picture at any time by sending it to the computer screen.

A video or a movie is just millions of pictures, one after another, displayed on the computer screen. A new picture is displayed many times every second. If the video has sound, the sound has also been stored as numbers, which are sent to the speakers so that you can hear them.

Buttons, switches, game controllers, microphones, keyboards, mice, scanners and cameras can turn pictures, actions, sounds and motions into data (numbers). Anything you can say or write, any pictures or videos, can be converted into numbers and displayed or played back at a later time.

So there is “computer hardware”, which is nothing more than a very carefully put together collection of lights, switches, buttons, wires, batteries and other stuff. And there is “data”, which is just numbers, flowing into and out of the various parts of the computer. These numbers can also be turned into electric signals, pulses of light or radio waves that travel through wires, cables or across space from one part of the computer to another, saved, retrieved or transferred to and from other computers.

But what is software? Well, without software, the computers would just sit there an do nothing. All those pictures and videos, documents, stories, records, address books or calendars would just sit there in the computer, where nobody could see or use them, and do nothing. The computer can do all of the things that you already know a computer can do, but it doesn’t do anything at all until someone tells it what to do. Software is the step-by-step instructions that tell the computer what to do. Remember that software is just data. It’s instructions, converted into numbers.

When you turn on a computer, it always goes to a place in the data for its first instruction. If there were nothing there, the computer wouldn’t do anything. But computers, these days, always have some software on them to begin with. It wasn’t always this way, but that’s a different story. So these days, when you turn on a computer, it goes to that special place in the data and starts following the instructions one after another. These first instructions normally tell the computer to check if something is being typed on the keyboard, or spoken into the microphone or if some text message or email is coming in, or if something is on the schedule to do. If not, it just continues to wait. If so, the computer goes to the data (software) that contains the instructions for what to do when that thing happens (an email arriving, a keystroke pressed, a sound received etc.).

But what happens next all depends on what software has been put onto the computer. If you wanted to, you could write some software that would cause the computer to do nothing at all, until you pressed the “X” key, and then go to the data where your favorite video is stored play that video until you turned the computer off. If you did that, you would have a pretty stupid computer, but at least it would be easy to use. It just wouldn’t be very useful… unless all you ever want to do is watch that one video.

The point is only that the computer can operate in any way we want it to at all. Everything that your computer does, how it works and how it responds, what it can do, what it can’t do, all the complexities, all the things you like about how it works and all the things you don’t like about how it works, all come from the software that has been written and put onto it.

Your computer should be able to do anything you want it to, in exactly the way you want and when you want it to. If your computer doesn’t work exactly the way you want it to and doesn’t do what you want it to, that’s only because of the software.

Now, of course you can’t tell your computer to “Go make breakfast, and bring it here!” and expect it to do that. But that’s because it doesn’t have arms, legs, and hands. That’s a problem of hardware, not software. If your computer was a robot that had arms, legs, hands, vision (a camera) and so on, it should be able to follow that command, but only if it had all the right software in it.

There are also limits to how much computing a computer can do, but that is very seldom the problem we are running into, in day to day life, with computers.

Your computer is connected to just about every other computer on the planet. It potentially has access to almost all of the data that exists on this planet. Maybe your computer can’t yet make breakfast for you, but it certainly should be able to do a lot more things than it can do today. If it can’t find the data you want and do with it what you want and display it the way you want, that is a problem of software.

it’s the hardware that gives your computer the capability or potential of doing something. Software is what makes it happen, or not.

Does your computer do everything you want it to do? Is it fun and easy to use? Can you use all the data available to you, and interact with all of the other computers in the world the way you would like? The only thing standing between the world of computers today, and your unbounded imagination of what’s possible, is not having the right software.

Can you imagine something you would like to be able to do with your computer, that just doesn’t seem to be possible today? Do you ever get the idea that software has gotten far too complicated and difficult, and has somehow fallen short of its full potential? It has.

There is a better way. In these blogs, we will be exploring where and how things have gone wrong, and more importantly, what can be done about it.

It’s high time for a revolution in software. Tell me what you want your computer to be able to do, and let’s make it happen.