Sponsored Link •
...Wherein we explore what it means to be a computer, or computation, or computrons, or a computer programmer, and why Ken is even touching a computer when he's on vacation.
So here I am, sitting in a house overlooking the Carribean in the Bahamas, and it occurs to me to wax philosophic as I wane stressed. Primarily, I suppose, because if I don't write anything, I won't have any excuse to make you jealous. But also because in this environment, petty details of damn near anything don't matter much. Except figuring out how to run a consulting business from here...
So here's what I've been thinking about between sips of coconut rum: We're tool users, right? And programmers are tool users of the most intense sort. All our working and hacking lives are tools.
Okay, this is not at all unique -- this is the human condition, really. Any 16th century housewife lived all her life with tools. So did any 19th century factory worker. Or any soldier of any army.
So let me take another crack at it. It isn't that we live all our lives using tools. Nor is it the rarer fact that we can build our own tools. It's that our tools are so freakin' fungible. Our whole universe, from the bits on up, is a consensual hallucination. Any order imposed on top of the electrical impulses is just and only what we want it to be. The fact that some series of magnetic pluses stored on some platter on some disk somewhere somehow turn into these magical letters in your chosen font on your screen -- laptop, desktop, handheld, cell phone -- is a conspired hallucination of mind-boggling proportions.
It's all become so widespread it's easy to forget. Just consider the lowly bit itself. Electrical impulses within certain tolerances are considered ones. The absence is considered zero. What's up with that? Well, it's useful. But it's arbitrary. The Java Ring, handed out with great fanfare at the second JavaOne, was powered on by sending it a stream of "one" bits. That gave it the power to get going, and it was powered by inevitable "one" bits that came along anyway in further communication. (The idea of a "second JavaOne" must have been powered more libationary activities.) Sending some hardware a string of ones to give it energy -- how sideways is that?
Why are bytes 8 bits? Why is 01010001 a 'Q'? Or is it? There are many other 7 and 8 bit character codes. And in compressed text... And in binary files... And...
I could go on, but my little island has no internet access, I don't keep that much data on my laptop, and anyway it isn't (believe it or not) my real subject.
So our tool world is made of this mad accretion of consenting
circuits and humans. It is what we agree it to be. Where
we don't agree, it's nothing, just line noise. Just think about
people who think that XML is the magic bullet of world communication.
Lo and behold, the semantics still matter: What does
mean to you? Is it the same as it means
to my schema?
And if you want to hallucinate a new meaning for some set of electrical impulses, more power to ya.
Mathematics lives in such a virtual universe, but I can't think of any other field with this much flexibility. And the more abstruse and hallucinatory math becomes, the more esoteric and rarely useful it becomes. Yet as we add more abstruse hallucinations we become more useful, not less.
We hallucinate that ASCII is characters, and we get text
processing. We hallucinate that other bits, otherwise segregated,
mean RGB (and sometimes alpha), and we have colors. We hallucinate
that bundles of bits represent packets, and we have packet collisions
until we further hallucinate how to deal with them, and then we
have networks. We hallucinate that
some request and
<P> starts a paragraph and we
have the web (and the world gets an investment bubble, which is a
different kind of hallucination entirely, for which you must consult
John Kenneth Galbraith).
Sometimes the hallucinations are bad trips, but we're stuck with 'em anyway. Everyone has their list of nearly irrevocable bad dreams it's too late to change, at least within one generation. Windows, DOS, CRLF vs. LF, the keyboard placement of the control key, yada, yada, yada. Name 'em and weep.
But even these provide a basis on which to do other things, good things, new hallucinations we can all live with and build on. If nothing else, the bad stuff provides the rope with which which to hang itself. The pure flexibility of the clay we mold means that we can potentially build new stuff that accepts the old stuff as just stuff of a different sort. And thus the new subsumes the old and, in the fullness of time, the old stuff can wither and die, or at least decline into decrepit senility, tended by specialized consultant who keeps the old Model T going for the customer who can't be weaned.
When we sit at the computer and program it we are more truly masters of our fate than most people ever can hope to be.
|Ken Arnold is a recognized loose cannon in the software business, whose previous fusilades include being an inventor of Jini, designing JavaSpaces, writing books on Java and distributed systems, helping design CORBA 1.0, and (while at Berkeley on the BSD project) the curses library package, co-authoring rogue, and generally enjoying himself. His interests include designing APIs and programming languages using general principles of human factors design because of his radical hypothesis that programmers are human, and other applications of this same principle to software design, management, and production.|