English Isn't a Programming Language
You can prompt an LLM for code, but that doesn't make English a programming language
What’s a programming language?
A programming language consists of two parts:
Syntax: what words and symbols are allowed to be used in what order
Semantics: what the computer should do when it is given a program (that has correct syntax) to be run
This is similar to natural languages, like English, Spanish, or Korean. A sentence should be grammatically correct (syntax), and if it’s grammatically correct we can determine what it means (semantics).
However, English is not a programming language, despite popular ideas to the contrary in today’s AI landscape. In this post, we’ll review the key reasons why.
How does a programming language work?
When a computer receives code written in a programming language to run, it follows a few steps (described in rough detail)
Transform the code into a representation more usable for a computer (using a compiler, interpreter, etc.)
Use the computer friendly representation to run the code on a processor
Without getting too specific, the processor in your computer has a limited set of available instructions, and step 1 of running a program is to translate something like
if (x > 5) {
printf(“hello”);
}
Into low level code like (this is a small snippet):
stur wzr, [x29, #-4]
mov w8, #6 ; =0x6
str w8, [sp, #8]
ldr w8, [sp, #8]
The details here aren’t important, but what’s critical is that the process of generating this code is deterministic. Given the same code, the same assembly code is generated each time. If I have the source code, I have everything I need. If I lose the low level code, I can just compile the original again.
English as a programming language
There are two ways in which English could be considered a programming language with today’s LLMs.
Write an English prompt for the LLM so that it directly provides the output of a computation. “Hey, what’s 10+15”, and the LLM might respond with “25”
Write an English prompt for the LLM so that it provides a computer program that can provide the output of the computation. “Hey, write me a program to add 10 and 15”, and the LLM might respond with a python program like “print(10 + 15)”
When either of these strategies works, it’s impressive. However, most people don’t trust LLMs to complete computations using strategy 1 due to their propensity to hallucinate (don’t try to add big numbers with an LLM). Strategy 2 is the preferred way to get LLMs to help with computation, but I argue that while strategy 2 can be effective, it does not make English a programming language.
Determinism and source code
The tangible output of software engineers is the “source code”, which is a fancy name for all of the code they’ve written. Keeping the source code organized and saved is critical: minor changes to the code can result in substantial changes to how the end product works.
People who use English and LLMs to generate source code recognize this as well, and the fact that they save the generated source code is exactly why English isn’t actually a programming language. LLMs are “non-deterministic”, meaning for the same prompt, they produce variable outputs. Variation in source code is not good. A few changed lines of code can result in a program with drastically different behavior.
That is, an LLM user can’t save their English prompts as if it was programming language source code because there’s no guarantee that they’ll get the same output when they send their prompts to the LLMs. This is in contrast to the traditional programmer, who only saves their source code: the “computer friendly representation” described above doesn’t need to be saved because it can be deterministically generated.
This may seem like a minor nitpick, but this completely undercuts the idea that English is a programming language. English and an LLM can produce code, but the English language prompts aren’t code themselves.
Why is this important? At the end of the day, a software company’s source code constitutes a large part of its intellectual property. Companies save the source code, not the prompts used to generate it.
The meme that “English is a programming language” is often used to minimize the importance of learning to code with traditional programming languages. But if you’re in charge of a software company whose main IP is its source code, don’t you think you’d like to have someone on staff who actually understands it?


