Table of Contents
If you set out to make a list of tasks computers are possible of doing, you’d be hard pressed to come up with an exhaustive list, at least using the naive approach of listing each and every individual program that might be able to exist in the right context (a music streaming app + tinder + visual studio code is technically a new app, despite there not being much of a market for that kind of thing).
But that shouldn’t stop us from trying in a creative way!
Start Out Small, and Layer
Let’s assume we have an extremely simple model computer that only has a screen (or something else a human can perceive values out of), two buttons with labels 0 and 1, a CPU, and a memory card. (If we use Turing equivalence as an axiom, we can have computers Q and P can simulate one another’s abilities exactly, given enough memory space. This means that we can abstract away the sub problems computers can solve into massive umbrellas of pattern matching.)
Listing some of the simplest, non complex uses this modern computer has as a tool, we might start with: perform simple operations to the number buttons.
Like Street Fighter, we can use our memory card to save number combos to operations like add, subtract, multiply, etc. Ok hmm, that was pretty easy. We now have the ability to sum, multiply, divide and subtract numbers. From here we can stop all work and create: accounting apps and simple calculators.
Next, let’s say that we’ve come up with a particularly interesting order of operations. We find ourselves doing a lot of the same series of operations over and over, so in addition to storing a number map to simple operations, you save multiple operations to a spot in your memory card to be retrieved whenever. We now need to build in logic that will allow us to store and process complex operations built out of simple operations. At this layer and create functions, these functions can be any combination of our simple operations, and perhaps we can even try some really complex math equations like calculus or algebra that require a lot of moving parts. Even better yet we can nest these operations inside of other operations, creating trees of recursive functionality. From here we can stop all work, and in addition to all we have above we now have: physics, chemistry and biology simulators, stock analysis tools, and any other calculations that require multiple numbers to be managed through complex equations.
Let’s move up another layer. We realize that these functions so far have only been relevant to the numeral space like a calculator, but one day we realize that we are able to map binary numbers to letters, and also pixels on a screen! So we map these modified numbers to colors and store them in our memory card. Perhaps we can assign 01 to red and 00 to blue and 11 to green and so on.
Now we can modify numbers and render them on the screen as colors. If we do enough of this, we can probably paint pictures, perhaps any picture! Let’s take advantage of our storage and save number strings to storage for later. We can stop here and in addition to all we’ve made above we can make photoshop, video applications (minus the sound since we don’t have any speakers in our simple computer), e-books, word processors, note taking apps, city and topographical maps, and if were willing to map sounds to data or vibrations to data, we unlock music, speech, and haptic programs at this layer.
This is great, but what if we want to use all these techniques we’ve learned on another machine. We need some sort of way to broadcast our numbers, so that other machines can see the math as well. For now, let’s just leave messages on our memory card, and run it over physically to another computer that has the same specs as our first simple computer. Amazing, we’ve just created messaging! From here we can stop and in addition to everything above we can create: the Internet, e-mail and social media.
By modifying, storing, and attaching symbols to numbers we have unlocked every tool in its warpath. Now that’s what I call an investment!
The Things We Didn't List
The list above is not at all exhaustive. All data (light and audio being most versatile) can be converted back and forth freely to numerical data. As long as we can store these numbers, and better yet if we can get machines to agree on these numbers, we have created a universal tool that can communicate with other universal tools (and also fits other universal tools (202306202156) inside of it (a program running a program)).
Remember, computers can create other computers as well. Humans very well could step out of every step in the process of computing and then computers could fabricate parts, seed the OS, etc. Software does this already every time you hit a “download” button on a website and uses settings from your computer to seed the app.
Bram Adams Newsletter
Join the newsletter to receive the latest updates in your inbox.