Assembly Language StepbyStep Programming with DOS and Linux 2nd Ed [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Assembly Language StepbyStep Programming with DOS and Linux 2nd Ed [Electronic resources] - نسخه متنی

Jeff Duntemann

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید









Chapter 1: Another Pleasant Valley Saturday Understanding What Computers Really Do




It's All in the Plan


"Quick, get the kids up, it's past 7. Nicky's got Little League at 9 and Dione's got ballet at 10. Mike, give Max his heartworm pill! (We're out of them, Ma, remember?) Your father picked a great weekend to go fishing…Here, let me give you 10 bucks and go get more pills at the vet's…My God, that's right, Hank needed gas money and left me broke. There's a teller machine over by Kmart, and if I go there I can take that stupid toilet seat back and get the right one.

"I guess I'd better make a list …"

It's another Pleasant Valley Saturday, and thirty-odd million suburban homemakers sit down with a pencil and pad at the kitchen table to try and make sense of a morning that would kill and pickle any lesser being. In her mind she thinks of the dependencies and traces the route:

Drop Nicky at Rand Park, go back to Dempster and it's about 10 minutes to Golf Mill Mall. Do I have gas? I'd better check first-if not, stop at Del's Shell or I won't make it to Milwaukee Avenue. Milk the teller machine at Golf Mill, then cross the parking lot to Kmart to return the toilet seat that Hank bought last weekend without checking what shape it was. Gotta remember to throw the toilet seat in back of the van-write that at the top of the list.

By then it'll be half past, maybe later. Ballet is all the way down Greenwood in Park Ridge. No left turn from Milwaukee-but there's the sneak path around behind the Mall. I have to remember not to turn right onto Milwaukee like I always do-jot that down. While I'm in Park Ridge I can check and see if Hank's new glasses are in-should call but they won't even be open until 9:30. Oh, and groceries-can do that while Dione dances. On the way back I can cut over to Oakton and get the dog's pills.

In about 90 seconds flat the list is complete:



Throw toilet seat in van.



Check gas-if empty, stop at Del's Shell.



Drop Nicky at Rand Park.



Stop at Golf Mill teller machine.



Return toilet seat at Kmart.



Drop Dione at ballet (remember back path to Greenwood).



See if Hank's glasses are at Pearle Vision-if they are, make double sure they remembered the extra scratch coating.



Get groceries at Jewel.



Pick up Dione.



Stop at vet's for heartworm pills.



Drop off groceries at home.



If it's time, pick up Nicky. If not, collapse for a few minutes, then pick up Nicky.



Collapse!



In what we often call a "laundry list" (whether it involves laundry or not) is the perfect metaphor for a computer program. Without realizing it, our intrepid homemaker has written herself a computer program and then set out (acting as the computer) to execute it and be done before noon.

Computer programming is nothing more than this: You the programmer write a list of steps and tests. The computer then performs each step and test in sequence. When the list of steps has been executed, the computer stops.

A computer program is a list of steps and tests, nothing more.


Steps and Tests


Think for a moment about what I call a "test" in the preceding laundry list. A test is the sort of either/or decision we make dozens or hundreds of times on even the most placid of days, sometimes nearly without thinking about it.

Our homemaker performed a test when she jumped into the van to get started on her adventure. She looked at the gas gauge. The gas gauge would tell her one of two things: (1) She has enough gas, or (2) no, she doesn't. If she has enough gas, she takes a right and heads for Rand Park. If she doesn't have enough gas, she takes a left down to the corner and fills the tank at Del's Shell. (Del takes credit cards.) Then, with a full tank, she continues the program by taking a U-turn and heading for Rand Park.

In the abstract, a test consists of those two parts:



First, you take a look at something that can go one of two ways.



Then you do one of two things, depending on what you saw when you took a look.



Toward the end of the program, our homemaker got home, took the groceries out of the van, and took a look at the clock. If it isn't time to get Nicky back from Little League, she has a moment to collapse on the couch in a nearly empty house. If it is time to get Nicky, there's no rest for the ragged: She sprints for the van and heads back to Rand Park.

(Any guesses as to whether she really gets to collapse when the program is complete?)


More than Two Ways?


You might object, saying that many or most tests involve more than two alternatives. Ha-hah, sorry, you're dead wrong-in every case. Furthermore, you're wrong whether you think you are or not.



Except for totally impulsive or psychotic behavior, every human decision comes down to the choice between two alternatives.




What you have to do is look a little more closely at what goes through your mind when you make decisions. The next time you buzz down to Moo Foo Goo for fast Chinese, observe yourself while you're poring over the menu. The choice might seem, at first, to be of one item out of 26 Cantonese main courses. Not so-the choice, in fact, is between choosing one item and not choosing that one item. Your eyes rest on Chicken with Cashews. Naw, too bland. That was a test. You slide down to the next item. Chicken with Black Mushrooms. Hmmm, no, had that last week. That was another test. Next item: Kung Pao Chicken. Yeah, that's it! That was a third test.

The choice was not among chicken with cashews, chicken with black mushrooms, or chicken with kung pao. Each dish had its moment, poised before the critical eye of your mind, and you turned thumbs up or thumbs down on it, individually. Eventually, one dish won, but it won in that same game of "to eat or not to eat."

Let me give you another example. Many of life's most complicated decisions come about due to the fact that 99.99867 percent of us are not nudists. You've been there: You're standing in the clothes closet in your underwear, flipping through your rack of pants. The tests come thick and fast. This one? No. This one? No. This one? No. This one? Yeah. You pick a pair of blue pants, say. (It's a Monday, after all, and blue would seem an appropriate color.) Then you stumble over to your sock drawer and take a look. Whoops, no blue socks. That was a test. So you stumble back to the clothes closet, hang your blue pants back on the pants rack, and start over. This one? No. This one? No. This one? Yeah. This time it's brown pants, and you toss them over your arm and head back to the sock drawer to take another look. Nertz, out of brown socks, too. So it's back to the clothes closet …

What you might consider a single decision, or perhaps two decisions inextricably tangled (like picking pants and socks of the same color, given stock on hand), is actually a series of small decisions, always binary in nature: Pick 'em or don't pick 'em. Find 'em or don't find 'em. The Monday morning episode in the clothes closet is a good analogy of a programming structure called a loop: You keep doing a series of things until you get it right, and then you stop. (Assuming you're not the kind of nerd who wears blue socks with brown pants.) But whether you get everything right always comes down to a sequence of simple either/or decisions.


Computers Think Like Us


I can almost hear what you're thinking: "Sure, it's a computer book, and he's trying to get me to think like a computer." Not at all. Computers think like us. We designed them; how else could they think? No, what I'm trying to do is get you to take a long, hard look at how you think. We run on automatic for so much of our lives that we literally do most of our thinking without really thinking about it.

The very best model for the logic of a computer program is the very same logic we use to plan and manage our daily affairs. No matter what we do, it comes down to a matter of confronting two alternatives and picking one. What we might think of as a single large and complicated decision is nothing more than a messy tangle of many smaller decisions. The skill of looking at a complex decision and seeing all the little decisions in its tummy will serve you well in learning how to program. Observe yourself the next time you have to decide something. Count up the little decisions that make up the big one. You'll be surprised.

And, surprise! You'll be a programmer.


/ 166