Hacker News new | ask | show | jobs
by niccaluim 3755 days ago
I love this! I started working on a toy language as an exercise, and since I'm also trying to learn Icelandic, I thought, why not make my programming language Icelandic? Places like Iceland aside (they speak better English than we do), I've often wondered if the Anglocentrism of programming is a barrier to learning in other parts of the world. Maybe not the highest barrier, but an obstacle nonetheless.
4 comments

>I've often wondered if the Anglocentrism of programming is a barrier to learning in other parts of the world.

From personal experience: no. I was 7 or 8 when I started learning BASIC and I didn't speak a word of English at the time. FOR, IF, GOTO, etc. were just abstract words for me. Things of their own that resulted in specific behavior. I didn't really grasp the "real world" meaning behind them until I started learning English later.

I started BASIC at age 11, only a short time after being immersed in an English speaking culture so it was simultaneous. The BASIC words did mean something in English, but it was easy.

I thought it was absolutely terrific how the programming language was nearly grammatical, because English words didn't require inflecting. For instance PRINT is both the imperfective dictionary form of a verb, and an imperative. This means that programming can use English verbs in their dictionary form (easy to look up!) and yet these uses nicely read as imperatives: print this, update that, etc. The target nouns of an imperative have the same form as datives. The "foo" doesn't change between "here is variable foo" and "add 3 to foo".

I thought, man, English is working great for programming, this is so easy!

I never thought of that, but that's a really cool point. Then again I'm a native English speaker so I never really had to think about it.
Same here... started learning BASIC way before I learned English, and arguably at the same time I was learning my native language. Was never a problem, in fact it probably helped me learn English.
The Anglocentrism of programming is a boon, at least in open source. It means that collectively hackers worldwide have been able to enjoy the fruits of each others' labors because we all communicate and share patches in the same base tongue. Allowing Unicode in source code is a mistake. Additionally for non-English speakers who want to learn English, wanting to learn programming is a better way to learn English than a passive classroom since you're actively going to be reading and writing English to figure out solutions to your programming problems. These projects to make the entryway into programming more smooth (by using the native tongue) sound nice, but I worry that those sucked into programming through this method will end up forming their own cliques based on language and essentially cut themselves off from the rest of the programming community.
Why do you assume there is an innate pre-requisite to learn English to code? I challenge that assumption.

Do you not see the diversity/ingenuity of problem solving when you travel to different countries? What else are we missing in the Anglo world? Do you assume everyone should speak English when you travel to China, India or Peru?

Why can't open-source communities form in different languages? Many people speak more than 1 language and can share learnings across the communities, just like in the real-world.

Bottom line: the world is diverse, let's make coding reflect that.

Sorry I didn't reply to this right away. I don't believe I made the assumption that learning English is a prerequisite to coding, can you explain what made you think I made that assumption?

Of course I see the diversity of the rest of the world and want their ideas in the marketplace. But their ideas are so useless to me that they might as well not even exist if I can't read them or hear about them. So it is very important and good that if you care about your ideas getting exposure, and want to cultivate the exposure of more foreign ideas, those ideas need to be expressed in the most widely available language, which in the programming world happens to be English. I don't particularly care too much that it's English and not French or Cantonese, but I do care that it's something. Diversity of spoken language is not important in itself, diversity of the brains beneath the language (and to a possible extent how brains are shaped by different mother tongues) is.

(Semi off-topic, but I do agree with the late Lee Kuan Yew that China should make its official language English. ;))

Edit: I should also link to this as it's an argument along the same lines, and also includes a bit for why English in particular is useful over something else like e.g. German. http://www.catb.org/esr/faqs/hacker-howto.html#skills4 Second edit: and yeah, humans have been communicating despite language barriers since the tower of babel fell, but it's inefficient.

Yeah, it's definitely the case that having a common language enables collaboration. What I imagine is kids who don't speak English getting interested in programming and learning the basics in their mother tongue, then moving to English programming as they get more advanced. Basically my hypothesis is that it's easier to jump one hurdle at a time than it is to jump two at the same time.
I don't deny that the network effects of speaking the same language matter. They do. But if you're turned off to programming because it's too hard (b/c the language barrier), you may never care to put in the effort to get to the point of learning English for all of its relative benefits.

If you're interested, I brought up these considerations and tradeoffs in the talk I gave last year - https://youtu.be/MqjMZNwnYCY

Identifiers in some languages will not work well for programming, if those languages require declension for verbs, or casing for nouns. The resulting programs look like the broken grammar of a foreigner.

Yet, by the same token, (pun absolutely intended) introducing cases and declensions into a programming language is a bad idea.

Thanks! If you want to try Icelandic, all you need to do is create a map or two where the keys are the English names and the values are the corresponding Icelandic ones. Then call translate-fns and translate-forms on the maps. You can follow this example - https://git.io/v2FdH

Here's what programming in Malayalam looks like - https://twitter.com/prathyvsh/status/635733805567840256

I don't believe that we give enough credit to the hurdle that exists when you have to learn English to learn programming. One of my cousins grew up in a village in Tamil Nadu (Southern India) where even the English teacher didn't know English well... The high-school computing courses were just about using desktop office apps. Kids end up just memorizing which icons do what actions (as opposed to reading the self-explanatory tooltips, menus, and error dialogs). The obstacles to equity for someone like her occur on multiple dimensions. I imagine the distribution of difficulty for non-native speakers skews more towards her end than towards those with better access to learning English.

Many people don't realize this, but its an innovation by the Election Commission in India to have symbols for each political candidate competing in a constituency.

This ensured that a Political Party / Candidate name wouldn't face the localization hurdles in a constituency which has people speaking/knowing 3 to 4 different scripts and languages. Even during the election campaigning, politicians ask people to vote for a symbol, because it breaks the language/script barriers.

The hurdle often is not obvious for many people, because when they think "different languages", they assume its the same script.