We all are programmers. And I want to explain what programming really is. Most people think of it as a writing instructions that a computer will then interpret and go do what those instructions say. In only the simplest sense is this fully encompassing of what programming is.
Programming in the broadest sense is a search through computational universe for interesting patterns that can be interpreted by other patterns. A few definitions are in order. A pattern is simply some set of data pulled from the computational universe (from my own investigations/research/logic everything is computational). Thus a pattern could be a sentence of English words or a fragment of a program written in Java or DNA strands or a painting or anything else. Some patterns are able to interact with other patterns (information processing) such as a laptop computer can interpret Microsoft Office documents or a replicated set of DNA (a human) can interpret Shakespeare and put on a play. A program is simply a pattern that interacts with other programs.
When we write programs we are simply searching through the space of symbolic representations in whatever programming language. When a program doesn’t work/doesn’t do what we want, we haven’t found a pattern of symbols that’s interpreted the way we prefer or the processing pattern can interpret. We sometimes call that “bugs” in the software. Underneath it all it’s simply another program, just not the one we want.
I call it a search to bring particular activities to mind. When we say we write a program or create a program it seems to engender only a limited set of methods to find programs by a limited set of people, called programmers. Calling it a search reflects reality AND opens our eyes to the infinite number of ways to find interesting patterns and to interpret them. The space of programs is “out there”, we just have to mine it for the programs/patterns we wish to interpret.
Programs/patterns that become widely used owe that use to the frequency that those patterns can be interpreted. For example, Windows or MacOS have billions of interpreting machines in which their programs can be interpreted. Or on an even bigger scale, DNA “programs” have trillions of interpreters on just this planet alone.
Using a program is nothing more than interpreting it. When you type a document in MS Word the OS is interpreting your keystrokes, refreshing the screen with pixels that represent your words, all while MS word itself is checking for grammar put in place by programmers who interpreted a grammar reference and so on and so on. For sufficiently complex programs we aren’t able to say if a program “does the right thing.”. Only simple programs are completely verifiable. This is why programs exist only as patterns that are interpreted.
Humans have become adept at interpreting patterns most useful for the survival of human genes. With the advent of digital computers and related patterns (tech) we are now able to go beyond the basic survival of our genes and instead mine for other patterns that are “interesting” and interpretable by all sorts of interpreters. I don’t know where the line is on good for survival and not, but it’s really not a useful point here. My point is that with computers we’re able to just let machines go mining the space of existence in much grander ways and interpreting those results. Obvious examples include the SETI project mining for signs of aliens, LHC mining the space of particle collisions, Google search mining the space of webpages and now human roadways, Facebook mining everyone’s social graph and so on. Non obvious examples include artists mining the space of perceptively interesting things, doctors mining the space of symptoms, and businesses mining the space of sellable products and so on.
Let me consider in a little more detail that last one. Every business is a program. It’s a pattern (a pattern of patterns) interpreting the patterns closest to it (competition and the industry) and finding patterns for its customers (persons or government or companies or other patterns) to buy (currency is just patterns interpreted). Perhaps before computers and the explosion of “digital information” it wasn’t so obvious this is what it is. But now that so much of the world is now digital and electronic how many businesses actually deal with physical goods and paper money? How many businesses have ever seen all their employees or customers? How many businesses exist really only has brief “ideas”? What are all these businesses if not simply patterns of information interpreted as “valuable?”. And isn’t every business at this point basically coming down to how much data it can amass and interpret better/more efficiently than the competition? How are businesses funded other than algorithmic trading algorithms trading the stock market in high frequency making banks and VCs wealthy so their analysts can train their models to identify the next program, er, business to invest in…..
When you get down to it, everything is programming. Everything we do in life, every experience is programming. Patterns interpreting patterns.
The implications of this are quite broad. This is why I claim the next major “innovation” we all will really notice is an incredible leap in the capability of “programming languages”. I don’t know exactly what they will look or feel like but as the general population desires to have more programmability of the world in a “digital” or what I call “abstract” way the programming languages will have to become patterns themselves that are generally more easily interpreted (written by anyone!). The more the stuff we buy and sell is pure information (think of a future in which we’re all just trading software and 3d printer object designs (which is what industrial manufacturers basically do)) the more we all will not want to wait for someone else to reprogram the world around us, we all will want to do it. Education, health care, transportation, living, etc. is all becoming more and more modular and interchangeable, like little chunks of programs (usually called libraries or plugins). So all these things we traditionally think as “the real world” are actually becoming little patterns we swap in and out of. Consider how many of you have taken an uber from your phone, stayed at an airbnb, order an eBook from amazon, sent digital happy birthday and so on…. Everything is becoming a symbolic representation more and more easily programmed to be just how we want.
And so this is why big data is all the rage. Not because it’s a cool fad or some new tech thing… it’s because it’s the ONLY THING. All of these “patterns” and “programs” I’m talking about taken on the whole are just the SPACE OF DATA for us to mine all the patterns. The biggest program of all is EVERYTHING in EXISTENCE. On a smaller scale the more complicated and complex a program is the more it looks indistinguishable from a huge pile of data. The more clever we find our devices the more it turns out that it’s an inseparable entanglement of data and programs (think of the autospell on your phone… when it messes up your spelling it’s just the data it’s gleaned from you….). Data = programs. Programs = data. Patterns = patterns. Our world is becoming a giant abstract ball of data, sometimes we’re symbolizing but more and more often we’re able to directly compute (interpret natively/without translation) with objects as they exist (genetic modification, quantum computing, wetware, etc.). In either case it’s all equivalent… only now we’re becoming aware of this equivalence if not in “mind” then in behavior or what we expect to be able to do.
Face it. You are a programmer. and you are big data.