From nearnet-staff-request@nic.near.net Thu May  5 19:12:54 1994
Received: from nic.near.net (nic.near.net [192.52.71.4]) by noc.bbn.com (8.6.7/8.6.5) with SMTP id TAA14233; Thu, 5 May 1994 19:12:49 -0400
Received: from nic.near.net by nic.near.net id ab11869; 5 May 94 19:10 EDT
Date:     Thu, 5 May 94 19:10:39 EDT
From: Bob Kieran <rkieran@nic.near.net>
To: nearnet-staff@nic.near.net
Subject:  MOTHER'S DAY MEDITATIONS FROM THE COMPUTER ROOM.
Message-ID:  <9405051910.aa11839@nic.near.net>
X-Zm-Priority: D
Status: OR

           MOTHER'S DAY MEDITATIONS FROM THE COMPUTER ROOM.

A friend recently asked  me  what  training  it  takes  to  work  with
computers.   I  gave  a  brief answer mentioning some college courses,
some on-the-job training, and a  long  time  in  the  school  of  hard
knocks.   But  upon  reflection, I realize that most of my training in
fundamental computer concepts came from my mother.

When I was a baby, mother taught me about input buffering: "Don't  try
to  stuff all your food in your mouth at once.  Leave it on your plate
until you're ready to eat it, and then take it in one  mouthful  at  a
time."

She  also  taught  me  about processing the entire input buffer before
going on to the next step: "Eat everything on your  plate.   Then  you
can have dessert."

(It will occur to some readers that mother also taught me about output
buffering, but I'd like to keep these meditations G-rated.)

When I was about four, mother introduced the concept  of  sequentially
executed  instructions:  "We're  going  to  set  the  table."  (That's
identification of the procedure.) "First put the table  cloth  on  the
table.  Check it to make sure it's straight.  Then put a plate at each
place.  Then put a cup at each place.  Then ..."

Later, mother introduced the concept of a procedure call: "We're going
to have dinner.  Please set the table."

Still later, when I was about 14, mother would set up tasks for me and
use "job control language" in a note on the refrigerator door:  "We're
going  to  have  dinner  at  6:00.  You make it when you get home from
school.  The menu is pinned up on the bulletin board, the meat  is  in
the  refrigerator,  and  I've  put  the  rest  of  the food out on the
counter.  Set an extra place - Uncle Jack is coming tonight."

Mother demonstrated what it means to multi-process:   She  could  deal
with  the  interruptions  of  four children (those were the real-time,
foreground tasks) while doing the housework (as a background task).

Mother used the concept of hierarchical storage for her cooking tools.
The  cooking  forks  and spoons were hung on hooks right by the stove.
The potato slicer and the egg beater, which  weren't  used  for  every
meal, were kept in a drawer.  And the big roaster, which she only used
once a year to cook the Thanksgiving turkey, was kept in  the  storage
closet in the basement.

Once  we  had  about  fourteen people for Thanksgiving dinner, and our
kitchen seemed too small for the job.  That's when  mother  introduced
the  concept of backing store.  She cleared off the ping-pong table in
the rec room next to the kitchen and laid out all her  ingredients  on
one  side of the net.  My sister and I fetched things from the "input"
side of the  ping-pong  table  as  mother  called  for  them,  carried
partially finished dishes to and from the "backing store" on the other
side of the net, and delivered finished food to  the  "output"  dining
table.

This system worked well, until my sister and I collided in the doorway
between the two rooms and we nearly lost the creamed  onions.   Mother
solved   this  problem  of  "channel  contention"  by  establishing  a
protocol:  "First say 'May I come through?' and then  wait  until  you
get the answer 'Yes; it's clear.'"

It  was  also  in  the kitchen that mother taught me about looping and
testing:  "Cook the fudge, while stirring it, and test it every couple
of  minutes  to see if it's done.  You test it by dropping a bit of it
in the cold water.  When it forms a soft ball, it's done."

For years I badgered my mother  with  questions  about  whether  Santa
Claus is a real person or not.  Her answer was always "Well, you asked
for the presents and they came, didn't they?" I finally understood the
full  meaning  of  her  reply when I heard the definition of a virtual
device:  "A software or hardware entity which responds to commands  in
a  manner  indistinguishable from the real device." Mother was telling
me that Santa Claus is a virtual person (simulated by loving  parents)
who  responds  to requests from children in a manner indistinguishable
from the real saint.

Mother also taught the IF ...  THEN  ...  ELSE  structure:   "If  it's
snowing,  then  put  your  boots on before you go to school; otherwise
just wear your shoes."

Mother  explained  the  difference  between  batch   and   transaction
processing:   "We'll wash the white clothes when we get enough of them
to make a load, but we'll wash these  socks  out  right  now  by  hand
because you'll need them this afternoon."

Mother  taught me about linked lists.  Once, for a birthday party, she
laid out a treasure hunt of ten hidden clues, with each  clue  telling
where  to  find the next one and the last one leading to the treasure.
She then gave us the first clue.

Mother understood about parity errors.  When she counted  socks  after
doing  the  laundry,  she  expected to find an even number and groaned
when only one sock of a pair emerged from the washing machine.   Later
she  applied  the principles of redundancy engineering to this problem
by buying our socks three identical pairs at  a  time.   This  greatly
increased the odds of being able to come up with at least one matching
pair.

Mother had all of us children write our Christmas thank you  notes  to
Grandmother, one after another, on a single large sheet of paper which
was then mailed in a single envelope with a single  stamp.   This  was
obviously  an  instance  of blocking records in order to save money by
reducing the number of physical I/O operations.

Mother used flags to help her  manage  the  housework.   Whenever  she
turned  on  the  stove,  she  put  a  potholder on top of her purse to
reminder herself to turn it off again before leaving the house.

Mother knew about devices  which  raise  an  interrupt  signal  to  be
serviced  when they have completed any operation.  She had a whistling
teakettle.

Mother understood about LIFO ordering.  In my lunch bag  she  put  the
dessert  on  the bottom, the sandwich in the middle, and the napkin on
top so that things would come out in the right order at lunchtime.

There is an old story that God knew He couldn't be physically  present
everywhere at once, to show His love for His people, and so He created
mothers.  That is the difference between centralized  and  distributed
processing.   As  any  kid who's ever misbehaved at a neighbor's house
finds out, all the mothers in the neighborhood  talk  to  each  other.
That's  a  local  area network of distributed processors that can't be
beat.

Happy Mother's Day, Mom.  You were the best computer  teacher  I  ever
had.

Kenneth Mayer:	mayerk@eniac.seas.upenn.edu
