Про инженеров и софтварописателей.
"И тостеры- Eng=)"
designing a new toaster
Day 1:
My boss, an engineer from the pre-CAD days, has successfully brought a generation of products from Acme Toaster Corp's engineering labs to market. Bob is a wonder of mechanical ingenuity. All of us in the design department have the utmost respect for him, so I was honoured when he appointed me the lead designer on the new Acme 2000 Toaster.
Day 6:
We met with the president, head of sales, and the marketing vice-president today to hammer out the project's requirements and specifications. Here at Acme, our market share is eroding to low-cost imports. We agreed to meet a cost of goods of $9.50 (100,000). I've identified the critical issue in the new design: a replacement for the timing spring we've used since the original 1922 model. Research with the focus groups shows that consumers set high expectations for their breakfast foods. Cafe latte goes best with a precise level of toastal browning. The Acme 2000 will give our customers the breakfast experience they desire. I estimated a design budget of $21,590 for this project and final delivery in seven weeks. I'll need one assistant designer to help with the drawing packages. This is my first chance to supervise!
Day 23:
We've found the ideal spring material. Best of all, it's a well-proven technology. Our projected cost of goods is almost $1.50 lower than our goal. Our rough prototype, which was completed just 12 days after we started, has been servicing the employee cafeteria for a week without a single hiccup. Toastal quality exceeds projections.
Day 24:
A major aerospace company that had run out of defense contractors to acquire has just snapped up that block of Acme stock sold to the Mac-kenzie family in the '50s. At a company-wide meeting, corporate assured us that this sale was only an investment and that nothing will change.
Day 30:
I showed the Acme 2000's exquisitely crafted toastal-timing mechanism to Ms. Primrose, the new engineering auditor. The single spring and four interlocking lever arms are things of beauty to me.
Day 36:
The design is complete. We're starting a prototype run of 500 toasters tomorrow. I'm starting to wrap up the engineering effort. My new assistant did a wonderful job.
Day 38:
Suddenly, a major snag happened. Bob called me into his office. He seemed very uneasy as he informed me that those on high feel that the Acme 2000 is obsolete-something about using springs in the silicon age. I reminded Bob that the consultants had looked at using a microprocessor but figured that an electronic design would exceed our cost target by almost 50% with no real benefit in terms of toastal quality. With a computer, our customers can load the bread the night before, program a finish time, and get a perfect slice of toast when they awaken," Bob intoned, as if reading from a sсript.
Day 48:
Bill Compguy, the new microprocessor whiz, scrapped my idea of using a dedicated 4-bit CPU. "We need some horsepower if we're gonna program this puppy in C," he said, while I stared fascinated at the old crumbs stuck in his wild beard. "Time-to-market, you know. Delivery is due in three months. We'll just pop this cool new 8-bitter I found into it, whip up some code, and ship to the end user."
Day 120:
The good news is that I'm getting to stretch my mechanical-design abilities. Bill convinced management that the old spring-loaded, press-down lever control is obsolete. I've designed a "motorised insertion port," stealing ideas from a CD-ROM drive. Three cross-coupled, safety-interlock microswitches ensure that the heaters won't come on unless users properly insert the toast. We're seeing some reliability problems due to the temperature extremes, but I'm sure we can work those out.
Day 132:
New schedule: We now expect delivery in three months. We've replaced the 8-bitter with a Harvard- architecture, 16-bit, 3-MIPS CPU.
Day 172:
New schedule: We now expect delivery in three months.
Day 194:
The auditors convinced management we really need a graphical user interface with a full-screen LCD. "You're gonna need some horsepower to drive that," Bill warned us. "I recommend a 386 with a half-meg of RAM." He went back to design Revision J of the pc board.
Day 268:
New schedule: We now expect delivery in three months. We've cured most of the electronics' temperature problems with a pair of fans, though management is complaining about the noise.
Day 290:
We gave up on the custom GUI and are now installing Windows CE. The auditors applauded Bill's plan to upgrade to a Pentium with 32 Mbytes of RAM. There's still no functioning code, but the toaster is genuinely impressive. Four circuit boards, bundles of cables, and a gigabit of hard-disk space. This sucker has more computer power than the entire world did 20 years ago," Bill boasted proudly.
Day 384:
Toastal quality is sub-par. The addition of two more cooling fans keeps the electronics to a reasonable temperature but removes too much heat from the toast. I'm struggling with baffles to vector the air, but the thrust of all these fans spins the toaster around.
Day 410:
New schedule: We now expect delivery in three months. We switched From C++ to Java. "That'll get them pesky memory-allocation bugs, for sure," Bill told his team of 15 programmers. This approach seems like a good idea to me, because Java is platform-independent, and there are rumours circulating that we're porting to a SPARCstation.
Day 530:
New schedule: We now expect delivery in three months. I mastered the temperature problems by removing all of the fans and the heating elements. The bread is now toasted by the waste heat output of the Pentium processor. Our marketing people feel that the slight degradation in taste will be more than compensated for by the "toasting experience that can only come from a CISC-based, 32-bit multitasking machine running the latest multiplatform software."
Day 610:
The product shipped. It weighs 72 lb and costs $325. Bill was promoted to CEO.
==========================================
* If IBM made toasters...
They would want one big toaster where people bring bread to be submitted for overnight toasting. IBM would claim a worldwide market for five, maybe six toasters.
* If Microsoft made toasters...
Every time you bought a loaf of bread, you would have to buy a toaster. You wouldn't have to take the toaster, but you'd still have to pay for it anyway. Toaster'3000 would weigh 15000 pounds (hence requiring a reinforced steel countertop), draw enough electricity to power a small city, take up 95% of the space in your kitchen, would claim to be the first toaster that lets you control how light or dark you want your toast to be, and would secretly interrogate your other appliances to find out who made them. Everyone would hate Microsoft toasters, but nonetheless would buy them since most of the good bread only works with their toasters.
* If Apple made toasters...
It would do everything the Microsoft toaster does, and 5 years earlier, but would only toast bread sold by Apple.
* If Xerox made toasters...
You could toast one-sided or double-sided. Successive slices would get lighter and lighter. The toaster would jam your bread for you.
* If Oracle made toasters...
They'd claim their toaster was compatible with all brands and styles of bread, but when you got it home you'd discover the Bagel Engine was still in development, the Croissant Extension was three years away, and that indeed the whole appliance was just blowing smoke.
* If Hewlett-Packard made toasters...
They would market the Reverse Polish Toaster, which takes in toast and gives you regular bread.
* If Cray made toasters...
They would cost $16 million but would be faster than any other single-slice toaster in the world and would toast 64,000 thousand pieces of bread at the same time.
* If The Rand Corporation made toasters...
It would be a large, perfectly smooth and seamless black cube. Every morning there would be a piece of toast on top of it. Their service department would have an unlisted phone number, and the blueprints for the box would be highly classified government documents. The X-Files would have an episode about it.
* If the NSA made toasters...
Your toaster would have a secret trap door that only the NSA could access in case they needed to get at your toast for reasons of national security.
* If Sony made toasters...
The ToastMan, which would be barely larger than the single piece of bread it is meant to toast, could be conveniently attached to your belt.
* And if Turnpike made toasters? ......
They'd have a large grey button which pops up and asks "Do you want to toast now?" ... "Are you really really sure you want to toast now" ... "Aw, think about the advantages of cancelling first" ... "OK, if you must" ... "Sending message to Demon: stoke the boilers, crank up the ROMPs, posting toast to Demon". "Toast failed to connect to server" ... "Expiring toast now" "Two pieces of toast expired"
============================================
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 Pentium with 1GB of memory, a 160GB hard disk, and an XVGA 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 wisely had the computer scientist beheaded, and they all lived happily ever after.