It seems to me like it would be an unnecessary layer of complexity, and it could make communication between international teams much more difficult. I can't imagine what I would do if I opened the source file from a team in Ireland and found that it was all in Gaelic. Perhaps it's inconvenient for them that they have to read it in English, but at least it's a single language, not several.
Now, one thing I can imagine working would this being supported in an IDE, or at a 'meta symbolic' (for lack of a better term) level.
For example, if we simply implemented a strict transliteration system, so that there was a one-to-one correspondence between a program written in English and the same one written in Chinese, then an editor could convert between them on the fly. This would be useful for switching between alphabets and making code easier to read for different people but doesn't necessarily carry meaning through. (The English word "while," spelled with Chinese characters is still the English word "while.")
Working with an IDE that maintains a one-to-one mapping internally between English keywords in a given language and their non-English equivalents, one could conceivably code in Russian and have the IDE internally translate it to English before passing the code to the compiler or interpreter, a sort of pre-compilation stage if you will. It could work in reverse as well, so that the canonical version is always in English (or whatever the native language of the programming language is) but coders in different nationalities see their own language.
With languages that use symbols, like Lisp, one could create a many-to-one mapping such that a single symbol has multiple printed representations depending on the (human) language in use. This would have to be enabled with a reader level switch. In Common Lisp, you could do something similar to this by creating a package for the language of your choice which maps symbols to their standard equivalents.
Non of these solutions are perfect however. For example, non handle languages designed to imitate English grammar such as SQL, for example. And they introduce complexity that may be unnecessary.
Edit: Changed India to Ireland; apparently Indians speak English.
This works for builtins maybe, but the majority of the words you use in a language tend to be either from libraries or your own functions, so multi-lingual languages would then put the burden of translation on to every single person to write code in that language.
So despite any potential advantages, it'd certainly never have good libraries.
And not just the libraries --- the documentation and the forums filled with people asking questions. But maybe Chinese will have the critical mass to overcome this problem. Not good enough for corporate usage, but maybe sufficient for teenagers who care about computers and not talking to foreigners, so want to start out hacking without having to learn English at the same time.
(Also I guess it's just sheer dumb luck that Chinese word order and English order are roughly similar enough that something like ZhPy or astine's IDE idea above is basically just an exercise in keyword substitution. Doing that kind of translation in head-final languages like Tamil or Japanese would just result in even more mind-bending than leaving it in English --- e.g. in those languages the equivalent of "from/to" refers to the preceding word, not the following one, e.g. "morning from night to").
Perhaps it's inconvenient for them that they have to read it in English
You know that English is the official language of India? Government and commerce use it as a neutral language between the dozens of languages and dialects that are used in the different regions of India. Now if only the EU would get its act together...
Yep - the Indian outsourcing types I've dealt with speak to each other in very fast, heavily-accented English and to non-Indians in slow, slightly-accented English.
Edit: Changed India to Ireland; apparently Indians speak English.
So do Irish. Well under 5% of Irish people have any real level of fluency in "Gaelic". I got a well above average grade and I discovered yesterday that I'd forgotten the words for ear, eye and egg (linguistic noodling). Everybody in Ireland speaks English.
This is something that has been a long time coming.
It all started with ASCII and EBCDIC being the dominant data storage standards, if your characters were not a subset of, or representable in those sets then you were plain out of luck.
Microsoft deserves a good bit of credit here, they worked hard to get their software translated in many languages.
Unicode/Utf8 support in most internet standards now gives parity to the rest of the world on that front, it is only logical that programming languages will follow.
I've seen a listing of a basic program that was written - for fun - with dutch keywords, and one thing that I noticed was that I completely think in English when programming, all my identifiers are in English etc. Also, all the documentation (of my code and most other stuff out there) is in English and so is most of the published research.
It will be a long time still before there is equal representation on that front and we will be facing yet another hurdle in comprehending other peoples code.
Maybe that standardization of programming languages on English is not such a bad thing, even if it isn't 'fair' in the strict sense of the word (because it gives an advantage to all those who have English as their native language), but it does create a very large middle ground.
Think of English as the new Latin, it allows you to communicate with the people active in your field the world over.
There's already at least two Chinese Python-based languages --- Zhongmeng and ZhPy. I played around with the former a bit after working with a guy who was relentlessly evangelising for it.
Obviously since I both speak enough English and am not a native speaker of Chinese, I'm not the target audience, so I can't really comment on whether it's necessary or not. One thing that was nice was identifiers taking up much less horizontal space.
This could actually make programming harder for developers with less-common languages. They'd have to mentally switch between local code and documentation in their native language, and code/docs from elsewhere in English or other languages.
Using English as a lingua franca for software isn't very fair, but it does allow programmers who learn it to communicate with a global community.
I live in a country that is 20,000 square kilometers, next to nothing. Within that 100x200 Km rectangle there are 4 languages, 'regular dutch', 'Gronings', 'Frysian' and 'Limburgs', each of those differ from each other so strongly that you'd have to live in a place for a long time to get the hang of it, they're that different.
I really don't see how that is even a remotely attainable goal. You can't force people not to speak a language (and besides that, even if you could you probably shouldn't).
If we're going to converge on a single language then it will probably be a Chinese/Spanish/English hybrid of some sort, and it will take a very long time (tens of thousands of years ?) before it will happen. And landmasses being separate from each other there will still be plenty of pockets where 'old' languages will linger long after the majority of the world will speak a single language, asymptotically approaching unity.
You can certainly try. Lots of governments have tried, at one time or another, to suppress minority languages.
But as it happens you don't need to stop people from speaking Frysian. You just need to convince them to learn more than one language, which people do fairly easily, as you obviously know very well. [1]
Preserving existing languages, while conducting national or international business in a lingua franca, is one thing. Trying to move your internationally-connected business from a lingua franca to a mutually-unintelligible language that you have just created (and which, therefore, isn't being routinely learned at age 2 by kids with native-speaking parents and grandparents) is going to be much more difficult. You are fighting Metcalfe's Law all the way, and now that Google and Stack Overflow have been invented Metcalfe's Law is more powerful than ever. Frankly, if the French or German versions of Python didn't evolve pre-Web, pre cell-phone, pre-Skype, it's hard to imagine them evolving now. [2] I fear they will have to be constructed under laboratory conditions and maintained on life support.
---
[1] By "people" I of course mean "people who weren't educated in Central Ohio, USA".
[2] Mandarin Chinese is a more interesting case, though. It could be that poor Chinese-character support in computer hardware and software -- and the fact that the Chinese economic powerhouse was just that much smaller -- was what prevented a Chinese-native programming language from evolving before now. (It can't be from a lack of speakers!)
I must concede there are indeed implementation difficulties in my revolutionary plan.
Chinese(Mandarin?)/Spanish/English seems reasonable; I suppose it could be introduced over several decades. But aren't there serious formal deficiencies with Chinese systems? That would need a major redesign effort . . .
English is the de facto lingua franca for the simple reason that I can say something like that and be perfectly understandable to any English speaker (and without a college of cardinals breathing down my neck about the purity of the sacred language).
No, actually. Well, not directly anyhow. English became the lingua franca post-WW2, mainly because of the powerful position of the English speaking countries militarily and economically after the war.
Most languages support multilingual identifiers those days, but I don't see anyone using them. I've wrote a haskell program with greek symbols as variables once, it was fun and neat.
There's a language 1C which is fully in russian - identifiers, functions, docs :)
It's used widely to script the same-name business platform.
Now, one thing I can imagine working would this being supported in an IDE, or at a 'meta symbolic' (for lack of a better term) level.
For example, if we simply implemented a strict transliteration system, so that there was a one-to-one correspondence between a program written in English and the same one written in Chinese, then an editor could convert between them on the fly. This would be useful for switching between alphabets and making code easier to read for different people but doesn't necessarily carry meaning through. (The English word "while," spelled with Chinese characters is still the English word "while.")
Working with an IDE that maintains a one-to-one mapping internally between English keywords in a given language and their non-English equivalents, one could conceivably code in Russian and have the IDE internally translate it to English before passing the code to the compiler or interpreter, a sort of pre-compilation stage if you will. It could work in reverse as well, so that the canonical version is always in English (or whatever the native language of the programming language is) but coders in different nationalities see their own language.
With languages that use symbols, like Lisp, one could create a many-to-one mapping such that a single symbol has multiple printed representations depending on the (human) language in use. This would have to be enabled with a reader level switch. In Common Lisp, you could do something similar to this by creating a package for the language of your choice which maps symbols to their standard equivalents.
Non of these solutions are perfect however. For example, non handle languages designed to imitate English grammar such as SQL, for example. And they introduce complexity that may be unnecessary.
Edit: Changed India to Ireland; apparently Indians speak English.