English Linguistic Imperialism in Programming
Many are likely familiar with the “American tourist” stereotype, where Americans visit different countries around the world, yet insist on imposing American culture on everyone, and expect everyone to speak and understand American English. But what about when it comes to programming? How did we get to a point where the top 10 coding languages used worldwide are all written in English and no other non-English coding language has ever made it close to being as widely used as, say, JavaScript?
During my first week at PagerDuty, I ran into an environment setup issue and ended up finding a solution from a programming blog/forum written entirely in Japanese. Luckily, I was able to easily locate the options I needed to set in my terminal, thanks to the familiarity of English command line statements. But this got me thinking: What if I were a native Japanese speaker trying to decipher English terminal commands?
Intuitive Programming Languages for “Everybody”
Throughout the history of computer science, English has emerged as the lingua franca of programming languages, despite the fact that some were written by non-native English speakers—e.g., PASCAL (Switzerland), PHP (Denmark), Ruby (Japan), and Python (The Netherlands).
Python was written with the goal of “Computer Programming for Everybody.” Many of us have come to learn and love the intuitive nature of this language; however, that “everybody” should have an asterisk because Python’s readability is really only specific to English sentences.
Consider this line of code:
Seems easy to understand, but the linguistic structure of this code actually uses a Subject – Verb – Object word order. For example, in the first if
statement, element
is the subject, is
is the verb, and 1
is the object. Fewer than half of the world’s languages, namely Chinese, French, Spanish, and English, use the Subject-Verb-Object word order, whereas a larger percentage actually use Subject-Object-Verb, namely Korean, Japanese, Hindi, and Latin.
Word order aside, even a colon means something different in certain languages. In the context of this example, we understand the colon to mean that everything after the colon is related to everything before the colon. However, in Swedish, it’s used similarly to a possessive apostrophe (e.g., “Hannah:s code”).
While this is a very granular analysis of Python, it shows how even the seemingly most accessible languages are written in a way that arguably is more confusing for non-native English speakers because of how it ingrains English grammar into the code.
How This Affects Non-Native, English-Speaking Programmers
While the U.S. definitely leads in the number of programmers by country worldwide, numbers in India are growing at a rate that statisticians believe will surpass the U.S. by 2023. Clearly, learning English doesn’t seem to be a dealbreaker for non-native speakers who want to learn how to code. However, it does create quite a significant barrier that, say, myself as a native English speaker never had to overcome throughout my education.
Some might argue that it’s just a couple of keywords and it’s not like you have to be fluent to be successful, but this language barrier creates problems that extend way beyond just code to integral things like technical communication, documentation, and understanding instructional materials.
At the end of the day, non-native English speakers not only have to learn the complexities of coding, but also those of the English language, and maybe even simultaneously. This doesn’t mean that non-English programming languages don’t exist; in fact, there are many: a Chinese Python, a Japanese educational language called Dolittle, a French language called WinDev, and even some creative ones like LOLCODE (shown below) and a language called Velato that uses music notes and pitch.
Why Aren’t There Mainstream, Non-English Coding Languages?
Based on the opinions from non-native English coders around the world, it seems they prefer to code in English mainly because translating keywords could result in losing meaning and adding confusion.
In addition, non-native English coders are able to reserve English just for the purpose of coding, whereas native English coders have multiple different meanings and contexts for keywords like “return” or “pointers.”
“I made some project using WinDev. Despite the fact I’m French, it was actually extremely hard to program in “French”… Just because my brain was not trained to do that.”
– @youki, Reddit1
On the other hand, some feel that the pressure to use English results in poorly written code, especially for beginner programmers. It also presents situations where English code is mixed in with commit messages or comments in another language, which also reduces readability and adds confusion.
“Sometimes Japanese and English [are] intermixed. Comments and commit messages are almost always in Japanese. Consequently, you see a lot of code written in poor English, and it’s quite bad because it hurts readability a lot.”
– Enno Shioji, StackExchange2
While non-native English speakers are clearly more than willing to code in English and often become some of the most influential programmers in the field, it’s worth raising the question of how I and other native English-speaking programmers can take our language privilege into consideration. By prioritizing internationalization in our development and making software easily adaptable to any region, culture, or language, we can actively take steps to avoid becoming the stereotypical American who expects the entire world to speak and code in English just because we speak and code in it.
I encourage you to engage in this discussion with your coding peers and take the time to consider how your experience with programming has been impacted by the dominance of English in this field, whether you are a native speaker or not. We’d love to hear from you so please comment and share your thoughts and experiences on our community forums here.