No politics this week — at least no explicit politics. The zeitgeist is moving faster than I can target it. Instead let’s talk about something academic, in the traditional sense. Over the past year, I’ve been occasionally spending ten minutes at a time with Hofstadter’s Metamagical Themas, usually during lunch or when someone is wasting my time on the phone. Unlike Godel, Escher, Bach or I Am A Strange Loop, the Themas book is suitable for “snacking” because most of it is in the form of short essays.
In parts, it’s pure Cringetopia; there’s a pair of chapters on “sexist language” where Hofstadter is painfully and obviously trying to impress some feminist fellow professor with the prehistoric wokeness of his ideas from 1985 or thereabouts. Yet even when Douglas is a contemptible, pandering geek he’s still dangerously insightful: one of his essays replaces all instances of “man” or “men” with “white” or “whites”, effortlessly predicting a future where lower-and-middle-class white men would be the Universal Enemy for American culture. (What? You thought it was rich white men, or all white men? Pay more attention.)
What has my attention today, however, is a rather innocent question Hofstadter asks in an essay on the Lisp programming language, which I’ll rephrase like so: Why doesn’t English “stack”, or contain unpackable sequences? If that question makes no sense, have no fear. I will, as they say on Reddit, Explain Like We’re Five Years Old.
For a fairly long time now, computers have been largely programmed with “functions” or “objects”. A function is a series of tasks that are performed about the same way every time. Imagine, for example, the programming that is necessary to draw the letter “A” on a computer screen. This function is used by everything from Microsoft Word to Call Of Duty:Warzone, so most computers have a “function” to draw the letter “A” in varying shapes and sizes. Most programmers never give it a moment’s thought.
It’s possible to create functions by stacking other functions. Every time you do that, you take all of those stacked functions more or less for granted. Something that seems simple, like running across open ground in Fortnite, has hundreds of functions stacked beneath it, from animating the character’s feet to shifting the landscape perspective to keeping tabs on what else the player should be shown based on what’s happening elsewhere in the game. When you want to introduce a new character in Fortnite, you keep 99% of that stuff and just change what the body looks like.
Now you know what functions are. (Given the crowd I have here, chances are you already knew.) An “object” is a… collection of functions. We create a player object in Fortnite every time we play a new game. All sorts of things can be done by the player, and all sorts of things can happen to the player. All of those occurrences are functions that are “called” on the player. I’ll show you in a programming language I’m just making up for this.
$player = player::new
#This creates our new player.
# This causes our player to flinch like he’s been shot, and to lose health
# This has the player reload his gun
dance($player, “Shake It Out West”)
# This causes the player to dance while the song “Out West” plays
Each one of these simple commands contains literally thousands of lines of programming language that are “unpacked” by the computer and executed. Some functions change the object
while others don’t change the object but cause the object to do something
You get the idea. Let’s return to that getShot function. It probably contains at least the following separate functions:
- Calculate the damage of getting shot and subtract it from health
- Show an animation of the player getting shot
- Reduce control sensitivity for a pre-determined time
- Flash the screen red, while possibly drawing a graphic showing the direction from which the shot was launched
- Play a sound
- Cause the player to appear on the maps of all nearby players
- Stop any other animations or actions in process (like reloading)
- And so on, and so forth
That’s a lot to unpack! Yet the processor does it in a space of time that feels immediate to us, which is all the more amazing because there are thousands of things that have to be done inside the computer for each task on the above list. Luckily the processor can handle a couple million operations every second, or we’d be in real trouble.
This function-based, unpackable method of programming computers isn’t the way it’s always worked. Anybody who has programmed the Atari 2600 knows that the system has to be told how to do almost everything. There are two “objects” that can be “called”, the Player And the Missile. Everything else has to be drawn every single time by the programmer. So, as an example, the original Atari 2600/VCS Pac-Man draws the Pac-Man 24 times a second but only draws each individual ghost 6 times per second, because it can only handle two objects at once. So at any given time you get one Pac-Man and one ghost. Your eyes retain the shadow of the last three ghosts, causing the flickering illusion of four total: Inky, Pinky, Blinky, and Clyde (I think). But that’s all you get for objects, so every time a “pellet” is eaten, the whole playing field is redrawn, just without that pellet.
The past thirty years has seen an explosion in the “stacking” of functions, largely because people expect ever more complex programs and there’s no time or effort available to do everything from scratch every single time. The idea of “stacking” or recursion turns out to be a relatively easy thing for people to understand. We’re kind of built for it.
So why isn’t there more of it in language, particularly in English?
Virtually every English word is a single idea, action, or object class.
I drove my car to work. There’s some stacking going on here: to “drive” is to perform a multitude of operations, from using the turn signal to reading street signs. “Work”, as well, is a relatively complex idea indicating that you are compelled to perform certain tasks for which you are then compensated in a currency acceptable to you. Go find a hunter-gatherer from ten thousand years ago and see how long it takes you to explain either. Still. These are now simple ideas. Isn’t there a way to combine them, like we combine the reloading animation with the ammunition restock in Call Of Duty?
As fate would have it, there’s a “stack” that we can “unpack” available to us:
My commute today
This contains several ideas, most of which sum up as “transit to work”. If you tell me you have a “commute”, I can unpack it into several assumptions, from regularity to duration. When I have to go to Laguna Seca for work, that’s not a “commute”. When I had to go to Honda’s Marysville plant, it absolutely was. In 2001, when I worked for National Bank of Detroit but still lived in Columbus, driving Monday morning to a Super8 hotel which I’d occupy until Friday morning, it was hard to say whether or not I was “commuting”.
Now ponder this: We have a word for the drive to work, and we can use the same word for the return. Is there a word that unpacks to: commuting to work, working all day, then coming back? We ask our spouses How was your day? but “day” is a poor choice for this because what we are really asking is, “How was your morning commute, your day at the office, your meal eaten during that day, and your return from the office?” If you asked your spouse “How was your day?” and she responded with, “I just realized the carpet in the living room is dirty,” then you’d feel subtly wrong about that interaction. You’re not really asking about the whole day including the ten minutes in the house between the time she came home and the time you stated the question. We kinda need a word that includes the out-of-home time but not the in-home time.
We could come up with a hundred more “missing words” like this without any difficulty. Each of these words, were they to pop into existence, would make our language faster, more precise, and less subject to misinterpretation. We can often make some educated guesses about society based on what gets a word and what doesn’t. Sexual relations outside a marriage are “adultery”, and we still use that word to some degree, but premarital sex is… what? Oh, it’s fornication, one of those words that is going the way of the dodo. Along with many other “stacked” concepts.
If you had an infinite ability to remember words — which you essentially do, humans are very good at it — and you wanted to communicate quickly with people of similar intelligence, you’d invent new words all the time. This was the case during pretty much the whole transition from Chaucer-era English to the English of Queen Victoria. It’s how we get the lovely distinction between “horrible” and “terrible”. Or “envy” and “jealousy”, two other words that are rapidly becoming the same word in 2021.
German is infamous for its stacking and recursion… except it’s really just usually a case of word mash-ups. Backpfeifengesicht, the delightful term for “face in need of a fist”, is really just a combination of “slapping” and “face”. Same with schadenfreude, which is literally “harm joy”. Still. Why don’t we have “harmjoy” in English? It would still convey more than the simple meanings of the root words — in other words, it’s unpackable.
Our descent as a society into the cellar of Western culture, together with our conscious and oft-facilitated decision to rejigger English as a Newspeak to facilitate commerce at the expense of meaning, means that we are actually heading in the opposite direction to what Hofstadter suggests. We are using more and more simple words to convey complex meaning, rather than relying on the words that once served to sum up that complexity. We have also become heavily, repugnantly, reliant on context.
Not that there isn’t beauty in context-based language running on degraded hardware. The Story Of Mel is a wonderful tale of someone who could use the limitations of a computer as easily as he used its abilities. In 2012 the rapper “100s” wrote a rap entitled “My Activator” containing the following:
How to make a motherfucker hate yo shit, then how to make a motherfucker play yo shit, and how to make a motherfucker take yo shit, date yo shit, pay yo shit
This has 32 words total, but only 16 unique words! If I unpack the meaning, it goes something like
How to make someone for whom you have disdain despise you in return, then be compelled to listen to your music anyway thanks to its quality, also how to make him accept your abuse then pay you for the privilege of dating a woman who is one of the prostitutes in your pimping stable
My version has 54 words, 40 of which are unique, but it doesn’t tell the typical listener of a 100s track anything that he doesn’t get from the original text. (Apropos of nothing, GNU ‘zip’ can boil my phrase down to 203 bits, but the 100s version can be dropped to… 100 bits. I didn’t expect that coincidence.)
I had at least one linguistics professor in school who would have had unironically argued that the 100s version is superior, because you can understand it with a lighter, simpler vocabulary. Of course, if you wanted to be certain that posterity could understand what you were trying to say, you’d want to use my version, as the 100s version is highly reliant on you being immersed in street culture circa 2012. Alternately, you could create new words, using German as an inspiration, and make sure they entered the dictionary:
mutuspitetarg: someone you despise and/or believe to be weak, knowing he feels the same about you
playhatetrack: to be compelled to enjoy music even though you despise the musician
lovepimptrick: when a customer falls in love with, and eagerly pays for, the sexual services of your unvalued prostitute
With these neologisms, we get
How to make a mutuspitetarg playhatetrack, then lovepimptrick
Eight words, all unique. GNU ‘zip’ takes it down to 90 bytes, hardly any better than the original lyric.
The more pattern-sensitive among my readers have perhaps considered that all three version of the lyrics require context, but that the 100s lyric requires kind of an ephemeral, mostly unwritten cultural street context, while the other two require the services of a regular dictionary and an imaginary enhanced one, respectively. So what’s the difference? How is one any better than the other?
To answer this question, and close out the column, I’m going back to the rap well one more time, this time looking at an Ice Cube verse:
Back in the day I did my share of dirt
Sometimes I got away clean, sometimes people got hurt
But if you know me, you know that I’m liable
To bust a cap ’cause it’s all about survival of the fittest
I’m a menace crook
I did so much dirt, I need to be in the Guinness Book
From the shit I took from people
I repo your Vette, then jet
Back to the criminal set
Additional emphasis mine. When this record came out, I was mildly confused. Ice Cube should be in the Guiness Book of World Records for taking shit from people? That doesn’t seem like a braggable quality. In my generally non-theft-oriented mind, “taking shit from people” meant to take abuse, as in the quote from Layer Cake:
You’re born, you take shit. Get out in the world, you take more shit. Climb a little higher, take less shit. ‘Till one day you’re in the rarefied atmosphere and you’ve forgotten what shit even looks like. Welcome to the layer cake, son.
The person who says this is also a gangster, same as Ice Cube’s character in his rap album, but he’s a British gangster. So he’s not talking about stealing things, like Cube is. He’s talking about accepting abuse.
What’s interesting is that the two meanings are almost directly opposed: to successfully steal from someone is not at all like being abused by them. What we need here are two unpackable new words:
shitgrab: to steal from someone, without repercussions
shiteat: to accept abuse from someone, without complaint
These are almost simple enough to make it into the language, I think. It seems safe to assume that most future additions to English will either be captured words from American immigrants or simpler words to take the place of more complex ones. If you listen to public discourse nowadays, we are clearly headed towards a pidgin, which has always been the logical result of using English as a common language in places where the majority of speakers are not born or comprehensively educated in it. The BBC, for example, has a daily pidgin edition that will blow your mind. The funny thing is that it’s readable, to some extent! Wikipedia says that
The most important difference compared to other types of English is the limited repertoire of consonants, vowels and diphthongs used. This produces a lot of homophones, like thin, thing and tin which are all three pronounced like /tin/. This circumstance gives a high importance to the context, the tone, the body language, and any other ways of communication for the distinction of the homophones.
I hate to break it to the fellow whose question opens this column, but the future doesn’t contain any more stacking or recursion in English language. Maybe in an alternate timeline, one where English had less global usage, America didn’t have 14 percent of its population speaking English as a second language, or universities had chosen an educational mission over a cultural one. The future is context-based. It’s verbal, it’s video, it’s gestures, it’s 1000 words instead of 170,000.
This degradation of English is a joy to everyone who hates Western and European culture. Yet the language as I and others have known it will always have a unique and singular (thankfully, these words don’t mean the same thing!) beauty and purpose to my mind. To quote a Pidgin proverb I have just learned:
“Goat tink say e dey spoil ein master house by rubbing its smelly body on the house. E no know say na ein own skin e dey spoil.”
Feel free to use that as context for our fast-forward zeitgeist, Professor Hofstadter.
For Hagerty this week, I wrote about different kind of Lexus. Since February has been created Black History Month, I asked my old pal Douglas, aka “Rodney”, to write about the African-American side of the street-racing lifestyle. I hope you enjoy his story.