Why a Computer is a Universal Tool
why is a computer a universal tool?
From The List (202306232002), we discussed a series of increasing layers of complex problems that could be solved by imaginary an imaginary simple computer without any other technologies being added in a vacuum. But of course in the real world, that is not the case. In the 2020’s computers are in everything.
We defined a universal tool in The Universal Tool (202306202156) as being able to:
- recruit raw materials to its cause, generating single purpose tools inside of itself
- reshape its current architecture to perform new roles with the same building blocks (improving the same tools); attuning to problems better over time as we learn more about the problem
- bend the world around it to create more instances of itself
- solve new problems leveraging creativity and imagination
Recruit Raw Materials
There was a brief time in the early digital computation era (the 1950s) when everyone thought special chips would be placed into different items, but it turned out to be much more plausible and efficient to let a general purpose computer control any number of remote specific client computers — client computers as small as thermostats to giant cloud clusters of servers. The boundary between client and server began to fade over time. Computers can now decide with onboard logic to vacuum a room, to stop a car while parallel parking, or turn on sprinklers in the middle of a drought. Computers as a tool command raw materials at their discretion, and in addition can recruit inert raw materials and combine them based on context. This conditional “creativity” is a foundation of early work in AI, though researches realized early on that there is not nearly enough time or space in the world to implement everything in expert systems leveraging rule based mechanisms (but we’ll discuss this later).
Attuning to Problems
As time marches onward, problems tend to change shape. For example — some problems are inherently seasonal. We only worry about blizzards in winter, not July. This entails that some tools are only useful when the correct context is available, e.g. a snow plow in December.
Computers, and specifically programs, thanks to their abstraction, can re attune to a problem at any time. You probably know these as feature updates and bug fixes. This inherent flexibility means that the same program can evolve to match the problem as it evolves and grows. Interestingly enough, because it is so cheap to create new features and append them to the same code base, we actually get a new problem of feature creep where some vestigial features of programs are no longer useful but stick around because of the Chesterton’s fence parable, which states that changes should not be made until the current state of affairs is understood.
Create More Instances of Itself
A universal tool, being a universal tool, should have no issue in creating more copies of itself. This process need not to create a direct clone, but the successor should have the same core universal abilities of its parent at a minimum.
A human parent is well aware that their child, while being a product of their DNA, is not them. In addition, the parent raises their child leveraging a combination of genetics and environment to hopefully one day create a functioning member of society that then themselves can create a new child at the pace of one or two generations and so on.
Computers (the physical objects) have no direct way of replication (This statement isn’t even entirely true on the face of it as modern computer hardware fabrication centers are more run by computers than people! Especially since modern CPU chips are tuned on the nanometer level so there is no room for human error).
However, this does not mean that computers can not be heavily leveraged to make better computers, and in fact, this must be the case as every next generation computer was built on predecessor software and hardware and improved upon by using state of the art tech.
Speaking of software: software is a different story. To understand why this is the case, we need to understand the concept of Turing completeness. Simply put, for an imperative language to be considered Turing complete it must:
- have conditional repetition and jumping (for loop and if/else statements)
- be able to write and read to some form of storage
Later, we will be examining the proliferation of programming languages from the root of machine language. But for now, all we need to understand is that a Turing complete language can encapsulate a smaller also Turing Complete language, which can encapsulate another Turing complete language, and so on. Most modern programming languages (the ones you’ve heard of!) are Turing complete. An interesting side tool component from Turing completeness is Turing equivalence, meaning if you have computers P and Q, if they are Turing equivalent you can simulate them interchangeably.
This is not a copy. A copy implies that one is functionally the other, or more accurately, the copy is able to do all the things the original can do and nothing more or nothing less. A Turing equivalence between computers mean that in addition to being functionally equivalent, either Turing machine could have created each other and have Turing machines the same size, greater or smaller, with the same functionalities.
Solve New Problems
The thesis and purpose of this book is to explore the expanding space of problem solving through the tool of computation so there wouldn’t be much of a book to speak of without this being the case, but let’s dive into this claim.
A universal tool, as specified in The Universal Tool should be able to modify its physical attributes to address new problems with the same architecture. In other words, there should be no prevention of the universal tool to adapting to a new problem.
When we needed our hammer to also be a flashlight, we are not leveraging the same architecture from the hammer itself. We are adding an external LED bulb, battery and button. A computer can modify it’s same architecture in unique and novel ways to fit to brand new problem territories. Within the total space of computation is both all solved problems with computers and unsolved problems.
In fact, there is only two (or maybe three if you’re generous) other object in the known universe that can also fit the four requirements above. Care to guess what they are?
The Other Universal Tools
The brain is the other universal tool. The brain is able to do all of the items listed above (and more!). A brain can easily recruit raw materials to its cause, and then leverage those raw tools to create more advanced tools that then themselves go on to create more advanced tools. Thanks to the scientific method, the human brain is able to use science to get closer and closer to the reality of a thing. Sexual reproduction is the brains means (well DNA’s really) way of creating new copies of itself. Finally, the human brain is able to leverage creative leaps to jump from one solution space to another, and is not limited to the visible problem space, as a counterfactual engine (though that is a topic for another day).
DNA is the second universal tool. Language is the third universal tool. I’ll let you deduce why these are the case given the requirements of a universal tool.
You may have noticed that universal tools can create brand new universal tools on top of them. The reasons for this are discussed in depth in David Deutch’s amazing The Beginning of Infinity but for the purposes of this book, realize that within universes are smaller universes that in and of themselves can create universes and so on.