Orcmid's Lair
Orcmid's Lair
status 
 
privacy 
 
contact 

Welcome to Orcmid's Lair, the playground for family connections, pastimes, and scholarly vocation -- the collected professional and recreational work of Dennis E. Hamilton

This page is powered by Blogger. Isn't yours?

Recent Items
 
Launching Naked Conversations
 
Confirmable Experience: Outstanding Microsoft Customer Service
 
Ariane 501: A "History's Worst Software Bug" Provides the Wrong Lesson
 
Phish Eggs: "We Can't Do Anything About That ..."
 
ODMA: The Little Middleware That Could
 
What Programmers Do
 
The Comfort of Open Development Processes
 
Abandoning an M.Sc
 
Relaxing Patent Licenses for Open Documents
 
Windows Media Center's Been Good To Me ...

2006-02-03

What Computers Know

 What Computers Know: But What’s the Use.   I want to provide an understandable treatment of how pitifully impaired the computer is in regards to matters of the world and the physical reality in which humans operate.  I suppose most people, especially computer technologists, will say they already know that.  The reason for my pressing the point is that I don’t see that knowledge reflected in how people speak about computer systems and how they behave as software developers, adopters, and users. 

My thesis is simply this:  as valuable as digital computers are, the demonstrable chasm between the computer and the world of human experience and action is a gulf that cannot be crossed.  My concern is that we cannot provide computer software that is increasingly dependable and useful unless we appreciate how that is accomplished with computers and programs that are profoundly isolated from the world in which we, nonetheless, rely on them as useful instruments of our work.

The following sketch is extracted from a lengthier treatment that is maintained on the web at TROST InfoNote: What Computers Know.  There is additional context and elaboration there.  It is where links to more material will be added.

see also:
Praxis101 2006-02-10: What Computers Know Can’t Help Me …
Praxis101 2006-02-14: Virtuous Pain of Documentation

Talking About Knowledge

I mean by knowledge, here, an innate or embodied understanding that informs action.  I am using knowing in the way that Keith Devlin, author of The Math Instinct, would say that my cat, Teh Amor, knows calculus and ballistics, springing five feet in the air from a motionless crouch on the floor to straddle my shoulders, landing perfectly lightly with no harm to either of us. 

I want to use the same sense of “knowing” in appraising the kind of actions the computer is doing when it is doing its thing.  This is not about how it does it, certainly not why it does it, but simply what it is doing.

We can’t consult the computer.  So let’s role-play as a computer ourselves: a digital human.  It will be difficult to play digital human and give up what we know as human beings, so we’ll have to work hard to remove the things that a human would know.  What a computer might know is whatever is left.

A Human-Understandable Program

There are programs that are written by humans for other humans.  Cooking recipes are a favorite example.   I choose a handy example that has been with us since computers were usually people: reconciling the balance of a financial account.   

Every month I receive a program along with the statement for my checking account held by a U.S. bank.  Here are the key details:

Balance Reconciliation Worksheet top (click for more details)

This procedure depends on our knowing a number of things about the world, such as “ATM withdrawals” and knowing what is my register, what is the statement, and so on.  Imagine that someone gathered all of that material onto a form that could be used, side-by-side with the bank statement, so there is nothing left but to make the comparisons and record the work sheet as instructed.  Those operations are all within the capacity of a computer, using digital equivalents of the register, statement, and items-outstanding chart. 

The final operations are straightforward:

Balance Reconciliation Worksheet bottom (click for further analysis)

You should be able to see how this could be carried out, especially if the different amounts were written out for us on charts we can consult and mark.  Someone could carry out the comparisons and computations without understanding what the procedure is for.  And as our own experience tells us, we can do this without knowing how it works.

Until I chose this example, I had never realized what is missing from this program.  There is no indication of what to make of a discrepancy.  The calculated ending balance either matches the check-register balance or not.  When it is not the same, we are on our own.  What we do about that, and what we must know to do it, provides some valuable perspective on the degree to which even this quasi-digital human program is isolated and abstracted away from reality.  

Playing Digital Human

Although we have a taste of what it would be like as a computer carrying out a purely-computational procedure, there’s still too much of human experience and expertise around the account-balancing example.  To remove everything the computer cannot know and see what’s left, let’s pretend that the digital human operates under very rigid conditions.  It will be as if you’re a prisoner in a locked room.  You’ve never seen anything of the outside world and have no idea there is such a thing. There are no objects like check registers, bank statements, and bank-account transactions.  All of that is elsewhere.  What comes to the attention of this digital human is recorded data without any sense of its origin.

Initial Setup for Playing Digital Human

 There is a simple procedure that is followed every time the digital-human computer goes into action:

 
Digital-Human Play Action (simplified)


1. Suddenly, the Green light is flashing and a bell is ringing.


2. In front of you is a list of instructions written as elements in a fixed code, like a restricted, private language.


3. You progress through the instructions and carry out the actions specified in the code.  You know exactly what to do.  You've always known.


4
. The only actions that the instructions can specify are for manipulating elements just like those of the coded instructions:  

a. move an element from the in-slot to a scratch-pad

b. move an element from a scratch-pad to the out-slot

c. transform an element according to a known rule and put the result on a scratch-pad
  
d. take the element on a given scratch-pad as the next instruction of the program, continuing from there

e. inspect an element and skip the next instruction if a particular condition is satisfied
 


5. Suddenly, the red light is flashing and a bell is ringing.  Everything stops.  Nothingness.


6. Suddenly, the green light is flashing and a bell is ringing ...

Computer scientists and programmers will notice that the description is a bit oversimplified, omitting some important housekeeping (such as keeping track of and re-using the scratch-pad sheets).  There is enough to make the key point.  This mind-numbing experience is no problem for the digital human.  As a computer, it is all there is.  There is nothing else to be concerned about.  That there could even be anything else is beyond its ken.

Instructing the Computer

Now we reach the heart of the question.  What must we go through in order to instruct the computer to producing something that is useful to us despite the fact that the computer is oblivious to our interests and desires?

As the instructor of the computer, all you can do is signal start and provide coded elements that will appear at the input slot observed by the computer.  To obtain results, you must record the elements that appear at the output slot.  You can stop the computer.   Those are the only actions available to you.  Your interaction with the computer is extremely limited, no matter how much it is dressed up to be familiar for us:

 
Restrictive Interaction with the Computer


1. You can't tell it what you want.


2. You can only tell it what to do.


3. You can only use what it is already able to do.


4
. You must communicate in a fixed code of elements that are

a. all it can accept as input,

b. all it can act upon and employ in its operations,

c. all it can report as output results


5. There's nothing that it can do in its world that has any bearing on your world except by coincidence.


6. Why you're having it do what it does is unknowable to it.

What It Is Is Not What It's For

When we look at the mechanical nature of the computer's instruction, it should be apparent that the computer program is devoid of any connection to an external reality beyond the internal process of the computer and its program.  The bank's instructions are almost as barren.  They refer to objects that we are expected to be able to lay hands on, but that's about the only difference.  In particular, nothing about the instructions from the bank tells us why we are to follow that procedure and what we are to make of either achieving the specified agreement of amount or of failing to do so. 

In telling the computer only what to do, we leave behind anything about what the computation is for.  Not only is there no connection to any earthly purpose, it is not possible to create one in the domain in which the digital computer carries out its programs.  

By way of contrast, here’s what I use the bank reconciliation for:

  • I think of the checks (the bank drafts) that I write as promises to pay an agreed amount to someone else.  The promise includes the recipient receiving the funds by presenting the check to my bank (probably through their bank).   So the other part of my promise is that the funds will be available on deposit when the check is presented for payment.   The balance procedure is a way for me to have confidence that my funds were sufficient to cover the checks that have already been honored by my bank and remain sufficient to cover those checks I've written and that were not cashed by the time the bank statement was produced. 
      
  • It is all about honoring the promises of payment that I have made.  This is not reflected in the procedure.  The procedure itself isn't about that.   The procedure is useful in my ensuring that funds are available for fulfilling my promise of payment on submission of the check.   The procedure is useful for that.  It is not what the procedure is. 

Finally, when the procedure is being applied in reconciling a bank statement with a checkbook, accounting for a discrepancy in the calculated result is important.  When there is no discrepancy, does that mean all is right with the world?  Not necessarily.  Knowing the theory by which the reconciliation is held to be valid and recognizing the theory’s relationship to reality is not enough to have confined reality to the theory.  The application of theory to reality is always contingent and incomplete.

The Gap That Cannot Be Closed

It would be foolish to predict that computers will always be isolated from reality in the way that we saw for the digital human and the domain in which the digital human acted to produce computations.  That's a different question and, as a practical matter, it is not necessary to address it.

The billions of computers operating at this moment, and all of those that have been built so far, operate in this isolation.  The separation of programs and computations from reality is a fact for today's world.   That's unlikely to change very quickly for all of those computer-augmented systems that we continue to develop, deploy, operate, and sustain. 

Despite the gap, the computer is a powerful instrument.   It might even be because of the gap that computers are so useful.  Whatever the case, it strikes me that the nature of the gap and how we recognize it in the development of software can be of critical importance in understanding what falls to us in making computer systems increasingly useful in our world. 

Key Points

There are nine key ideas that I have attempted to illustrate and dramatize here:

  1. Computation is accomplished by manipulations that have no fixed connection with the world in which the computation is useful and can be applied.  It appears that what makes computation rigorous, repeatable, automatic and reliable is that it is stripped away from the world in this way.
        
  2. The fundamental way that computers are directed is by specifying what they are to do.  This involves operations on coded data elements by following coded instructions.
      
  3. Any resemblance of the computation to what it is being used for is at best an unlikely coincidence.  Internal computer data and the operations coded in programs are in terms that are usually far removed from our view of what the data represents and how the result is to be interpreted.  In the form acted on by the computer, the procedure is expressed entirely in terms of internal computer data.  
          
  4. Computations are choreographed such that they might coincide with our activities and purposes. To understand how that is accomplished, we need to look beyond the computational procedure to what the computation is for and how that connection is achieved and sustained.  That is not to be found in the computation itself.
        
  5. Computational procedures are generally imperfect and over-simplified when used as models and predictions of the way things are in the world.  We are the ones who must decide what is close enough and, when that is insufficient, what the simplest improvement is.
        
  6. One of the most difficult problems in computing is accommodating failures, discrepancies and other breakdowns which the programmer cannot possibly have anticipated with an adequate and automatic contingency procedure.  As we see in the simple case of managing a checking account, it is generally the case that there are always facts not in evidence and without which a proper course of action cannot be automatically chosen.
          
  7. Human beings are terrible at formulating and then following rigorous procedures.  “We like to know where we are, where we’re going, and a few simple directions.  The rest we make up along the way.” — William L. Anderson
        
  8. Computers have no innate capacity to experiment, respond to the unforeseen, adapt to changing circumstances, and to resolve dilemmas by trial-and-error behavior.  These are definitely not anything that computers know.
        
  9. Whatever computes know, it is nothing about the world of human experience.

This is enough, along with astounding progress in electronics and computer software, to accomplish everything that we have achieved since the commercial introduction of the modern digital computer barely 55 years ago.  Nothing we know to do has altered the situation sketched here. 


Bill Anderson and I have a running conversation on the difference between what computers are and the use we make of them.  We've explored that question for a long time, almost the full 30 years we've known each other.  In recent buddy calls between Seattle and Rye, New York, it seems to us that much is starting to crystallize in our thinking.  We want to expand this conversation onto our blogs and engage with others, out loud and on the record.  My kick-off contribution is to draw together some of the themes about the nature of computation that solidified as I researched the TROST project.  This is the first piece.

update: Couldn’t get an unequal-sign to appear so wrote out the title about What It Is Is Not What It’s For.  There’s something funny about controlling font sizes too.

update 2006-02-13/14: Made some small editorial adjustments suggested by Bill Anderson.  This is the version we want to discuss further.  I’m also troubleshooting Technorati tags without much success so far. 

{tags: What Computers Know TROSTing computation Turing knowledge orcmid}

 
Comments: Post a Comment
 
Construction Zone (Hard Hat Area) You are navigating Orcmid's Lair.

template created 2002-10-28-07:25 -0800 (pst) by orcmid
$$Author: Orcmid $
$$Date: 06-04-23 14:26 $
$$Revision: 2 $

Home