Computers = powerful + dumb.
A computer is a device that can be instructed to carry out an arbitrary set of arithmetic or logical operations automatically
- A calculator is a computer.
- A mobile phone is a computer.
- The cash register at Starbucks is a computer.
- Your FitBit is a computer.
How powerful are computers, and how can we measure their power?
I think that we’ve all had the experience of using a “slow” or “fast” computer. We make that judgment based on how quickly a computer is able to fulfill our request to perform some action.
How long does it take to startup, open my browser, and check my email?
How many apps can I have running concurrently before my PC craps out?
But it turns out that there are much more quantitative ways of measuring a computer’s speed.
Think of FLOPs the same way we think of horse power for a car. It isn’t a perfect unit of measurement, but it’s a pretty damn good one.
In computing, FLOPS or flops (an acronym for floating-point operations per second) is a measure of computer performance.
FLOPs can be measured in familiar
peta units and 1 FLOP corresponds to a single operation in a second.
To put that into perspective, a handheld calculator needs to be able to perform at 10 FLOPs to be considered functional. At less than 10 kFLOPS you’d be waiting for too long to learn what
1 + 1 equals.
To put that into perspective, the Turing Machine, the first computer ever, was able to process 17,576 possibilities in about 20 minutes, roughly equating to 15 operations per second, or 15 kFLOPS. Only slightly faster that a modern handheld calculator.
To put that into perspective, an iPhone 7’s can perform 729.6 gFLOPS, or 729 billion operations per second 😳.
How dumb are computers, and how can we measure their stupidity?
Despite the raw power a computer has, the operations it can perform are simple and mechanical. A computer cannot think, a computer has no insight, a computer cannot make decisions. A computer simply follows a command, executes it literally and cannot adapt to unforeseen issues.
Here’s a great way to think about this:
Teaching a robot how to make PB & J 🤖
Imagine that you need to teach a robot how to make a peanut butter and jelly sandwich.
This robot has no idea what:
- Peanut butter is.
- What jelly is.
- What a knife is.
- What bread is.
And it has no idea:
- How to spread PB & J on bread.
- What end of the knife to use to spread PB & J.
- How to open a jar of PB & J.
- How to scoop PB & J out of a jar.
- How to open a bread bag.
- How many pieces of bread to hold when trying to spread PB & J.
- What to do after the spreading is complete.
- What sides of the sandwich go together
- What order to follow these instructions in.
In order to teach a robot to make something as simple as a PB & J sandwich, you must go into immense detail and be incredibly thorough.
If you forget to tell the robot to open the jar of peanut butter, it will try to insert the knife into a closed jar. If you don’t tell a robot how to open a bag of bread, it will rip the bag open each time you instruct to “get some some bread”. If you don’t tell a robot how to scoop jelly out of a jar, it’ll insert and remove the knife vertically. If you don’t tell a robot where to spread the PB & J, it may try to spread it on the crust side, etc. Pretty dumb, right?
We tend to think about computers as these all-powerful machines capable of anything, when in fact, they’re all powerful, but only capable of what programmers tell them to do. A computer is only as smart as the programmer who wrote it.