Welcome to Tech Tuesdays! This is the first installment and as I had promised I am not assuming any prior knowledge other than as an enduser of computers. Instead we are starting with the absolute basics. Every computing system has to provide in some way for five different building blocks. Today’s post will be an overview of these building blocks with each one visited in more detail in subsequent posts. Why should you care about the building blocks? Because they will let you think systematically about what goes on inside of a computer system and will provide the foundation for everything else that follows.
This is the actual doing of stuff, such as: loading data from memory (see below) or putting it back there; taking different pieces of data and combining them, such as adding two numbers; testing whether the value of some number is zero or larger and using the outcome of that test to decide what to do next. The processing is generally carried out by one or more CPUs, which stands for Central Processing Unit (central because in the early days of computing there was only one per computer). In modern systems there may also be specialized processing units, such as a GPU, a Graphics Processing Unit, which deals with all the number crunching that is required for graphics on the screen (e.g. a 3D world for a game). In a person, the CPU would be the person’s brain.
The data to be processed and the instructions for how to process it need to be kept somewhere so that the CPU can get to them quickly. That is the function of memory. Most computer memory is “volatile,” which means it retains its contents only as long as it has electric power. When the power is lost, the contents of memory are lost, which is a source of great frustration when you were in the middle of writing a brilliant blog post that has now ceased to exist. You will often find this type of memory referred to as RAM, which is short for Random Access Memory (where the Random Access part will be explained in a future post). In a person, memory would also be the person’s brain. In other words, our brains serve two functions that are separated in most computer systems, something that we will come back to in a future Tech Tuesday.
In contrast to memory, the role of storage is to keep data and instructions around for the long term. Unlike memory, storage does not depend on a continued supply of electricity. Putting stuff there is referred to as persistence. In many computer systems persistence is taken care of by one or more “hard disks" - which you can think of as incredibly souped up versions of magnetic tape (if you remember such a thing). Historically there was a big tradeoff in that storage was much much cheaper than memory (so you could afford a lot more of it) but also much much slower. That tradeoff is being somewhat erased by so-called SSDs (which stands for Solid State Drive), but more about that in a detailed Tech Tuesday on storage. For a person, storage would be things like diaries, books, and of course these days online documents. Here too the same trade-off applies: stuff you have in your brain you can access (almost) instantly, but you can keep a lot less there than in your filing cabinets (at least that’s true for me).
Computers are a lot more useful when they can connect to other computers. That’s the role of networking. Networking lets two or more computers exchange data. As it turns out there are a lot of different pieces involved in making that happen, ranging from cables or wireless signals to agreed upon sequences of what to send or receive when, known as protocols. Some acronyms that you may have come across are LAN for local area network (e.g., connecting the computers in one office) and WIFI which is a series of standards for letting computers talk to each other wirelessly. Because it is so complicated but also so central to how we use computers, networking will take up many more Tech Tuesdays. Persons too are more useful when they can communicate with others. And just as with computers people networking is quite complicated: in person, over the phone, online? Formal or informal? One-on-one or group event?
Generally we like to have ways of getting data and instructions into and out of computers through such things as keyboards, screens and printers. In computer speak those are known as devices and connecting them is known as input/output or I/O. As it turns out I/O plays a role even for computers that don’t have screens or keyboards, such as say the computer that controls the engine in a modern car. That computer still needs to get information about how the engine is currently running (input) and then needs to influence such things as the amount of fuel to inject (output). You might reasonably ask how I/O differs from networking and that’s a fair question with the boundaries becoming less clear in recent years. But as a first cut it helps to think of networking as being between full fledged computers and I/O being between a computer and something that’s a bit dumber. The best analogy for humans is that input are our senses and output is movement and speech.
Now throughout this I have stayed away from the terms “hardware” and “software” which seem to be used all the time. There is a good reason for that: those terms are a lot less helpful than the distinction between the five building blocks. You can think of hardware as the physical parts of computing: the cables, printers, disks, memory chips, and so on — the stuff that you can touch. Software are the instructions that tell the hardware what to do. As we start to dig deeper into each of the five building blocks you will come to understand that each of them involves both hardware and software (which is one reason why those two very broad categories are not really all that helpful).
That’s it for the first installment of Tech Tuesdays. Looking forward to feedback, suggestions, questions, and more! (Small caveat that I am traveling today, so may not get around to answering until late in the evening).