Most of the World Can't Code
Programming is only accessible to those who understand English and the Latin alphabet.
If you don’t, your chances of becoming a programmer drop drastically - not because you lack intelligence, but because everything from syntax, documentation, and debugging tools is built in English.
Why is coding still tied to a single language? Shouldn’t anyone, regardless of their native script, be able to write Python in Japanese, Arabic, Sinhala, or Hindi - while keeping full compatibility with existing ecosystems?
Has anyone here faced or thought about this problem? What do you think the biggest challenges would be?
43 comments
[ 3.8 ms ] story [ 105 ms ] threadToday German Excel still doesn't accept "XLOOKUP", but insists on "XVERWEIS". On input, that is, it silently converts languages when opening .xlsx files.
Sounds like a bug waiting to happen
I don't think there were bugs in opening files, but I sure got some useless error messages when I used the wrong language!
Silent conversions could definitely be messy, but what if there were a standardized system that allowed programming in any script while keeping everything interoperable? Could that avoid the pitfalls of past localized languages?
If programming were script-agnostic from the start, we wouldn’t have to constantly adapt to shifting global languages. Instead of relying on English or any single language, shouldn’t we explore ways to make programming more accessible to all scripts from the ground up?
Assembly:
Brainfuck: Oh, you meant easy to learn programming languages based on a real language? Yeah, English just happens to be one of the easier languages to learn and if you need to learn a programming language you can just as well learn English on the side. I did.Do you think it was because of technical reasons, or was it just easier for English-based languages (C, Python, JavaScript) to spread globally? If we designed a non-English programming system today, do you think it would actually gain adoption?
Also I totally suck at learning languages. I've tried to learn Swedish, nope, German, nope, Spanish/Portuguese, also nope.
Ja jos mielestäsi suomenkieli liittyy johonkin muuhun kieleen niin ihan vapaasti voit ajatella niin. Viime viikonloppua yritin opettaa muutamia suomenkielen sanoja ja taivutusmuotoja kielenopettajalle joka jaksoi kuunnella noi puoli tuntia ja totesi etta "mahdotonta oppia koska mitään referenssiä muihin kieliin ei ole".
What if coding was built from the ground up to be script-agnostic—where people didn’t need to 'learn English on the side' at all?
If a Finnish speaker could code in Finnish while collaborating with a Japanese speaker coding in Japanese — and the system translated everything seamlessly — do you think that would increase access to programming without fragmenting the codebase?
What was supposedly done in good faith to make it easier for non-English speaking Finns to do Excel functions ended up making it impossible for everyone. If you didn't know Excel then =IF() was just as cryptic as =JOS() and if you did know Excel then you couldn't figure out why =IF() didn't work. At least .xls files were compatible because apparently functions were saved as opcodes and not as strings.
I haven't used non-English software since so no idea if Finnish Excel still has translated fuctions. Hope not.
That said, I later opted for Latin for reasons neither I nor the examiners could explain.
In my view, having a single lingua franca is nice. It better facilitates knowledge transfer. I wouldn't want to see a fracturing where each area of knowledge (or, say, every specialization/application programming) is best treated in a distinct linguistic community. That would be bad for everyone.
Rather than fragmenting knowledge, what if we had a system that let people write and learn code in their native script, while still maintaining full compatibility with the existing programming ecosystem? Similar to how Unicode enables multiple languages on the web without breaking global communication. Do you think that could work?
Algol 68 offered that, for keywords at least. Variables, procedure names, and the contents of strings can't be localized quite the same way (though localization for content is easier now than it used to be if you don't embed the string text directly in the source).
If we switched from a text file based representation of code to a different structure, localization could be performed more easily for source code even down to comments and variables. However, this would help you to work on a project I started, taken too far it would not help us work together (we'd refer to the same variables and procedures with different names). We'd still need to select a common language when collaborating.
Other languages, today, at least work well with unicode source but they retain English-based keywords (Go, Rust, probably others but they like to tout it specifically).
But what if we had a system where people wrote code in their native script, and it automatically translated into a universal format when shared? Would that help keep things accessible while maintaining collaboration?
We could probably collaborate at a higher level (system architecture and design). I'm building a compiler, I can share the architecture with you and have you implement a particular optimization pass. But if I want to read your optimization pass code and discuss it with you then one of us has to learn the same code twice: once in our native language and once in whatever is decided to be the shared language.
Store the code in a database (or something akin to one) and use a structured editor and this mode is technically feasible. It would open up work for people who are not native in the original language, but you also need to ensure that code has a translation. So you're still going to need someone (or something) to do the localization as well.
OSS projects can't afford this, but commercial efforts might be able to. On the other hand, commercial projects can afford to be the $2/hour extra (companies are cheap bastards) to hire those English speakers in your country and ignore the non-English speakers.
Other option is for future languages to be formally specified in a globally adopted IL and then your local area geeks are responsible for writing a front-end that transpiles to that IL.
Or we could design and adopt a universal (~visual) glyph for programming. Various structural elements (think [ ], { }, < >, etc.) are pretty much that already. Then we have the (pseudo) mathematical elements (+, -, /, =) which are again universal. That leaves us with named elements which remain somewhat problematic.
In any event, all this seems to be a transitional period's grief. Very soon, you will interact in your native language with some AI and that thing will write the actual code. :)
Regardless (thinking of music notation here) programming notation is ultimately a specialized form of notation. Are you bothered by the fact that a musician in x-land has to learn the notation invented by some Europeans way back when?
But with AI handling more code generation, how important will it be for people to truly understand the underlying code? Do you think AI will make coding more of a black box, or will there always be value in knowing how things work under the hood?
Music is a great comparison—eastern music notation exists in native scripts, and western pieces can be translated into it. Could programming work the same way, where the structure remains universal, but the notation adapts to different languages?
When I was young I had a vision of future programming as people in front of screens moving colorful shapes and forms (not talking visual programming here) to make 'harmonious' forms. :) The general idea being that (imo) AI is a misnomer and there is something 'special' about human intelligence. So that vision, when I tried to interpret it later, seemed to map out to something along the lines of 'aesthetic choices' on a meta-level. That is the 'thinking' machine 'state' was represented as images to humans and they made aesthetic choices, with man and machine each doing what they excel at.
But back to present reality, there is little doubt that over reliance on these tools will cause skill atrophy and at some point there will be a knowledge and comprehension disconnect between the operator of the tool and the artifacts created by it. This is likely already true for many beginners who are cranking out software using LLMs, but the overall field hasn't yet experienced it since the experienced software engineers already know and understand the code being generated; they are just using it to amplify their output. But they (imo) gained that knowledge due to years of hands on practice.
> people in front of screens moving colorful shapes and forms
along those lines...
> (not talking visual programming here)
...even though you wrote that, I'd like you to check this out:
https://blockstud.io/tutorial/0
Even if basic materials exist in other languages, most advanced documentation, debugging tools, and libraries remain in English. Do you think that creates a significant disadvantage for non-English speakers?
I do agree with your last point - majority of documentation is indeed in English. I learned programming before Internet, with little access to books (they existed, but were hard to find), and mostly relied on translated help files. Growing up these days, I'd definitely be soaking up English to be able to navigate all the available information - feels like a fair trade-off! I do think it's convenient that there's a lingua franca, so to speak, in software dev - there's enough variation in programming languages that it's nice not to have to deal with additional fracturing along spoken language lines.
I guess if you're learning all of C/C++/Java/Python/etc... the "English" keyword meanings are a tiny/trivial part of what you need to learn anyway.
Also, using English means you only need ASCII, and a US keyboard layout which allows easy entry of the printable ASCII characters. For Japanese, Arabic, etc... you need need Unicode, input methods, UTF-8 / UTF-16 etc., all of a sudden there's a whole lot more to go wrong than if you use English in ASCII.
https://dl.acm.org/doi/10.1145/3173574.3174196
The paper you linked explores text-free programming through visual programming tools, which is one possible solution. But what do you think about making existing text-based languages, like Python or JavaScript, script-agnostic instead of moving entirely to visual coding?
Would love to hear your thoughts on whether a hybrid approach — where code can be written in any script but still remains text-based — could work.
> making existing text-based languages, like Python or JavaScript, script-agnostic
What might that look like? There's non-obvious challenges to merely translating the keywords into a foreign language (gender, declension, etc.)
If you're deeply interested in this topic, I'm happy to connect! (hn username at goog's mail service dot c o m).
Even coming from one of the most used languages in the world (and having a just enough english level), is very rare that I search of read something programming related in other language than english.
You mentioned that you rarely search for programming-related content in Spanish. Do you think that’s because English is simply better suited for programming, or is it more about the lack of high-quality programming resources in Spanish?
If programming had built-in support for multiple scripts while keeping a universal structure, do you think more people would use resources in their native language?
That said, if in the future that status quo changes, and chinese dominate the programming world...well, then I'll be reading in chinese (and I will have a hard time doing so)