Show HN: Programming in non-English languages
thesage21.github.io
thesage21.github.io
I still have to come to servers installed in German or French and guess by memory where stuff are.
Let me guess, you're french?
Online communities (including StackOverflow and Hacker News) do much the same thing by putting rules in place about how people talk with each other. When people break those rules, we get upset, because we see those breaking the rules as 'outsiders' and a threat to the community.
I believe that language can have much the same effect. When English comes in, it often results in people forgetting local mythology, songs, rituals, etc, as a result of forces like Hollywood and Simon Cowell. The community withers and is replaced by the great 'meh'.
And let's face it, the vocabulary of programming languages is tiny.
if(something){loop = while} else {loop=if} loop{print("hi")}
and it's not immediately obvious why that isn't valid in text, while in scratch it is.
I don't think its the language though that makes things easier.
The only reason that wouldn't work is bad language design. In e.g. Smalltalk or TCL it's fine.
I don't think it means what you think it means.
I just memorized things. And they'll learn a little bit of English
They don't need to know what 'if' means, they just need to learn "you use if to do this"
(Now, to be fair the docs were in my native language, that helped a lot)
Similarly, some people don't know English. Maybe they're curious about programming. Should they have to learn a whole new language first? Or be distracted by the fact that the foreign programming language they have to write is also written in a foreign natural language?
I'm not sure I even agree with your premise. It's a bit premature to worry about having to interact with code written by people that are just learning programming, isn't it? Like anything, when you empower people to learn things like this you have to trust them to have the decency to write programs in English in settings where there might be other people who don't speak their language that have to deal with their programs. Or trust that they wouldn't be hired for such jobs in the first place.
> I'm not native English speaker,
And? Does that give your argument more weight?
If somebody isn't willing to put in the tiny bit of effort to learn the tiny bit of english required for programming, they're not willing to put in the huge amount of effort that is required to learn programming anyways.
We have enough horribly documented code that needs maintenance, there is no need to add horrible documentation in hundreds of languages.
No, because he already knows English.
The proclamation "We should tax the rich less" is a self-serving sentence whether it comes from someone who was born into wealth, or it comes from someone who became rich later in life.
> If somebody isn't willing to put in the tiny bit of effort to learn the tiny bit of english required for programming, they're not willing to put in the huge amount of effort that is required to learn programming anyways.
I think you're coming from the viewpoint of "what would I do to learn programming if I had started from scratch today". But like I've argued, this is not a good view of the process of learning to program! It's more like you are vaguely interested in some discipline or skill, or might need it for something, and so you want to dip your toes in it. You have no idea whether you will like it or not, or how far you will take it. To put up all these demands -- what they should learn and focus in order to in time become your ideal programming colleague -- is just too much to demand of someone who is just exploring a new world to them and don't know where it will take them, if anywhere. How about they learn to actually put things like for-loops, if-statements and such together, before you demand that they should embody all the skills to write great documentation, use best practices, and whatever else?
Just think of all the different things that are "bad practices" that even experienced developers can manage to do with a clear conscience. You can't pick one aspect and demand that a green programmer should have the personality and disposition to know beforehand that such things are "bad practices". People can learn and change.
But why even bother. These topics just devolve into downvote/upvote battles.
And he didn't have to learn it at some point?
My english was pretty much nonexistent until I picked up programming.
Like I said below, nobody is arguing against beginner languages/tools like scratch and logo that could essentially be programmed in emoji, for what it's worth.
But people are arguing against "real" programming languages being translated, because that's a waste of everyones time.
No. That's the difference between this and the guitar: you can't buy a few bits of guitar. But you can learn words like 'print', 'var' or 'for'.
I'd steer this more into the land of 'manhours spent localizing are manhours wasted' rahter than
> to worry about having to interact with code written by people that are just learning programming
"Real" programming languages aren't suited for beginners because error messages are usually to cryptic and should contain hints how to solve the problem.
I'm likely to have to live with results of this. I already do to some extent.
People argue that newcomers need to learn 'two things at a time', English and programming. I think that's absurd. No programming language (cue the COBOL people complaining?) is remotely similar to English, the language. Keywords are limited and it's a very foreign way to talk to a machine. Not a language in which you're going to ask where the next loo is.
You might recognize some of the things you had to type to make your name show up in an endless stream on the screen as words when you learn English as a foreign language. Fun moment. But until then, this is really just painting buttons in green instead of red.
I think the idea of that project is neat, interesting. But I don't believe that this is a good way to do things and I cannot imagine that I'd use something similar when my kids are old enough to start exploring this field.
At school in France they introduced algorithms with a form of french pseudo-C which was very frustrating, because it felt stilted and unnatural.
Expressing the same algorithms in natural french would already be a much better exercise, because you don't have to force yourself through a fake translated language. Ultimately I think this would be a much better first approach to programming, (with more focus on design than implementation).
In the end if you really have to implement code, you will have to learn the english version anyway if you want access to documentation and outside help.
---
Seriously though, I'm a bit surprised that people are so dismissive here of the need for having programming languages that use function/method/statement names that aren't in English.
Learning a foreign language and a programming language is something that's pretty incredible as far as I'm concerned. I'm pretty lucky that English is my first language and that function, method and statement names are pretty descriptive given they are almost always written in my native language. If I had to spend a lot of time trying to memorise another language whilst also learning a programing language, I highly doubt I would have been able to do even 20% of what I can do today.
I mean, nobody speaks any language remotely like assembly - higher level languages exist because they're easier to understand and use, at least in part because they use a lot of English word to describe what's going on. I can't see any problem with more work being done on making more tools (transpilers perhaps?) for people who speak languages other than English. Heck, we've done some pretty awesome things transpiling to/from JavaScript lately, why not start transpiling from a variant of JavaScript that uses Arabic or Mandarin to the English variant of JavaScript?
Said that, I think trying to localize programming just isn't going to work. If you want to program, you'd better get along with the English language.
The languages are just dictionnaries: You should store them in an human-readable language instead of pickle. So it's easier for people to correct errors (json, yaml,..). For example, `FR_example.py` have "else" instead of "sinon" but to correct it I would have to open the pickle file and modify it in my terminal.
There is also for example ConTeXt (http://wiki.contextgarden.net) - a typesetting language similar to LaTeX, which supports commands in English, Dutch and German.
I was actually really fascinated by the idea of a Chinese C++ in all Chinese: http://baike.baidu.com/view/1718420.htm
I've had thoughts about solving this problem previously but never acted on it. My thoughts on this however were along the lines of providing the ability to re-define the keywords and builtins as part of the interpreter itself in such a way that even the prompt could accept non-english input.
Thinking about this is natural when one is Indian[1] and ends up working with some really talented people who have weak English skills simply because their primary education was conducted entirely in a non-English medium.
A lot of words used to express programming ideas are difficult for non-native English speakers to remember even if the ideas themselves are not (think abstraction, encapsulation, introspection, reentrant, idempotent ...etc) and the effort required to remember and use them correctly when communicating with other devs is higher (IMHO) for non-native English developers. Of course this is non an India specific issue, and of course English is the lingua franca of technology but that shouldn't be the barrier to entry for learning programming.
kudos on the effort once again !
[1] one country, and a multitude (22 according to http://en.wikipedia.org/wiki/List_of_languages_by_number_of_... ) of 'official languages'
Having learned some japanese, I could see myself learning programming just the same so long as stack overflow and the various docs websites were English.
On a side note: is there any idiom-agnostic programming language? I only know that APL is.
On a related note, "idiom" in English does not mean the same as "idioma" in Portuguese ;-)
But cool project - may be I can adapt it to another thing. :)