Assunto: About "Mother's Day Meditations from the Computer
Room"
Data: Wed, 3 Apr 2002 12:28:14 -0500
De: "Martin, David M."
<David.Martin@unisys.com>
Para: "'pimentel@pimentel.jor.br'"
<pimentel@pimentel.jor.br>To whom it may
concern,
I am sorry that I do not speak your language and must write to you
in English.
On your web page http://www.novomilenio.inf.br/humor/0004h061.htm
there is part of a little essay called "Mother's Day Meditations from the Computer Room."
I'm pleased and flattered. I wrote that essay back in about 1984
when I was a part-time graduate student in Computer Science at the University of Pennsylvania in Philadelphia, Pennsylvania,
USA. I wrote it because it occurred to me that a number of the supposedly high-powered computer science concepts we were
covering in class were really fairly simple, basic things once you cut through all the jargon. In writing it I took some
literary license with the truth and included suggestions from a number of individuals who saw preliminary versions of the essay.
I passed out copies of it to a few friends back in 1984 and also posted it on the grad student computer bulletin board at Penn.
And that was the last I heard of it until late in 1998 when one of my friends, who had seen it back in 1984, told me that it was
making the rounds on the Internet. I was astonished.
So I'm glad you like it. Yes, you have my permission to use it,
reproduce it, post it and publish it as you wish. I would appreciate it if you would include the three-line header as shown in
the copy below.
This little essay of mine has gotten a little corrupted as it has
been passed around the Internet. Just for the record, here is the original version:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mother's Day Meditations from the
Computer Room
by Gertrude Martin's son David
(martindm@acm.org)
[May be freely used and reproduced with this three-line
header.]
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 an 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.
-- end ---
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I case anyone asks, I'm a programmer with Unisys Corporation in Blue
Bell,
Pennsylvania, and a part-time instructor at the Montgomery County
Community
College. No, I haven't written anything else like this since,
but I have a
few ideas kicking around.
-- David Martin
email: martindm@acm.org |