Monday, March 19, 2007

One-Armed Wampa: The Lost Episode

So... Almost a week after forgetting what I had thought of in church, it came back to me. It wasn't a breakthrough in Cheese/Pasta technology as some people have hoped. It was, in fact, merely an interesting definition of a fairly common term. Here it's entirity ('cuz I'm writing it now) is that nascent post. WARNING: The following is post is rated Double Black Diamond in terms of Geek Content, but only a Blue Square for Technobabel.

Abstraction is a term that has been occupying my idle processor cycles for a while now. It occurred to me that there is not a single person, ever, who, if stranded on an island, but with unlimited natural resources, could build even a simple digital computer. There are people how can write applications by themselves. There are people who can write entire operating systems from scratch. There people how can assemble computers. Others can design processors. Others can build them. Some rare individuals can even do two or these things. But no one, anywhere, can do it all. And that doesn't even mention extracting the raw materials, refining them, and processing them into a usable format. Or generating the electricity, etc. etc. etc.

"So alot of people have to work together to build a computer. What's the big deal?" The big deal is that these people don't work together. Certainly not directly. And they don't have to. Each step of the process has a "finished product" that is handed off to the next level. For example, copper ore is processed and shaped into a long roll of copper wire. The processor and component manufactures don't need to worry about copper ore or how to extract copper; All they are concerned with is the properties of the copper that they are given. Taking that several steps up the ladder, the operating system programmers don't need to know how the processor is designed or manufactured. They just need to know what machine commands the processor is designed to respond to. Therefore, each step produces a "balck box", whose inner workings are not revelant to higher order processes. Each Black Box has a function, a set of acceptable inputs, and cooresponding outputs, and these are all that is important about them.

The reason this came to mind is that I am reading a book (actaully listening; see Snowcrash on my What I'm Reading list) that has a lot to do with hacking. The thought occurred to me "What is hacking?" What would the definition be. There was a time when I would have said that hacking is just using something in a way that it was not designed for. But that is simultaneously too broad and inaccurate. For example, I would not call it hacking to use a screw driver as a door stop. On the other hand, overclocking a processor to make it faster would definitely be hacking, but doesn't effect how it's used.

So, while on this search for a more precise definition of Hacking, the whole concept of abstraction came up. Combining the two, the answer is simple (and you, gentle reader, are probably 2 steps ahead of me already). Hacking is merely the practice of breaking into that lower-level Black Box and modifying it to suit your personal upper-level process needs or desires. It is, in essences, changing the rules of the game.

1 comment:

David T. said...

Hmm... "changing the rules of the game"...isn't that called cheating? I prefer to use the term "ethical hacking": overcoming the limits of any system for good benifit.