Underlying all of our technology is a series of letters and symbols that make it work. Whether you’re a professional programmer or have just dabbled in HTML on your MySpace page, you know that underneath a sleek user interface is built on a pile of programming languages. These languages are tools for building the digital world, but their name raises an interesting question: Are programming languages technically languages?
At first glance, this might seem like a frivolous question. The answer isn’t as obvious as it might seem, however. The elusive nature of “language” and the ever-changing status of artificial intelligence muddies the water of what human communication is and can be. Giving the case for and against programming languages being language can open up fascinating insights into our digital world.
The Case Against Programming Languages Being Language
Let’s start with the case against, because it’s the easier one to make. At face value, programming languages look very different from language languages. We’ll run through some of the biggest ways that programming languages differ from what we commonly think of as language. While this isn’t a comprehensive list, it hits the most important points.
They Only Exist In Written Form
A language doesn’t need to be spoken to count as a language — signed languages exist, of course — but it’s pretty unusual for a language to exist purely in written form. One of the only other examples of a language with no spoken or signed reference language is Blissymbolics, a language made up of symbols that are meant to be as simple as possible. This on its own doesn’t disqualify programming languages, then, but it is notable.
They Don’t Evolve Naturally
If programming languages are a language, they’re a constructed one. Rather than being the natural formation of humans talking to each other, constructed languages are designed by a person or a group, who make the grammar and vocabulary. If a constructed language is picked up by a community and used over time, it will start to evolve, because the one constant in language is change. Esperanto, for example, is a highly constrained constructed language — it’s designed to be simple, and its speakers are invested in preserving this simplicity — but even it has changed organically since its creation in the 1800s.
Programming languages, however, are not flexible in that way. Yes, they might be modified, but this has to be done consciously by the language’s creator or whoever else is in charge of it. Most languages change because people invent a new word or something perceived as an “error” gets accepted by a wide swath of people — using “literally” not literally, pronouncing “cot” and “caught” the same — but an error or undefined new term in a programming language would break something. No other kind of language is so constrained by a limited set of grammar and vocabulary.
They Aren’t Used For Communication Between Humans
Is language a purely human phenomenon? That’s a divisive question. Researchers are still exploring how dolphins, birds and other intelligent creatures can communicate. If we are to limit “languages” down to those used by humans to communicate, however, programming languages don’t necessarily check that box.
You could argue that programming languages do facilitate communication to some extent. A programmer can send code to another person and that person might be able to read and understand what the program is doing. It’s hardly seamless communication, however, and programmers usually make code easier to understand by adding comments in plain language describing what the code can do.
To add onto this point, there’s the fact that you can’t translate programming languages into other languages. Whereas a Spanish text can be turned into an English one without too much trouble, you would have a hard time turning it into CSS or Java. Can you say “I love you” in a programming language? This in itself is enough to make it seem like programming languages are something entirely different.
The Case For Programming Languages Being Language
The arguments in favor of programming languages counting as language tend to require stretching the definition of language. That said, “language” is far from a stable concept, and linguistics is constantly discovering new ways languages work. Let’s look, then, at some of the ways programming languages do overlap with other languages.
They’re Symbols That Create Meaning
Let’s start really simple. If language is just sounds, signs or symbols that are used to convey information, then programming languages fulfill that definition. This aspect of it can easily fall into a pointless semantic debate — we can just choose whichever definition of language suits our argument best — but it is worth noting that at their core, languages and programming languages have this in common.
They’re Infinitely Generative
Every human language has a finite vocabulary, but an infinite number of ways of combining that vocabulary to form thoughts and ideas. This is one of the most remarkable facts about language, really: a child can learn to create a hypothetically infinite number of sentences from a finite amount of information. The idea of infinitely generative language being at the very heart of what defines language was championed by linguist Noam Chomsky, and it forms the basis for understanding language in linguistics today.
Programming languages, too, are potentially infinite. A person can learn the rules to a language and iterate on it endlessly. The programming language Python, for example, was used to create Instagram, Google and Netflix, and that’s only a handful of examples. While each programming language has limitations — as do all other languages, to be fair — they can do an endless number of things.
They Are Used For Communication, Just Not Between Humans
Humans use language to convey their thoughts. While humans can organize their thoughts with language, they’re not the same thing. Language is the imperfect medium through which we all try to express ourselves, but there’s no way to show someone what the firing synapses in our brain are doing.
If the workings of a computer are technically equivalent to the workings of a human brain, then programming languages have a stronger claim to being languages. That’s a pretty big “if,” though. We’ve been comparing computers to the human brain for pretty much as long as computers have existed. The mathematician Alan Turing famously theorized about what it would mean for a computer to truly “think.” As artificial intelligence has gotten better and better, the lines between a thinking person and a thinking machine have only gotten blurrier.
Even if computers aren’t at the same level of complexity as the human brain, you can see how programming languages work in a human-to-computer sense in a way analogous to how other languages work in a human-to-human sense. Programming languages are the intermediary between a human’s brain and a computer’s binary ones and zeros. Humans can’t really peer into the bare workings of a supercomputer, and computers can’t read our minds any better than other humans do. Programming languages are a method of communication, then, even when computers aren’t necessarily charming conversationalists.
You can make the argument for or against just by setting your definition for what “language” is. If you declare that languages need to be spoken by humans, to humans, then nothing is going to prove you wrong. There are clearly differences between programming languages and other languages, but the question is simply how much disparity you’re willing to allow. Is math a language? What about dance? These slippery definitions make the question at the heart of this article impossible to answer in a way that will satisfy everyone.
Perhaps it’s better, then, to think about what it would really mean for a programming language to be a language. One of the negative outcomes of conflating them is it can lead to strange results like those of a 2015 survey in the United Kingdom finding six out of 10 parents would prefer their children learn Python to French. While the either-or option seems like a silly premise to start with, “programming languages” and “world languages” are often lumped together simply because of their names. And yet, the differing outcomes of a student learning French and a student learning Python are easy to imagine. Equating the two, on a practical level, is probably silly.
It’s possible the most fascinating implications for programming languages versus other languages are yet to be seen. Already, most laypeople interact with computers using non-programming languages. We talk to our robotic assistants and search the internet with human language, which is converted into computer language as designated by programming languages. If researchers are ever able to design an artificial intelligence that really understands a human language, then the boundaries between these separate modes of communication could start to break down entirely.