My sister believes that computers break on their own, that one moment they are working and the next they aren’t, and that nothing she did had anything at all to do with the change. My computers go boink all the time, also, but i generally have some notion of how that has come to be.
Computers are remarkably good at NOT DOING anything they have not been programmed to. This is what common sense translates as “computers are actually dumb”, but i would argue that this is a very very good trait.
I probably first stumbled upon the concept while dismantling and reassembling my old computers (carcasses). When you connect something wrong (like mistaken HD jumpers, or a memory stick on the wrong slot) things just do not work. They will not melt (OK, my graphic card’s memory once melted on me, but i had screwed up big time). They will not acquire life and fight against their builders.
Computers just try to do their thing and if that doesn’t work they just don’t do ANYthing.
Obviously, shit happens. Sometimes your dozen partitions are overwritten with some standard size FAT glob. Sometimes you actually do erase /usr (not that <em>i</em> ever did…). But all of those times the computers had been programmed to do the shit.
Now contrast that with the somewhat generalized assumption that computers are rocket-science and that they will break on their own. Like Windows will all of a sudden start activating an unsafe driver and BSOD on his own. It will some day wake up and just resolve to do it. He will say “nah, let’s go broke a bit, time for some downtime”.
Computers breaking is not exactly the issue. Computers are complex things and complex things are difficult to set up just right. This isn’t avoidable and also it isn’t so much of a problem as it might seem to be. What amuses me is the assumption that the program or OS or any other “inside part” of the computer does the breaking on it’s own.
The basic assumption that leads to this conclusion is that there is an absolute difference between CODE and DATA. User interaction is just data, it is something that the programs interpret, and that’s it.
But there is no distinction between DATA and CODE: both are just long strings of binary digits. And on the same line, all user interface is implicitly a form of programming.
Yes, i mean it. Those fancy toolkits eveeryone uses and loves work on the same lines as the assemblers and compilers. But how exactly can we say that?