I started out at Ohio State University majoring in Fine Arts. Two years later, I switched majors to Psychology. When I graduated OSU, I went looking for a job, thinking I’d combine my fine arts background with the psychology I’d learned. Five out of five companies I interviewed showed little interest in fine arts, psychology, or any combination thereof. It was 1969 and all the companies were looking for computer programmers back then, so I went to work for Sears, Roebuck and Company as a computer programmer.
Sears had an excellent training program and I fell head over heels in love with computer programming. I remember my first day of training. We were told to draw a flowchart that would direct a hypothetical robot to enter our office building, go up three elevators, get off on the 47th floor, and go to our office cubicle. We hadn’t learned any computer language yet, so we had to write our instructions for the robot using basic English commands that wouldn’t lend themselves to misinterpretation, like “walk straight until you reach the first elevator” or “press the button with “47” printed on it”.
I later found out, after reading Donald Knuth’s “Fundamental Algorithms” (The Art of Computer Programming Vol 1), that a flowchart is a graphic representation of an algorithm. Knuth stated that algorithms were similar to processes, methods, procedures, or routines, but also possessed the following attributes:
finiteness: algorithms have to terminate after a finite number of steps. They can’t go on forever;
definiteness: operations (steps) have to be rigorously and unambiguously specified for every possible case;
inputs: data may or may not be given to an algorithm before or during its operation;
outputs: data generated by an algorithm’s operation that bears some relation to its input;
effectiveness: an algorithm must be able to be precisely performed within a finite period of time and must be exactly repeatable.
These attributes imply that not everything is an algorithm as the title of my post suggested.
Algorithms are the cornerstone of all computer and robot programming, including machine learning and artificial intelligence. The implementation of algorithms requires that the operations, cases, inputs, and outputs specified for each algorithm be converted to a format that can be processed by a specific machine or operating system. Computer hardware is built to perform certain basic operations efficiently. Unfortunately, the formats a computer can “understand” are usually incomprehensible to the average human. Computer software allows general or special purpose algorithms to be written by humans (or other machines) to operate on a specific set of computers.
Remember that algorithms are processes, methods, procedures, or routines with extra attributes. We’ve implemented them on computers and robots. Nobody ever said that algorithms are limited to just those systems though.
What about cellular organisms, bacteria, fungi, plants, and animals? What about human beings? Why couldn’t we substitute plastic for flesh, organs, and muscles, metal for bones, gold and wires for nerves, or vice-versa? What about life itself, the brain, consciousness, or love? Could there be an algorithm for life, consciousness, or love?
It seems reasonable to me to assume that life, consciousness, and love possess the following attributes:
they are processes;
the processes are probably composed of a finite number of steps;
the processes probably have inputs and generate outputs.
but life, consciousness, and love are currently missing a couple critical attributes:
we don’t know all the operations required or the cases in which those operations occur;
we don’t know how to go about encoding the algorithms to make them effective.
Maybe we don’t need to know all the operations involved in life, consciousness, and love. Maybe we just need to know enough to create viable processes or processes capable of bootstrapping whatever else they need whenever they need it.
There are more questions on this subject than answers. I’m ok with that. There’s no known algorithm for whittling a huge block of ignorance down to a beautiful piece of knowledge or for whittling a piece of goodness out of a huge block of evil. That’s probably because those are processes that go on forever,
or at least as long as hope springs in the human breast.