Questions the Internet Can’t Answer: Binary Code
People, especially students, seem to think that any question has an answer on the internet. This is not so.
Quite often I’ve had what seems like a simple question that had no suitable answer on the internet. I don’t mean I disagreed with answers I found. Rather, the question itself could not be understood and therefore the answers given were all entirely beside the point. Bad question statement? Maybe so. I didn’t think so.
I’ll document, from time to time, these questions when they come up. This is one of them.
Recently I wanted to know how programming code becomes computer instructions. What, exactly, is the interface where binary digits touch hardware?
Binary code is meaningful. It’s a type of arithmetic that encodes everything in a computer, even the text of this post. But machines do not trade in meaning. You wind them up and they perform. They don’t mean anything by it. For example, your TV does not know what show is on, and your email program does not care what you have to say. So how does a computer “capture” the meaning of binary code?
I asked, “What is the ultimate interface between the text on my screen and the computer hardware?”
I was not surprised to find that the question had been asked before. What was surprising was that there was no good answer, because the question itself could not, apparently, be understood by the people attempting an answer.
There were pages of verbose explanation about how software converts text into ascii code using lookup tables, and how compilers convert programming language into the 1’s and 0’s of binary, which then tell the computer what to do.
But I wanted to know what “tell” means. How exactly, could any sequence of 1’s and 0’s “tell” any computer anything, as a computer is an insentient collection of hardware components? It can’t understand anything. “Language” was a common though inadequate metaphor.
Pressed on that point, several computer experts described how the computer interprets 1’s and 0’s as differential voltages, or the optical pits and valleys of a CD, or the high and low flux of a magnetic tape, or the piezoelectric vibrations of a recording needle, or the differential reflectance of a barcode. On and on they went about how “switches” can be “on” or “off” and that represents the ones and zeroes of binary code.
But the question had only been begged. Hardware can be made to act on many kinds of energies and forces, whether electronic, optical, or mechanical. Hardware can transform, transduce, record, playback, add, subtract. Hardware can do many things, even transform the energy of a flowing stream into the grinding of a miller’s wheel.
But how can hardware deal with binary digits, which are not a kind of energy, but rather, a meaningful human code? Again, the question is: I have a string of binary digits compiled from high-level, English-like text, and I want to know how that string of binary digits becomes implemented in the computer’s hardware.
Back in the old days, we punched holes in cards, changing the binary string into a pattern of holes, and those holes passed over sensors, either mechanical sensing fingers, or light beams. A hole in the card would cause a computer switch to be set on, and the absence of a hole would leave the switch off. Thus the computer got “set” to do whatever the programming code on the punch card indicated.
But we don’t use punched cards today, or punched tape, or toggle switches. We use a keyboard, which is a set of micro-switches, to create the high-level programming code, but even if we used a keyboard to create the final string of binary digits, the question would remain: What is the causal connection between that string of binary digits on my screen and the correlated set of switch settings within the computer hardware? Where do they touch?
There is no answer on the internet. People who tried to answer elided the central issue: the interface between mind and machine.
After twenty-four hours of thinking about this problem I arrived at the startling and simple solution. I have not posted it online. Why spoil a good mystery?