We humans are a funny bunch. How quickly we go from being humbled by the improbable feat of a human flight to becoming annoyed by how long it takes at the airport. We are routinely hampered by traffic, but only occasionally amazed at the existence of something called a car.
One of the most prominent examples of recent human achievement is what we a programming language. Reviewing the Olympic mental feats that punctuate the history of creation will help you rediscover the almost fantastic nature of programming.
The programmer, just like the poet
Frederick P. Brooks, Jr., in his influential Mythical Man Month collection writes: “The programmer, like the poet, works only a little removed from pure thought-things.” That’s a statement worth pondering. For the working programmer and anyone who helps them to be successful, it can serve to spark dormant inspiration.
We could say that programming is an activity that moves between the mental and the physical. We might even say that it is a way of dealing with the logical nature of reality. The programmer gleefully jumps the gap between mind and body that has so confused thinkers.
Admittedly, we can propose to carry out by means of machines the mechanical branch of this work, reserving for the pure intellect that which depends on the powers of reasoning. So said Charles Babbage, the creator of the concept of a digital programmable computer.
Babbage invented computers in the 1800s. Babbage and his collaborator Lovelace were not busy with a new work, but with an entirely new medium. They wrestled from the ether a physical ground for our ideas, a way to concretely test them and in that form make them available to other people for consideration and elaboration.
In my own life of studying philosophy, I discovered the discontent of the thought form whose rubber never meets the road. In this vein, Mr. Brooks completes his thought above when he writes: “Yet, contrary to the words of the poet, the program construction is real in the sense that it moves and works, producing visible results separate from the construction itself.”
Over the centuries, a kind of slow-motion dance between mental and mechanical development was staged to arrive at what we can now summon in the browser with a casual tap of the F12 key.
Think about this programmable loom from the 18th century and the role it plays in the story. It’s interesting to look at a baroque algorithmic weaving machine and see punch cards that are accurate analogs and ancestors of the punch cards of early computers. The interplay of condensing thoughts and terrifying machines finally meet in the modern programming language.
stunned wonder
For a closer look at programming development, see Ron Pressler’s ambitious history, Finite of Sense and Infinite of Thought. From the hesitant baby steps of antiquity to breath-taking leaps like Babbage and Turing, there is the sense of heading towards something not fully understood, but felt intuitively. We are in a time where we are delivering on the broad promise of this thing.
The report of Mr. Pressler resolutely marches into the hailstorm of mathematical and logical detail, but before embarking on his journey, he writes that “awesome wonder is a powerful marketing tool, but it bewilders rather than clarifies.” Here we understand that the warning is to avoid falling into programming modes and modes. This is good advice.
On the other hand, we don’t want to fall from the abyss to the other side, in a parched indifference.
It is to our detriment if we omit wonder altogether. It’s healthy and vital to keep inspiration alive, lift your head from work, zoom out for perspective.
There’s really no reason to separate the fun of coding from the discipline. In fact, that’s a recipe for dissatisfaction. Burnout in IT is rampant. There must be more wonder, not less.
Turing-complete
A key moment in the story of programming is Alan Turing’s universal machine. This is another achievement we can point to by recognizing that programming was accomplished at a high intellectual cost (and high personal cost in Turing’s case). The difficulty of holding in mind the idea of a self-referential system that can describe itself as well as the programs it runs. Today we use computers that store both the information and the instructions to work with it in the same memory space.
This idea was adopted by Von Neumman for his architecture, which underlies how modern computers work. It’s one of those “obvious when it’s done” things: the system’s data storage capacity is also used for its code. Before it’s actually done, though, it’s anything but clear.
The tl;dr here is that the idea of a file that can be both data and executable is a conceptual breakthrough that makes for a customizable, extensible system that we’ve been working on ever since.
We can say with certainty that a Turing-complete machine that is being realized and widely available is not only impressive, but not even easy to imagine until recently. The basic concepts for wrapping the mind around it were not yet clearly discernible.
Human interaction
Everything we’ve said so far has been about the nature of programming itself. Another important aspect that we should mention is the effect it has had on human interaction. Whether or not computers evolve into a singularity, the overall effect of humanity’s enhanced ability to communicate through software is a turning point.
From this angle, web-enabled software is seen as the well-known cyberspace metaphor, a new kind of medium for interaction. Taking into account what we have described before – the bridging of the mental and physical – this landscape offers a unique opportunity to interact largely in the realm of thought with the support of an executable logical substructure.
When united with the Turing idea of a universe of potential machines built into the system, we see the potential for worlds of interacting ideas. Here it can be felt that we are still busy, still active in feeling for new ideas to be brought to life.
The future unfolds
So our daily work in programming software is part of the ongoing unfolding of unpredictable future realities.
Perhaps the ideas swirling in the Web3.0 sphere, supported by Blockchain innovations, will come into play. Many think so. Others strongly disagree. Anyway, and for good reason, Facebook changed its name to Meta.
Perhaps quantum computing plays a role. After all, it allows interaction with an inherently different character of the underlying physical reality, that of the non-binary.
All things return to the people who run the systems, run the programming, and help them succeed. Let’s not forget that technology primarily serves people. Happy developers write better code, and that’s better for profit, that’s true, but the more fundamental point is that happy developers are happy people.
If you can, remember the sense of possibility inherent in opening the code that makes a program work. It was baked with not just a technical interest, but an almost fantastic quality. And why not? Less than a hundred years ago, a programming language was a vaguely perceived possibility that may or may not turn into something real.