If you’re from a non English speaking country, do you first have to learn English if you want to get into programming?
Not sure about today but VBA (in the MS Office products) actually had translated keywords because Microsoft is batshit insane.
I hate using Excel for this reason. ALMOST all functions are translated, so you’re never sure what to look for. If you find a solution for a problem online? Doesn’t work, you’d have to rewrite it in your language. And you can’t even switch the language in settings, because it’s tied to the OS language (maybe you can in recent versions, haven’t bothered to check for a while).
This is why I never touch language setting in any OS. It’s guaranteed I’ll have some problem down the line because I can’t search the problem or understand the solution if error crops up someday, because the menus are different.
Error messages are a pain to search for when they are translated too.
This is why it’s good to have unique error codes in addition to messages. It also helps with error monitoring as you can aggregate errors by their error code rather than message (which can have variables in it, different languages, etc).
Error codes can be useful but I find that a lot of vendors using them rely on the code too much to classify errors as identical. Usually the variables do matter, e.g. which file couldn’t be opened or which action was attempted by whom that got a permission denied error.
Not sure about VBA, but Excel formulas are actually saved in English and translated on file load. It doesn’t translate strings though, so EVALUATE only works for users with the same language as the author.
Real world scenario happening to me:
Reinstall my win os to use French because a) back in the day you couldn’t just change language, b) scrips were VB written french (so si instead of if etc).
Hehe French programming. It’s probably like
essaye: faire_qqch() sauf OhMonDieuQuEstCeQuiSePasse: imprime("putain")
Removed by mod
Cucumber/Gherkin also has translated keywords (even Emoji… smh) but there it actually makes sense because you actually write it in natural language.
I am sceptical of natural language programming in general but I am also fairly certain that you would have to do a lot more than just translate the keywords to get something that looks natural in another language. Word order is different in many languages for one.
Even if pretty much all popular languages are based on English, you do not have to learn English first. There aren’t that many keywords to begin with and your variables, functions and comments can be any language you want to. The hard parts of learning a language, like grammar, conjugation, pronunciation etc. all aren’t needed.
That being said, English still is the agreed upon language and people probably won’t contribute much to projects in other languages and you can’t read most documentations.
Realistically you will always need to be able to read documentation for:
- Your language
- Your compiler
- Your platform
- The APIs you’re calling
All of this will be in English even if your project is in another human language. Yes there will be translation for some of it available but it will be partial, incomplete, dated, etc. you’ll be using English so much anyway and have people from other countries working on the code regardless that you’re adding a needless barrier using a different national language.
Look at the French government open source codee for instance. The overall website is in French but the actual repos are covered and mostly seem to be in English
I would say the largest loss for a non English speaker is not having the full context of the method and variable names, as well as the comments or API descriptions within the source code. My friends from Mexico all mention English is a requirement on basically any university offering computer science/engineering.
Edit: you can always use google translate, but that will inflate the time required.
Thanks to more and more languages supporting full unicode for symbols this will eventually be a thing of the past, fortunately: we can just switch to functions and variables being named only with one or more descriptive emojis.
Emojis as identifiers? That seems like an outdated solution. We really need gifs for that.
Not programming but the question reminded me of Aviation English. All pilots and air traffic controllers must learn how to speak “aviation english” in order to communicate. It’s essentially a few hundred English words and basic syntax all related to aviation. I’d say learning a programming language is kind of like learning Aviation English.
Setanta looks neat.
It does https://try-setanta.ie/
Ideally, you need at least some basic understanding to use the vast majority of languages. The problem isn’t even writing the code itself, you can definitely just memorize the keywords and some basic concepts and have at it. If you ask me, the real issue is the availability, amount and overall quality of documentation and learning material if you go about it that way.
I have a few coworkers who skipped the learning English part and learned most everything from other non native speakers and they tend to be crippled by often not really being able to make use of official documentation or keep up with new things, since the vast majority of content out there is in English. It also has the unfortunate side effect of pushing them to stick with whatever it is they learned way back when and not really looking for better ways of getting things done.
So basically, you can pull it off without knowing English but it’s going to be suboptimal and/or painful IMO.
Bash commands feel like fake English to me. I know they’re abbreviations, but that’s the closest I felt to simulating that feeling of a non-english speaker memorizing commands to do something.
I love that, great analogy! I don’t think I’d ever make that connection since I’m pretty sure they both sounded about equally alien back when I was introduced to them 😅
This needs to be higher up, it’s the most correct and complete answer.
No, they exist but they are rather rare.
Here is an example of a programming language that is completely in Russian: https://ru.m.wikipedia.org/wiki/Встроенный_язык_программирования_1С:Предприятие#Пример_программы
That said, English is the lingua franca of the field of computing. You aren’t forced to learn it, but without it, you’ll deny yourself access to the vast majority of material out there, be it books, articles, papers, documentation, specification, and so on.
I would say that while language constructs are typically English words, they don’t really require English comprehension to learn. That said, the vast majority of programming support, documentation and community are in English, and are not accessible without English comprehension.
Well said!
There’s also kumir. It was(is?) used to teach kids how to program. I first learned programming using it many years ago. I still think that it made me a better programmer than people who were using Pascal instead. They were both popular in schools at the time.
There’s always machine code, just writing numbers for the functions of the CPU. Or you have Esoteric programming languages like Brainfuck that doesn’t use any words at all, it’s just very simple instructions. There’s Piet, which is a pixel colour based programming language.
To be frank; no programming languages are based on English, they are all based on logic. They are most often expressed in English, but there’s really no reason one couldn’t have a translation layer for every programming language. But that would make it a lot harder to find the solution if you have some fairly niche problem. Having everything in one language is simply more efficient since it doesn’t fragment the questions and answers.
But a quick search gave me https://analyticsindiamag.com/6-popular-non-english-programming-languages/. The simple answer to your question thus is; No
All instruction sets are documented in English and it’s more esoteric so the tutorial scene in any non-English language is less developed, so that requires even more English skill than memorizing a couple of keywords in a mainstream language.
No. The Soviets had one that was basically C but a decade early called Адрес (address). The higher-ups were skeptical of the concept of computers, though, so computing in the USSR languished anyway.
I think the Chinese have something going too. Mostly educated global people know some English anyway, though.
there’s some really great mini documentaries on YouTube above the Soviet internet of the 1960s, which would have taken over as the central planning committee and managed the supply and demand automatically. When you look at what it was supposed to be, and why it failed (a lot of people worked very hard to make sure it wouldn’t succeed) it’s really interesting stuff.
here’s one I watched recently enough about it; [https://youtu.be/cLOD5f-q0as?si=D8mVJiK603HPdgKY](Asianometry - Why the Soviet Internet Failed)
Here is an alternative Piped link(s):
[https://piped.video/cLOD5f-q0as?si=D8mVJiK603HPdgKY]](https://piped.video/cLOD5f-q0as?si=D8mVJiK603HPdgKY])
Piped is a privacy-respecting open-source alternative frontend to YouTube.
I’m open-source; check me out at GitHub.
The higher-ups were skeptical of the concept of computers
It’s arguably dumber than that. The higher-ups treated R&D like any other centrally-planned ordeal, which meant a bunch of incredibly smart people in different countries were at each others’ throats for the privilege of trying to build a thing… rather than just building multiple things and picking the ones that worked.
When it was a 5-ton, room-filling affair - called the Small Electronic Calculating Machine, because all programmers are the exact same kind of dork - building exactly one kinda made sense. When the west had three competing 6502 minicomputers for like a hundred bucks each, it was just tight-fisted control for the sake of political grandstanding. The fuckin’ BBC rolled out a better centralized computing standard.
The root problem is having “a bicycle for the mind” in a country that restricts travel.
Mostly true, but Stalin also came right out with an essay that called it a fake capitalist concept, so that was part of it. I imagine Truman wouldn’t have gotten it either, but as you say in the US you don’t need everyone to agree something is a good idea to try it out.
The root problem is having “a bicycle for the mind” in a country that restricts travel.
This is the one I’m less sure about. They had censors but reading and learning approved content was also very encouraged, and in the early days it was a machine mostly just for number crunching. AFAIK computing languished roughly the same way as most basic research did, and Kateryna Yushchenko managed to invent something early anyway.
Honestly, no. I do know English, however the syntax is always very far removed from actual sentences and learning how to use the syntax is way different from how languages work.
That said, you’re kinda porked when it comes to reading through documentations, APIs, and watching tutorials, as most of them are in English.
I do have about 2 friends though who can code and are not particularly versed in English.
I worked in a company that outsourced code.
The only English speaker, English was his fifth language and he would still struggle. We had to write followup emails after every meeting so he can take time to decipher my exact request.
All the deliverables were in broken English. If catch things like “reqiured” that were easy fixes. Code logic was readable, but not great. I mean it worked though.
My first contact with computers in school was with a dialect (?) of LOGO that used commands based on Spanish. GD (giraderecha) instead of RT (right) or AV (avanza) instead of FD (forward).
Not that you mention it, it’s kind of strange that Java isn’t based on Javanese
Or Brazilian Portuguese since they are the largest exporter of coffee beans :)
There are Arabic based programming languages, which is pretty interesting because right to left.
Generally though you need to know some English to learn the more widely used ones.
Neat. That’s something I never even thought of. When typing in Arabic, does the cursor proceed from right to left, then?
Is this somehow handled with locales, are custom operating systems required, or is it really only handled by specific editors like word processors?
I’m trying to imagine how this would work at, say, a console bash prompt.
https://en.m.wikipedia.org/wiki/Right-to-left_mark
It’s just a Unicode character; Copy-Paste and experiment!
(If you’d like more direction on how to play with this in a *NIX terminal let me know.)
Terminal environments are always awful at RTL, they always need to make shitty compromises that graphical environments just don’t need to make. The fact that you even need a RTL mark is already a bad start - graphical text renderers can deduce text directionality based on the characters in it.
Try using a website in an RTL language some time. Facebook and Google both support Arabic and Hebrew for example. The entire site is flipped - a left sidebar would instead appear on the right, a logo might be at the top right instead of top left, etc. Getting it right is hard, especially with mixed RTL/LTR content (like if you have a Hebrew page with some English words on it).
Well, in ex-USSR there is 1C which in syntax is a bit like Pascal with Russian instead of English.
Also plenty of other languages using Russian keywords, but for the purpose of your question - I think it’s safe to assume that anything relevant uses English.
That’s “One S”, not “One C”, for anyone reading this unfamiliar with Cyrillic. What looks like a Latin C is actually a Cyrillic S.
Also, while we’re at it, leat’s clear up one more misunderstanding: Many think СССР is Cee Cee Cee Pee, but it’s not, it’s really SSSR.
Brainfuck certainly isn’t. Most assembly languages use opcodes that are sorta English abbreviations, like STA for Store value in the A register. I haven’t done much work in assembly but I think there are several standards which don’t strictly speaking use English keywords.
I do recall hearing of a language described as “You can write in it in any language” I guess meaning the various bits of syntax are done with special characters? I forget which it is.
You kind of learn some English along the way while programming. At the beginning, you just memorize the commands and most of them use rather basic words anyway. Everything you name (functions/variables) you could write in your native language. Also, autocompletion helps…