Ok, so itÃ¢â‚¬â„¢s important that we understand that there is a distinction between the models, or paradigms that scientists use and the real world. But when I first started to think about these things I got a bit confused. What about computers? Computer people always say Ã¢â‚¬Å“thatÃ¢â‚¬â„¢s not possibleÃ¢â‚¬Â without any hint that there is a chance that their understanding of how a computer works could be wrong. Unlike scientists, they are, normally, right.
The reason for this is that computers are a special case of building a model. In contrast to science, where we are actually theorising that maybe this model describes the world, when we design computer systems we are building a model, and then deciding to accept whatever the model says as fact.
Let me switch examples now – many people find computers too confusing to follow. The same is true of an election, such as the UK general elections. A model for how to count the votes and how to interpret them has been created. It is available from the government, and its intricacies have been studied in great deal. ItÃ¢â‚¬â„¢s not a perfect model, though for elections, there is no such thing.
This model gives us a prediction. Once we know how everyone in the country has voted, we can predict who will be the Ã¢â‚¬Å“most fairly elected winnerÃ¢â‚¬Â. At this point, in a scientific model, we would go and measure who the Ã¢â‚¬Å“most fairly elected winnerÃ¢â‚¬Â was, and compare that to our model. In elections, we take the answer from our model, and enforce it in the real world. Computers are the same, although the models are more complex.
The reason I got confused when I first came across this, is surely computers are real, physical things, which obey the real world, why should they obey our models any more than anything else does? It took me a while to figure this out.
Computers are at their most basic level built on semi-conducting transistors. We have a very good (scientific) model of how these work, but perhaps more importantly, for a reasonably small range of conditions (those that exist in a computer) we have looked at them, and observed them, and measured them in enough detail to know how they respond. They have a nice set of properties: they can be configured take two yes/no inputs and produce a yes/no output, in a variety of behaviours. These ways behave exactly like some of the basic logical concepts (AND, OR and so on). So we can use transistors to build a logic engine. A machine that is capable of manipulating our logical models. All that is required is that the behaviour of our transistors doesnÃ¢â‚¬â„¢t suddenly change. We then build out logical models in the computer (programming). The Ã¢â‚¬Å“Microsoft WordÃ¢â‚¬Â model says that when it receives an input showing that the Ã¢â‚¬Å“AÃ¢â‚¬Â key has been pressed; the state of the screen should be updated to add the letter Ã¢â‚¬Å“AÃ¢â‚¬Â at the cursor position. We then accept this as reality. Because the model in the computer says there is an Ã¢â‚¬Å“AÃ¢â‚¬Â there, then there is.