My introduction to computer science professor, Mr. Robert Hardin, explained, “An algorithm is simply a set of instructions for how to do something.”
“The algorithm for brushing your teeth”, he said, “is something like: Pick up toothbrush, Squirt toothpaste on it, Scrub each tooth for 30 seconds with the toothbrush, Spit toothpaste into sink, Rinse mouth and toothbrush with water, Replace toothbrush into holder.”
To drive the point home he went on to describe algorithms for changing lanes on the highway and for getting from Ihop to the WMU Engineering campus.
Pondering his explanation it became clear, humans use algorithms all the time. When I learn to do something new, someone has communicated an algorithm to me. My habits are algorithms which I have internalized, (and bad habits are internalized algorithms that aren’t helpful).
People walking down the street in New York are implementing their “walking some place” algorithm, which is different from the “walking” algorithm used by people from small-town America.
Every day from 7:30 to 8:30 in the morning Millions of people get in their cars to use their “Driving to work” algorithm. Depending on where they live, and how much traffic there is, their algorithm will include more or less honking.
It turns out the simplest description for human society itself is with the phrase, “Humans In Algorithm”, because that is precisely what it is. We are humans in algorithm. Society is a whole bunch of humans executing various algorithms all around the world all the time.
At first blush, this might appear as an interesting but ultimately trivial realization, but it isn’t. It will turn out to be an empowering understanding for people with the potential to reshape society rapidly.
I will describe more next time, but I’ll give a hint to foreshadow why this is so important: I personally came to this conclusion, that we are humans in algorithm, some time before the significance of it dawned on me. When it did dawn on me I was learning ruby, finally starting to grasp the concept of meta-programming, when I wondered, “What is the meta-programming analog for human algorithms?”. Moments later I saw stars as ideas came bubbling up and overflowed in my brain.
Meta Meta Meta Meta
Among programmers, the word meta is used to describe a higher level of abstraction in an idea or a system. It is something like seeing things from above, getting a bigger picture, or a higher view of a thing. Some illustrative examples are, thinking about thinking, getting emotional about getting emotional, having a discussion about having discussions, or collection data about data, (that's metadata!). It’s kind of mind boggling to think about.
Similarly, meta-programming is writing programs that can program. Meta-programs can program themselves or they can program other programs. At some point programmers began to identify and share useful patterns and techniques for writing these programs, these program programming programs, and now it is known as meta-programming.
Recognizing that a computer program is just some instructions, an algorithm, written by a person, and that we humans are also algorithmic machines. It begs the question, what is a meta-human-algorithm?
That’s where I’m headed, but for now, I offer a short list of social norms and common activities that highlight our algorithmic nature:
Manners and etiquette, rules in sports, driving in public, daily routines, addictions, cooking with recipes, buying things with assembly instructions, regular bedtimes, dance, and instructional learning all make it clear, humans love instructions.