The hottest new programming language is English! Or maybe not.
Programming in English might not be all its cracked up to be.
Surely one of the hottest, and maybe smartest tweets of 2023, came from the AI star Andrej Karpathy, who joined OpenAI a few weeks later, and then left again (for the second time) a few days ago:
The New Yorker quoted it, and almost 4 million people viewed it. It’s not hard to see why. Programming in English, as opposed to languages like Python, C++, Fortran or Lisp, has long been a dream. The most exciting article I ever read in Technology Review, was about pointed towards that prospect. At the time Charles Simonyi, an early Microsoft employee who lead the Microsoft Word project was building a startup company, founded in 2002, called Intentional Software, the goal of which was to let developers specify what they wanted as abstractly as possible, without having to write pesky computer code. The point was that “The customer wouldn’t feel straitjacketed by a programming language. Everyone would be happy.” As far I know, though, they didn’t entirely succeed; in 2017 Simonyi sold the company back to Microsoft, and returned there. The product was never widely released, to my knowledge.
Programming in English itself (a step beyond what Simonyi was working on) would be grand. No weird punctuation to learn, no idiosyncrasies of specific programming languages, no bothering to memorize how a given language worked. You could think in your native language, without having to translate into the rigid structures of machines.
With LLMs, we can finally glimpse what that future might feel like.
But the truth is it doesn’t work that well yet. But that doesn’t mean people aren’t trying.
In fact, if the internet rumors are to be believed (and generally people seem to believe this particular one), GPT-4 is itself “programmed” partly in English, with an internal “system prompt”, hidden from the user, but ubiquitously in the background, as an unseen part of the conversation.
Patrick McGuiness’s Substack
recently explained a trick that’s been floating around on the internet, and way you can (allegedly) get the system to spit out its internal prompt, the first little bit of visible here:That’s a program, in essence for ChatGPT to follow.
The whole thing, for those who are interested, is allegedly here in this hard-to-read screenshot:
§
This morning on LinkedIn, Tim Estes pointed out to me something that is absolutely fascinating.
If the system really is being “programmed in English” it is not always doing what is being asked to do:
Much of what Reid Southen, Katie Conrad, and I recently described is in flagrant violation of those directives.
§
As a coder who calls himself BioBootloader on X points out, we have entered a whole new era:
Paraphrasing slightly, writing your program in English “prompts” is fast upfront, but downstream may lead to serious challenges in debugging.
I have been coding since I was 8 years old (for money in college, but mostly just for fun). The thing about computers had, until now, always been that they do exactly what you tell them to do. If a program I wrote didn’t work, it was because I made a mistake. If I tracked down the mistake, and fixed it, I could be confident that the system would work properly. It was a kind of glorious social contract; I do my part, and the system does its part. My trust in the coding infrastructure was essentially absolute.
We have apparently just entered a new and different and frightening era, in which debugging involves not only fixing our own mistakes but coming to terms with machines that may or may not uphold their end of the bargain.
Already, there is an argument that the quality of code has declined, in the era in which large language models have been used as copilots.
And of course the idea of “smart contracts”, another form of moshing together language and code, has never really taken off.
§
Karpathy’s reinvention of Simonyi’s dream is sexy as hell. Who wouldn’t to program in English? And it’s easy see LLMs as the first real, though imperfect realization of Simony’s dream.
But classical, formal, deterministic programming languages exist for a reason. They allow programs to specify with precision what they want. As Phil Libin pointed out in a message to me this morning, discussing a draft of this essay, “The reason that software engineering is done in formal languages is not because formal languages make it harder to specify what you want than English. Obviously. It’s because formal languages make it much, much easier to specify what you want.”
In the new regime, caveat emptor.
Gary Marcus generally loves progress, but worries about where we are headed.
These articles/statements about programming a computer using English versus a formal programming language all start from the assumption that English is a superior tool. I think that's because we (English speakers) are all really familiar with it because we've been using it for our entire lives! But if you spend any amount of time thinking about it - English is a terrible language! We humans are terrible at communicating with each other and we think a computer is somehow gonna be better? How many times have you said or heard someone say, "...you just don't understand what I'm saying?" That's an English language "programming bug" between two native English speaking computers and it happens ALL THE TIME!
Reminds me of the ol' DWIM (Do What I Mean) instruction and, augmenting the GoTo, we have the very helpful ComeFrom. Not exactly English but close enough....