
Should (programming) languages be multi-lingual? - fogus
http://olabini.com/blog/2009/10/should-languages-be-multi-lingual/
======
astine
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.

~~~
tel
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.

~~~
quant18
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").

~~~
tel
Well, keyword substitution doesn't imply a change in syntax, though it's about
as asinine I have to believe.

------
jacquesm
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.

------
quant18
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.

[http://www.chinesepython.org/cgi_bin/cgb.cgi/english/english...](http://www.chinesepython.org/cgi_bin/cgb.cgi/english/english.html)

------
mbrubeck
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.

------
hxa7241
I can't help thinking this takes the wrong direction entirely. The real
solution is to make _human_ languages _mono_ -lingual!

~~~
jacquesm
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.

~~~
ilyak
It's interesting why the smaller the language is, the dialecty it gets.

For example, Russian has no dialects worth speaking about, but Basque has
four, for less than million native speakers.

~~~
barry-cotter
Ukrainian (waits for the hordes of Ukrainian nationalist to descend)

------
ilyak
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.

