Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save dfarquharson/6640a56c8da491d4aa1bf16d1c526159 to your computer and use it in GitHub Desktop.
Save dfarquharson/6640a56c8da491d4aa1bf16d1c526159 to your computer and use it in GitHub Desktop.
A Philosophical History of Computing
A philosophical history you say? Now just what exactly does that mean? This will be a history insofar as it is a good-faith attempt to refer to the transitory temporal event-stream, but a philosophical one inasmuch as it focuses on an interpretation of this stream, an attempt to trace a coherently woven thread through its myriad stitchings in the tapestry of time; an invitation to explore a fractal fringe of our human history, and to ponder whether our avocation with abstraction, our infatuation with computation, may constitute the very core of consciousness itself.
We must introduce our silent protagonist: the algorithm. The verb to the data structure’s noun. The active ingredient in the universe. What is an algorithm? A recipe, a procedure, an equation, an instruction set, an abstract process, a program, that, when executed correctly, produces some desired result. It is the encoding of potential energy into pure information, the transcription of mind into matter, replicable for the cost of subatomic particles required to losslessly compress it. In so being stored, it becomes itself a data structure, perspiring with the potential to modify other data structures, which may themselves contain algorithms, and so it recurs.
So, where does this story begin? With the delightfully audible cryptanalytic thunks of the Colossus at Bletchley Park as it cracked the latest enigma ciphers? With the resounding negative answer to Hilbert’s posed entscheidungsproblem by the one-two punch of the Church-Turing thesis? With the first mass human-replacing mechanizations of the industrial revolution? On the rationalist rhetorical battlegrounds of the agora of ancient Greece? With the advent of the abacus by the Sumerians of neolithic Mesopotamia? No, I contend that it goes even farther back than that, much farther, to the careful algorithmic execution of hunting and gathering on the savannah. It was with these first tool-makers, organizers, and planners, those first actualizers of the transcendent powers of abstraction, the proto-meta-algorithmic self-conscious beings that would soon inherit the earth, where our story begins.
You see, the story of computing is the story of humanity. We programmed our prey, learning their tendencies, exploiting them with elaborate coordinated strategies, devising tools to optimize their execution. Guided by the algorithmic hand of natural selection we refactored our understanding as conditions changed, and it soon became clear that algorithmization’s transcendent properties were exceedingly beneficial for the algorithmizers. We were hooked. We couldn’t stop. We learned to program plants, and to program the earth itself to produce the plants we required in the abundance we desired. We learned to program the elements, fashioning bronze, then iron into the tools and weapons that fulfilled our wishes, making manifest our abstractions in an ever more powerful, tangible, and at times frightening, manner. We even attempted to program each other, tribally, religiously, economically, politically. But some began to realize that something was lost in the translation from the abstraction to the actualization, and grew discontented. Some among them claimed that this lossiness spoke to our inferiority with respect to the world of abstractions, demanding that we accept our fate as lesser mere approximators of the perfections of the abstract. Others saw this as a puzzle to be solved, a challenge to be conquered, an opportunity to optimize the pathway from the possible to the practical. It is from this lineage that modern computing was born.
The perfect bridge between the abstract and the actual was going to be the general purpose algorithmic computing machine. If we could devise a general purpose algorithmic machine, one which could execute any algorithm provided to it, surely we would achieve the ultimate perfection of the world of abstraction here in the meatspace of actualization, realizing the Pythagorean dream of uninhibited intercourse with the integers. And so, in much the same fashion as we had become accustomed, we began approximating this abstraction of the perfect actualizer. From the Antikythera mechanism of ancient Greece, Ismail Al-Jazari’s programmable analog automata of medieval Arabia, the logical machines of Ramon Llull developed further by Gottfried Wilhelm Leibniz during the enlightenment, to the difference and analytical engines constructed by Charles Babbage and programmed by Ada Lovelace in the high romantic period, we iterated, refined, approximated. We were getting close; tantalizingly so. The modern era loomed. Surely the dream was within our grasp.
Unexpectedly, disaster struck. We invented the general purpose algorithmic computing machine and in the process proved that some algorithms cannot be actualized, their executions infinite in scope, their results undefined. Were the naysayers right all along? Are we in fact perpetually doomed to an existence as lesser approximators of the perfect? Are we the base case of the recursive process of meta-algorithmization, incapable of spawning meta-meta-algorithmizers? Yes, some algorithms are truly uncomputable, they are paradoxes, unknowable, some such a thing that well and truly cannot be known. Examples seemingly as simple as the algorithm for deciding whether some input algorithm will terminate are infuriatingly undecidable. But is the size of the set of the unknowable knowable? What of the size of the set of the knowable? Might both sets be of infinite size? Should the infinite set of the unknowable deter us from enumerating the infinite set of the knowable? Such a forfeit of our inheritance would be the surrender of our greatest gift, an embrace of the nihilistic void, and an end in the perturbations of the great algorithm that set this moment into motion nearly 14 billion years ago. Such a rejection would be a repudiation of ourselves, a negation of our nature, the abolishment of the algorithmic, constituting the cessation of our consciousness, for, as alluded to earlier, it is the recursive meta-algorithm, the algorithm capable of begetting further algorithms, that I contend constitutes the core of consciousness, the very essence of humanity.
And so I challenge you with this: go forth and increment the known size of the set of the knowable. Contribute to our conception of the computable, and may your discoveries bear as fruit a further infinite set, projecting entirely new planes of the possible. The first meta-meta-algorithmizer may be among us. In contrast to the ecclesiastical lament that there is nothing new under the sun, I submit that true self-transcendence may be achievable if we discover the mechanism of the recursive case of the meta-algorithm, and find ourselves in its branch.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment