Hi there. This is the first of three letters exploring future programming languages using the medium of speculative fiction. In exploring the extreme edges of current trends, I hope to uncover what may develop inside those limits.
Satoshi Nakamoto is a time traveller. Probably. He says he is anyway. He emailed me last year and we've been talking most days ever since. I've spent most of it asking him about what programming languages are like in the future. I tried summarising for this newsletter, but he's not very consistent, or honestly very believable.
I decided to tell you, as close as possible, the stories he has told me, along with a few snippets of our conversations. It's up to you how much you believe. I'm not 100% sure whether knowledge of the future counts as insider trading, so for the avoidance of doubt — please don't buy or sell any stocks on the basis of these letters.
Learning Languages 1
It took a thousand years to teach everyone to code, and almost as many failed attempts. We tried both making errors louder and making them impossible, both removing mathematics and only using mathematics, both constraining problems tightly and giving total freedom. None of these found success.
The correct idea was one of the first. We exploited things people already knew how to do.
The first attempt at this was natural language, in most cases the English language. To quote Hopper, "Manipulating symbols was fine for engineers but it was no good for [the wider population] who were not symbol manipulators. Very few people are really symbol manipulators. [...] It's much easier for most people to write an English statement than it is to use symbols."
Their vision was not to create a programming language that looked a bit like English, but to have people actually write English and then to wrap a code interpreter around that. Hopper's team observed the vocabulary choices, grammar, even spelling mistakes that coders made, and designed their language to execute them as intended. They even rewrote it in French.
Their technology limited them more than it does us, but we have another problem: language skills are by no means universal. To achieve our mission, we would first need to train everyone in the world to speak with fluency and precision. In trying this we built some of history's most successful revolutionaries but still didn't achieve our goal. Political instability and radiation exposure sabotaged what success we had found, driving us back into the laboratory once more.
We tried again with a more general approach. Our anthropologists visited each of the shattered remnants of civilisation and located the closest thing to an instruction-set that this culture possessed. We categorised these into the following groups:
Cooking to recipe, alchemy and mystical chemistry
Religious rites (excl. transubstantiation)
Fortune telling, astrology, protoscientific prediction
Finance, accountancy, bookkeeping
Highly structured trade, vocational and early-years teaching
Military tactics, operations
Executive & project management, OKRs
Disciplinary sexual practices
Machine and furniture assembly
Miscellaneous
We moved then to design machines to interpret and execute each of these practices as code. We encountered some obstacles, particularly the tendency for humans to involve (even destroy) their own bodies as part of their instructional tasks (so-called 'blood, sweat and tears problems'). But we had successes too, creating the sacred interpreter to execute scripture, the culinary computer to 'cook' 3D renders, the ordinant router to communicate via projectile weaponry, the quantum brace representing qubits with the obedience of submissives, the capital markets, horoscopes, and an array of more peripheral machines targeted towards oppositional subgroups (where horoscopes were resisted role-playing games often worked, for example).
As we approach the conclusion of our five-century plan, we integrate 99.994% of all humans within 90 days of conception. Economic output is high and population consent is within acceptable bounds.
Movable Languages 1
It is generally assumed that Rizlang came first. It is a simple language, perhaps even ugly. It is standard for its era, simple, line-oriented, stateful. Its keywords are written in mid-century English. There is no reason it should have survived, if not for Rizzo.
Rizzo is a rat. He is reasonably large, brown, furry, has large teeth, sophisticated philosophical opinions and an attractive face. He is the titular character of a videogame, simple in purpose, intricately detailed in execution, and so popular that approximately 30% of the human population are playing it at any particular moment. Due to a multi-century legal battle to try to slow its spread, I am permitted to share only vague details of its game mechanics. If you feel tempted at any point to play Rizzo, please stop reading immediately.
Rizzo's popularity drives Rizlang's ubiquity. Every platform has a Rizlang interpreter and every new release is quickly followed by a new build, crowd-coded in the systems engineering minigames. Some regimes mandated government-built computers, arcanely built and specifically restricted to counter the game, but by this point the game was so ubiquitous that any reasonably sized workforce would contain enough Rizzites to sabotage the effort.
The result: every platform has a Rizlang interpreter, and so it is pointless to write in any other language. All new software from virtual pets to planet-scale database systems is written in Rizlang. We have discovered Rizzo running on refrigerators, eyeglasses, nuclear weapon targeting systems, dog pacemakers, cochlear implants, and anything else you care to name.
I have booted up ancient computing devices sealed for millennia to find Rizzo staring back at me. Has he been waiting there? Some previous version waiting to emerge? Did some Rizzite get here before me? Or did I unwittingly introduce him in the process of my analysis.
Beautiful Languages 1
Among Damien's many skills, he was an expert programmer. The founder asked him to create a website. Damien replied that he needed five years, total financial freedom, and a suitable programming language. Five years later the website was still not begun. 'I need another five years,' said Damien. The founder granted them. At the end of these ten years, Damien took up his laptop and, in an instant, with a single command, he created a website, the most perfect website ever seen.
~ Unknown [1]
In the beginning was the Word, and the Word was with God, and the Word was God.
~ John 1:1
We can assume human language was a blunt tool at first. The primordial equivalent of pointing, albeit at a great distance, to dangers or treasures. Likewise, computing began with simple operations — arithmetic, repetition, condition. With this they set about building more sophisticated phrases, from numbers to alphanumeric symbols, from order to syntax, to structure, to simulation. At each stage, they used less to say more.
Some were happy with the advances, but a few zealots and obsessives knew it could be taken further. Object-orientation was not the answer, it was merely the first question. They sought greater and greater expressiveness. "Look not at what I do, but at what I do not do," one claimed when sharing a new source code.
Many of these innovations went unappreciated, but their work never ceased. Each generation played its part, examining the example codebases, identifying and compressing redundancies, discovering elegant new axioms to improve their languages. What once took fifty thousand lines was reduced to the single concise file, then to the articulate passage, to a delicate sentence, and finally, to our era — the era of the word.
Our words are so finely tuned, so intricately packed that they can achieve what a thousand programmers in a thousand years still cannot, and with this technology we have erupted into the industry again.
Here are some of our recent creations:
ȝŢʏȉ٨āԎ߬՜ which runs the Mars irrigation project.
Ęŝϩͽڧב is a popular entertainment system.
ɍղ🎢ffffⒻ we're still researching, but appears to help with thyroid regulation.
Remarkably, we have begun to discover that many of these words seem to relate to their purposes. For example, Pathfound generates optimum solutions to the travelling salesman problem, and Hillsong generates advice for birds on the appropriate trees to nest in.
We have begun the search for single-symbol programs, discovering some properties of Ѥ, especially when repeated. Our historians inform me that some past cultures have revered lone symbols, but little knowledge has survived.
Some fanatics feel we should search further, whispers about emptiness, about tuning the void. Yesterday I caught my colleague staring at a blank computer, "do you ever wonder what programs it runs when it's switched off? when its mind is truly clear?" she asked.
"This all seems a bit academic Satoshi."
"Academic?"
"Yeah, academic. Like the Glasgow Haskell Compiler. Fun to think about but not that relevant to real life."
"That must be why I have a million bitcoin and you don't. Ideas are powerful far before they are practical."
"Ugh. Don't remind me. So what do you mean by all of this? Software engineering is a mysterious semi-occult art? Magic made real?"
"In a sense magic was always real. There are still places where a curse really does mean death, just because if the right person speaks the right words then those things will happen. Burroughs believed that language was a virus from outer space sent to reproduce itself here, and we've just given it a massive upgrade."
"But that's what's so good about programming languages. They do exactly what you tell them to, nothing more and nothing less. They're totally mundane and that's great."
"Then why language? How have we come to use the ultimate social tool to control machines? You think that is a coincidence? That you sit down every day and work on literature? One of Hopper's great innovations in trying to create executable English was Symbolic Addressing — that is, naming your variables based on what they represent. Since then programmers have argued about naming, but that's not new. Plato's Cratylus was about whether names come inevitably from the things they refer to. Adam's first act in Genesis was to name all of the animals! Naming is power."
"So code exploits language, that doesn't mean they're the same thing."
"The point is that programming is a combination of machine, social, and psychological power. It's a way for a large group of people to encode what they know as a group and get a machine to enforce it. Programming languages are how we integrate machines into our society, and so, in the long term, they are subject much more to social forces, political forces, even biological forces, than technical ones."
Talk soon!
Kay
[1] Adapted from Calvino’s Six Memos, alongside many other debts.
If you are interested in reading Hopper in her original, I’d highly recommend reading Mechanisation of Thought Processes (vols 1 & 2), the proceedings of a 1958 symposium in which she took part, along with Backus, inventor of FORTRAN and Strachey, inventor of CPL, ancestor of C, amongst others. Hopper and Backus are back to back, both are brilliant and the discussions (also noted) are very robust. You really get the sense that they saw programming languages (‘automatic coding’) as a totally undecided issue, even just in the fact that theirs is merely one chapter in a symposium that also covers everything from automatic translation of human languages, to machine learning, to medical dagnosis!
wow! keep writing! love this!