20 Uses And Theory -- Introduction

Now, in the first section, I've made the implicit assertion that practically any machine can be described as a computer. So, I should explain why, and that will take us into certain mathematical and engineering topics that will seem more theoretical than practical at first.

Complexity seems to be a major point in question, so I'll introduce some elements and issues from the mathematical fields which deal with the complexity of machines. Then I'll try to talk about the implications.

For a context, let's have a definition of machines:

Machines

Machines are defined as having input, output, and some kind of transformation between the input and the output.

Input would be like a button being pushed, output would be like a light turning on, or some other useful thing happening, and the transformation would be the process that decides whether to turn the light on or not, or perhaps which light to turn on. (Speaking very loosely.)

But machines without buttons are also machines. Levers provide input, coal moving through chutes can be considered output (or even processing), and much more.

Any tool can be analyzed as a machine, from a broom to a screwdriver, to a monkey wrench, to a wave solder station.

Brooms? Yeah. Big lever. Brush. Push the lever in certain moderately-well defined ways and dust (input?) on the floor gets moved (processed?) into the dustpan (output?)

Okay, the machine description might include the "broom operator", perhaps. Or not, depending on how you choose to set up the analysis. Likewise, the mechanical analysis might include the floor being swept, and might include the dustpan which carries the dust and trash to the garbage can. Maybe you include the stuff being swept up in the mechanical description, as well.

Lots of options, depending on your purposes.

When I was an undergraduate student at BYU, we talked about four general classifications of complexity in machines (and in programming languages, which is something we want to visit later). The current math on complexity uses somewhat different classifications, and the following four are not exactly the way it was taught to me then, either, but they will be sufficient for my purposes.

All machines can be classified, by complexity, into one of four classes:

These four classes should cover all machines that are possible to build.

My discussion on stack machines seems to work better when I don't try to introduce and explain them separately, so I have

I should repeat, this is not the same set of classifications used in rigorous mathematics. I do not intend to be rigorous here, I am aiming for comprehensibility.

Unfortunately (or, if you ask me, fortunately) there are classes of problems computers can't solve, I think that it's important to understand them.

Copyright 2011 Joel Matthew Rees