[263] in Humor
HUMOR: The Toaster
daemon@ATHENA.MIT.EDU (abennett@MIT.EDU)
Wed May 11 22:28:18 1994
From: abennett@MIT.EDU
To: humor@MIT.EDU
Date: Wed, 11 May 94 22:26:00 EDT
From: Erik Nygren <nygren@MIT.EDU>
From: aviles@mimsy.mit.edu (Walter A. Aviles)
>
>-------
>Forwarded mail follows:
>
>The Toaster
>
>Once upon a time, in a kingdom not far from here, a king summoned two
>of his advisors for a test. He showed them both a shiny metal box with
>two slots in the top, a control knob, and a lever. "What do you think
>this is?"
>
>One advisor, an engineer, answered first. "It is a toaster," he said.
>The king asked, "How would you design an embedded computer for it?" The
>engineer replied, "Using a four-bit microcontroller, I would write a
>simple program that reads the darkness knob and quantizes its position
>to one of 16 shades of darkness, from snow white to coal black. The
>program would use that darkness level as the index to a 16-element
>table of initial timer values. Then it would turn on the heating
>elements and start the timer with the initial value selected from the
>table. At the end of the time delay, it would turn off the heat and
>pop up the toast. Come back next week, and I'll show you a working
>prototype."
>
>The second advisor, a computer scientist, immediately recognized the
>danger of such short-sighted thinking. He said, "Toasters don't just
>turn bread into toast, they are also used to warm frozen waffles. What
>you see before you is really a breakfast food cooker. As the subjects of
>your kingdom become more sophisticated, they will demand more
>capabilities. They will need a breakfast food cooker that can also cook
>sausage, fry bacon, and make scrambled eggs. A toaster that only makes
>toast will soon be obsolete. If we don't look to the future, we will
>have to completely redesign the toaster in just a few years."
>
>"With this in mind, we can formulate a more intelligent solution to the
>problem. First, create a class of breakfast foods. Specialize this
>class into subclasses: grains, pork, and poultry. The specialization
>process should be repeated with grains divided into toast, muffins,
>pancakes, and waffles; pork divided into sausage, links, and bacon;
>and poultry divided into scrambled eggs, hard-boiled eggs, poached
>eggs, fried eggs, and various omelet classes."
>
>"The ham and cheese omelet class is worth special attention because it
>must inherit characteristics from the pork, dairy, and poultry
>classes. Thus, we see that the problem cannot be properly solved
>without multiple inheritance. At run time, the program must create the
>proper object and send a message to the object that says, 'Cook
>yourself.' The semantics of this message depend, of course, on the kind
>of object, so they have a different meaning to a piece of toast than to
>scrambled eggs."
>
>"Reviewing the process so far, we see that the analysis phase has
>revealed that the primary requirement is to cook any kind of breakfast
>food. In the design phase, we have discovered some derived
>requirements. Specifically, we need an object-oriented language with
>multiple inheritance. Of course, users don't want the eggs to get cold
>while the bacon is frying, so concurrent processing is required, too."
>
>"We must not forget the user interface. The lever that lowers the food
>lacks versatility, and the darkness knob is confusing. Users won't buy
>the product unless it has a user-friendly, graphical interface. When
>the breakfast cooker is plugged in, users should see a cowboy boot on
>the screen. Users click on it, and the message 'Booting UNIX v. 8.3'
>appears on the screen. (UNIX 8.3 should be out by the time the product
>gets to the market.) Users can pull down a menu and click on the foods
>they want to cook."
>
>"Having made the wise decision of specifying the software first in the
>design phase, all that remains is to pick an adequate hardware platform
>for the implementation phase. An Intel 80386 with 8MB of memory, a
>80MB hard disk, and a VGA monitor should be sufficient. If you select
>a multitasking, object oriented language that supports multiple
>inheritance and has a built-in GUI, writing the program will be a
>snap. (Imagine the difficulty we would have had if we had foolishly
>allowed a hardware-first design strategy to lock us into a four-bit
>microcontroller!)."
>
>The king had the computer scientist thrown in the moat, and they all
>lived happily ever after.
>