I started learning BASIC when I was 3 or 4, way before I even understood English was a thing. If I could grasp what GOTO did, anyone can.
I started learning BASIC when I was 3 or 4, way before I even understood English was a thing. If I could grasp what GOTO did, anyone can.
As far as languages being useless, there's lots of other useless language a person could be learning. That doesn't discredit the raison d'être of these languages.
(Of course this doesn't apply to learners, I don't know about that.)
I think a lot in words and about words. When I'm writing a for loop I usually sound out the whole thing, even if just mentally, "for ecks equals one to ten do" or "for whye in the range". I don't think I'm the only one who does this, so offering pronounceable things to other people in their own language might help.
But as I'm doing these things, I'm often muttering to myself as well, and I may do it in Spanish or English.
But very early on I started writing identifiers and comments in English, and I think this is critical if you want your work to go anywhere. Say you write a piece of code and put it in Github, with Spanish identifiers and comments. You've just massively increased the barrier of entry to most collaborators in the world (have you ever come across code commented in Russian or Chinese? Not fun).
And this is just identifiers and comments, not keywords. I imagine using an entire programming language in anything but English can only make things worse :(
I think the value this will bring isn't very high. I personally believe that early programming has less to do with reading the code as natural language and more to do with understanding what the individual constructs achieve. This is purely anecdotal, but I taught programming to a few students in French and the presence of English never came up as a blocker.
Fun story : for the hell of it, I once tried to code an entire project with some friends in French exclusively (that is, mainly variable/method/class names etc). As much as I love my mother tongue, its not always very concise. The whole thing became super bloated. We ended up reverting back to English.
GOSUB, RETURN, FOR, DIM, PRINT, PEEK, POKE, etc. were just abstract words that we just accepted without fully understanding their English roots. They might as well have been CALLBACK, THROW, ITER, FOO, BAR, etc., and we would have used them just as well. We reasoned in Spanish, then coded our reasoning in the abstraction that was BASIC. When reading code, it was like reading math, not a story.
More so, with the meme culture nowadays, even kids know enough English words to understand the roots of many tokens in programming languages.
Maybe programming with tokens rooted in your native language actually provides something I wasn't able to enjoy, but programming for me feels very different from speaking English, I'd bet the two don't even use the same brain regions, unless you're forcing yourself to comment in English.
Let's see what comes out of Latino. Hopefully they'll add Unicode identifiers later, because writing "funcion" instead of "función" is still bad Spanish.
Most of your programs will not be keywords, i.e. symbols from the programming language, but the identifiers you define. Now you could use your native Spanish (or Russian or Hungarian, etc.) for those, but even that is not very useful. When you think about the program, you think with the constructs of the language (and also, as you get better, with the patterns you have learned). Then you express those thoughts with the language and the constructs you have created.
The only place I can imagine this making sense is a scratch-like block language. But I'd say that even then it just hinders learning and development. Sooner or later you'll have to switch and the later you do the harder it will be.
Also, this can be a great motivation to actually learn English. For me, at least, it was.
Many programming languages especially more terse, modern ones (I'm looking at you, Rust) -- the symbols don't mean anything in English either. Does "for" or "fn" or "impl" mean anything to average English speakers? This feels more like a bunch of extra symbols like "==" and "!" rather than the anglosphere enforcing its dominance.
There's plenty of room in the programming languages space for this one, to be sure -- I've nothing against it. It almost feels like ergonomics and writability are reduced in this language to make it more like Spanish than a modern functional programming language is like English. It almost goes out of its way to replace symbols with words. More like a Spanish AppleScript.
Feels more like it's making a point than solving a problem, but I'd love to get more perspective from Spanish speakers.
In math, if I see an unfamiliar symbol I immediately know I don’t know what it means. If it were English instead I’d automatically try to fill in a meaning. (Of course there is also a problem of overloaded symbols...)
Yes, they do. When I was learning Rust it was obvious that "fn" was function. "impl" is a little trickier, but I read it as "implements" or "implementation of". "dyn" is "dynamic implementation of" or something like that. And "for" is the same in all the other programming languages I know.
I learned programming when I was five or six, way before I knew any foreign language, but my experience is no excuse for gatekeeping. Making programming accessible to a wider audience is unequivocally good.
Realistically, what's far more important than the language of the keywords is the language of the rest of the identifiers. I've typed a lot more distinct function and variable names than keywords.
[0] Jogged my memory: https://news.ycombinator.com/item?id=26809211
Exactly. Or the doc.
Having a standard library with a localized doc would probably help out learners way more than localizing some keywords. As one gets further and further away from the standard library, the doc increasingly won't be localized but by then the reader should know enough "engineering English" to get by.
This whole thing needs to be condemned, we get it - its fun to do something about your local language and be proud of your culture - everyone is. You should be. But, trying to peddle this into mainstream is a monumentally catastrophic. I don't want the world to be fragmented - we need to get together and build better tools.
If anyone who has worked on Chinese datasheets, oh boy, you know the pain.
Think of English not in the context of cultural importance/language but more formally as a de facto standard. A professional would follow the standards. This is why we have IETF. It is unquestionable and indisputable that standardization improves the world.
That said, comments are probably fine in local language.
This is probably because many of them studied CS and spent comparatively more time with computers and less time consuming foreign language materials as students.
Then I see no issue translating from this to an "english" programming language, so there would be no extra layer of mental translation.
Windows error messages and the command line on Linux are particularly big offenders here.