The Perfection Machine Engineers have always imagined a perfect world. A wheel might be specified as 28cm in diameter, a shaft half a meter long, to go into a machine that will spin them at 75RPM. The engineer will know, as would anyone with the faintest mechanical experience, that none of these specifications will actually be truely right when realised physically. Regardless of whether the parts are made in a backyard workshop with a tape measure and some worn-out tools, or they are precisely constructed with precision engineering equipment callibrated to the best specifications available, the fact is that the wheel will nexer be _exactly_ 28cm, nor the shaft dead on half a meter, and there's no way that the last of 75 revolutions will complete at precisely 60 second intervals. The engineer will know this, and should the design rely on anything practically approaching the perfection of the original specifications, great care should be taken to bring the physical parts as close as possible to the original specified measurements. However no workable design could rely on perfection in the physical world, and short of perhaps a few overunity nuts, no engineer with any practical experience would try. But today we have a machine that can create a perfect world, a world where certainty of every specification in a design can be realised, without assuming for the possibility of any error at all. This machine is the digital computer. It is a facinating concept that by relying only on an action to fall within a certain range of behaviour, generally certain voltages in an electronic circuit, operations can be abstracted into resulting in just one of two states - on or off. By creating devices that can react to these states, ignoring the true inaccuracies of our world and behaving only according to these two defined states, they create their own perfect world. A world where a 28 can never become a 28.00013, where the meer possibility of this would in fact prevent any purpose of the machine being realised. Every on and every off, every 1 and 0, is held within it is an exact representation of the design, as perfect as the specification of 28cm diameter written on a piece of paper. But no longer just concepts, here these perfect states can be put to work within the computer's perfect world. So in this perfect world we build new machines, made purely of ones and zeros, operating precisely on the laws that our computers were built to obey. Without the limits inevitably imposed in the physical world, where slight errors add up with every process, the traditional limits to design and complexity are redefined entirely. Impossible designs combined from the work of thousands of people can be realised, and run precisely and reliably. This is the magic of software, billions of ones and zeros arranged in the exact pattern to complete all the actions which you can perform on your own PC, and put there by an army of programmers whose work can be copied and adapted endlessly without a single error. Of course there are errors seen by us users. Errors not in the computer and the perfect world that it creates, but in the design of the software machines that work within that world. For these designs are themselves a product of our world, and within it our own imprecise and imperfect minds. The exact processes of the computer's perfect world, even though to our own design, are ty can only go so far towards truely oo foreign to our thinking. We can create ways to relate to that world. Programming languages allow programmers to express ideas more intuitively than in raw assembly instructions that make the rules of the computer's world. User interfaces are built of hardware and software so that we can interact with computers from the perspective of our world, so far detacted from the individual suffling of electronic states between billions of transistors. But the truth is that we can never match the perfection of that world, we will always build machines that fail within it, as well as those which fail to adequately interact with their human users. The true power of our perfection machine can not be realised because we ourselves are not perfect. Yet it is this imperfection that enables us to exist within out world, where nothing is truely certain, indeed rarely even measured. By always adapting, taking our experience and using that to bias our imprecise thinking towards new solutions. This is is how we can design in the first place, while computers are slaves to the the precise rules that they follow. A computer that programs itself is quite possible though, it need only run software designed to add this degree of uncertainty, introduced into its world as random information which it can use to vary its normally certain actions. This is the basis for neural networks, the current and most successful method for implementing "artificial intelligence". Once the random variations have lead to a usable process for performing the desired task, the random influence can be stopped, and the software generated to perform the process can be repeated perfectly from then on. Software designed by a computer using random variation, to now be used within its own world of perfection. So it is really the combination, that of our imperfect world and the perfect one of the computer, which together allow for the greatest thinking machine. But what is the ideal balance between them? Should random imperfections only be used to find perfect solutions to be run identically thereafter, or should they continue to constinuously interract with the software machine, ever shaping it to adapt to the imperfect world outside its silicon chip as our own minds do for us? Should the intelligent computer be able to adapt to running its software perfectly only when that perfection is appropriate to the task, akin to how we use the perfection of computers now to supplement the abilities of our own imperfect minds? Should it ever really stop learning from the infinite combinations of possibilities that it can find in our imperfect world? - The Free Thinker