Thinking In Public
Technology and computing is heavily influenced by the words we use and the terms we coin. In computing specifically, we are terrible at coining terms. A pattern I've noticed is that we define a term early in our understanding of a concept, then our understanding rapidly evolves, but since we've already created a name we just stick with it. There's not usually an obvious point to change the name so it sticks around until it's so confusing we choose a new term. Another pattern is when a subtle difference between ideas is wiped away and an idea and its opposite become fused into one. An example of the latter is relational theory and SQL. Of the former, distributed systems.
As I've thought about how to define computing, a particular difficulty in defining "analog computer", and subsequently "digital computer", has emerged. After initial research, it appears the term "analog" is used in a literal sense. In audio, for example, the electrical signal is an analog for the sound pressure waves. In this view, the term analog is used to mean a proportionate representation. Changes in sound pressure lead to a direct change in the generated electrical signal. The same is true in reverse: changes to the electrical signal lead to changes in the generated sound pressure.
With this view, an analog computer is one which computes on an analog. Most audio gear is an analog computer. A compressor modifies an electrical signal such that low levels are increased and high levels are decreased. It can be said that it computes the signal from one range to another. It's an analog computer because it does this computation on the analog of a signal(i.e. electrical signal), and not the signal itself (i.e. sound pressure).
This understanding of an analog computer makes the entire concept easier to deal with. Compare, for example, an amplifier that boosts an electrical signal so that it's louder when converted back to sound pressure waves, and a megaphone1 which amplifies the actual sound pressure waves without first converting them into an analog.
That leads to another question though. Since both of these entities effectively do the same thing (amplify sound) and in one we'd absolutely call it computation, then it follows that we should also call the other computation. It might be weird to some to think of a plastic megaphone as a computational device, but computational devices need to be neither complex nor general purpose to qualify for the term. The question here is: what kind of computer is the megaphone? An electronic amplifier used to boost audio signals is clearly an analog computer. But what do we call a computer that operates directly on a medium?
Perhaps we don't actually need a name here, because the difference between the computation of an electronic amplifier and that of the megaphone is one of perspective. That is, the thing that makes the amplifier an analog computer is the perspective that the electrical signals its computing on are an analog for something else. What we're really describing here is a computer that sits within a larger computational device. The computation that we want to do is take the audio input and amplify it. In the case of a megaphone, we do that computation directly with the device, no analog required. In the case of an electronic amplifier we do the computation indirectly on an analog and then convert that analog back.
All of this matters because the same electronics can be used to do the same task but the context changes how we refer to what is occurring. Instead of amplification or compression, let's use another common audio computation: a low pass filter. In audio these are often used to remove excess noise clean up audio so it can be better understood. In electronics these are often used to clean up electrical sources so components can access stable voltages. In one case the components are an analog computer, but in the other they are not. This is because the electrical signal itself is an analog in one situation and is not in the other. For a power supply, the computation that is happening is all about supplying a clean voltage to the load in question. There is no analog in this case.
Whether a computational device can be labeled analog does not depend on the technology used, but instead depends on the context and purpose of its use. So what, then, is a digital computer?
In the colloquial sense, it's a computational devices that operates over discrete digits. The weirdness, at least for me, is that we don't call this an analog computer. Given the reason why we assigned the term "analog" to computer in the first place, it seems odd to use a different term just because the analog is now discrete digits instead of an electrical signal. In this way, digital computers are a form of analog computer: we can implement a compressor by directly manipulating electrical signals or we can implement a compressor by manipulating digits, both form an analog for the actual audio we eventually will produce. The difference here is that the former only includes one level of indirection: the audio waves are directly converted into electrical signals, which are directly manipulated, and finally that manipulated electrical signal is directly converted into audio waves. When it comes to the latter example, things are more complicated.
Digital computers are mostly implemented electronically. Using our running example, audio waves are first converted into electrical signals, and then those electrical signals are converted into digits. There are two levels of indirection here. In fact, we'll always need two levels2, because our physical world is made of continuous signals so we need to use sampling to convert it into a discrete signal, which is what we use to store digital information. In addition, storing information digitally means we need to encode it, which involves converting the sampled values into meaningful digits.
It is this second level of indirection that transforms a computational device from specific purpose to general purpose. The same digital computational device can be used for separate purposes because the device does not in and of itself provide meaning. It is the device plus the encoding that provides the meaning. Changing the encoding changes what the device computes.
Most digital computers are electronic. They store digital data as high and low voltages, generally with high voltages representing a 1 and low voltages representing a 0. This electrical representation of things is itself an analog. It's a physical world manifestation of an abstract binary entity. Upon that analog we build another by mapping specific values of those binary digits to a conceptual value. For example, we map groups of 8 bits into a single value that represents the amplitude of an audio wave. The analog of the audio wave is itself an analog of abstract binary numbers.
Put another way: we are using two encodings, one built on top of the other. High and low voltages are abstract concepts so we need to map them to actual voltage numbers. We usually refer to these voltage numbers, which are ranges, by the high level value. Two of the most common are 5 volt logic and 3.3 volt logic, but there are others, like the family of 1 volt logic used inside of CPUs. So in order to read, write, or compute with the higher encoded information (e.g. encoded audio) we first need to know the encoding of the low level information (e.g. which voltage represents a high value and which voltage represents a low level).
This all gets more complicated when encoding high level information for transport, since those lower encodings generally attempt to pack more information into less space (for example by using 4 or 8 voltage levels to encode 2 or 3 bits of information instead of just 1).
To pull all of this together, an electronic digital computing device requires an analog which builds discrete numbers out of ranges of voltage and then builds higher level concepts out of those discrete numbers.
So what is a digital computer? From everything I've written in this thought, I'd say that they are general purpose, discrete computational devices that perform computation at a second order level of encoding. Or put more simply, they are analog-analog computational devices.
In this case, by megaphone I mean one of those cone shaped ones with no electronics. ↩︎
This might not be strictly true. If the medium used for digital processing is not an analog, then there would only be one level of indirection. I don't know if there are any practical computational devices that do this, but I haven't thought about it rigorously. ↩︎