Concatenative Biology

There are several ways to categorize programming languages. One is to distinguish between applicative and concatenative evaluation. Most languages are applicative – functions are applied to data. In contrast, a concatenative language moves a single store of data or knowledge along a ‘pipeline’ with a sequence of functions each operating on the store in turn. The output of one function is the input of the next function, in a ‘threaded’ fashion. This sequence of functions is the program. Forth is an example of a concatenative language, with the stack serving as the data store that is passed along the thread of functions (‘words’). “Forth is a simple, natural computer language” – Charles Moore, inventor of Forth.

One of the great advantages of concatenative languages is the opportunity for extreme simplicity. Since each function really only needs to know about its own input, machinery, and output, there is a greatly reduced need for overall architecture. The big picture, or state, of the entire program is neither guiding nor informing each step. As long as a function can read, compute, and write, it can be an entity unto itself, with little compliance or doctrine to worry about. In fact, in Forth, beyond the stack and the threaded execution model, there’s precious little doctrine anyway! Program structure is a simple sequence, with new words appended to the list (concatenated). The task of the programmer is just to get each word right, then move on to the next.

In nature, the concatenative approach is the only game in town. Small genetic changes occur due to several causes, random mutation being one of them. Each change is then put through the survivability sieve of natural selection, with large changes accumulating over large time scales (evolution). (Evolution is active across the entire spectrum of abstraction levels. Hierarchies emerge naturally, not through doctrine or design.) Concatenation is the way by which these small changes are accumulated. Much of the epic and winding road of human evolution is recorded in our DNA, which is billions of letters long.

This process can be seen happening right now in molecular biology. Consider the ribosome. This is the little machine inside a cell that reads a piece of RNA (a chain of nucleotides) and translates it into a protein (a chain of amino acids). There is no Master Control Program assigning names, delegating work, and applying functions. There is only a concatenative program, built up over the ages by evolution. So, basic life uses a fairly powerful and successful form of computation: DNA for storage, RNA for code, ribosome for computing, protein for application.
(and natural selection for testing) 🙂

We flatter ourselves when we talk of our ‘invention’ of levers, gears, factories, and computers. Nature had all that stuff and much more long before we ever came down from the trees. Math, engineering, and science are great not because of their products, but rather because they enable 3-pound hominid brains to explore nature and ponder the possibilities.

Ancient Metaphors

New nations often use comparisons and metaphors to build a more familiar and solid framework or ‘story’ using the past, especially to evoke visions of ‘glory days’. One example is the symbolism of early America harkening back to ancient Greece and Rome. The founding fathers often learned Greek, Latin, and much of the history of those cultures in their formative years. We can still see that influence today in the architecture of capital government buildings.

It should come as no surprise then, that the same thing happens with computers and the insatiable need for new descriptors and naming conventions. Much of this framework has sprouted up within the last few decades. That doesn’t leave enough time for growing familiarity organically. Past language and literature provide a rich crop ready for immediate harvesting.

Here are two examples:

Beowulf

This epic poem is one of the earliest known pieces of vernacular English literature. The story is about a brave hero who slays monsters in the north of Europe sometime around the 6th century. It is a tale of great strength, difficulties overcome, and distances traveled. The fame of this poem (especially the Old English version) has grown steadily over the last two centuries. It has even been reproduced in literature, popular media, and the cinema. This provides a ready-made metaphor that can be used by something new.

In 1994, Thomas Sterling and Donald Becker built a computer at a contractor to NASA. It was the prototype for what would become the “Beowulf Cluster” architecture. This type of machine uses modest, commodity, even oddly matched PCs connected together to form a single parallel computer. It has acquired a rather stoic and renegade reputation in academia, where it has been used to gain entrance to the exclusive supercomputer club ‘on-the-cheap’. The name is said to have been inspired by the line in the epic poem: “thirty men’s heft of grasp in the gripe of his hand”.

Inferno

Another old epic poem is Dante Alighieri’s “Divine Comedy”. It is an allegory for the soul’s travels and a map of 14th century spirituality. It is as well a multi-dimensional exploration of sensitive/rational human nature and psychology. Again, this work is one of the most studied pieces of literature in history. It is another ready-made treasure trove of meaning and metaphor.

The first of its three parts is “Inferno” (hell). It is graphic and horrifying. It is also strangely open-minded and thoughtful in that figures from classical literature are woven into a Christian narrative. These include Socrates, Plato, and indeed Virgil, Dante’s guide. Perhaps the most apt adjective for “Inferno” is: deep.

“Inferno” was recently used as a template for a “Software Inferno” describing “sinners against software” and their torments (1). By using this template, the author begins with an extensive toolbox of metaphors. Of course, neither “Software Inferno” nor this short blog post should be used as an authoritative representation of Dante. There are plenty of good academic sources for that.

Instead of Virgil, Bell uses the Countess of Lovelace as our guide. More commonly known as Ada Lovelace, she was a mathematician and the daughter of Lord Byron, and is widely considered as the world’s first computer programmer for her work with Charles Babbage. She leads our hapless traveler down through the Inferno, towards the Earth’s core, along a roughly cone-shaped set of circular slices:

  • ANTE-INFERNO developers who couldn’t decide whether to use their skills for good or evil, denied entry to both Heaven and Hell, doomed to eternal obscurity
  • LIMBO developers born too early in history to know of proper software engineering
  • LUST developers who chose power and fame over commitment and responsibility, they gave their time to their computers instead of their family, they sought the spotlight, now they are blinded by its glare for eternity
  • GLUTTONY developers with human heads and pig bodies, IPO and stock bubbles had led them into wasteful, gross over-consumption
  • GREED IT types who gathered every crumb of profit for themselves, neglecting to, share anything with the people who got them there, condemned to a cacophony of falling pennies forever
  • ANGER realm of vitriol and negativity, with inhabitants broiled by burning paper, the only water available had been poisoned just like their own workplaces
  • HERESY developers who knew of good software engineering, yet refused to use it, now chaotically and aimlessly going their own way for all time
  • VIOLENCE developers who had inflicted malware, viruses, and phishing on the public, this pestilence now torments them in turn, and even sleep offers no escape
  • FRAUD techno-hucksters, advocates, evangelists who had foisted crappy software, standards, and models upon desperate users who longed for guidance, they now dwelt in sewage for all time
  • TREACHERY those who had enabled and encouraged this fraud, doomed to keep shoveling this detritus forever

Although intended for an audience of computer developers, the macabre humour is widely understood thanks to the template provided by Dante.

Here are a few other names for computer technology borrowed from the past:
Apollo, Athena, Delphi, Hercules, Hermes, Homer, Hydra, Jason, Janus, Merlin, Midas, Oracle, Odyssey, Phoenix, Phoebe, Pegasus, Sisyphus, Tantalus, Troy, Ulysses, Valhalla, Valkyrie, Zeus
… and of course a whole host of planets, moons, stars, and constellations.

(1) Bell, A.E. (2014). The Software Inferno. Communications of the ACM, 57(1), 48-53.