Truly multi-lingual programming languages?

This is generally a horrible idea, as anyone who's worked in a localized IDE can attest to. Programmers rely heavily on having one common vocabulary. When the compiler gives me the error "missing type specifier - int assumed", I can share this exact error message with others, for example here on SO, and it will be familiar to those others so they can tell me what it means.

If the compiler instead generated error messages in Danish, I'd be limited to getting help from the relatively few programmers who speak Danish Suddenly my vocabulary is no longer the same as someone in the same position in Germany, France or Japan. We can no longer exchange code, bugs, bug fixes or ideas A developer in Spain wouldn't be able to use my code because it was literally written in another language. And if I had trouble with my code, others would be helpless to debug it, because it wouldn't even compile under their localization settings (and if it did, it'd still be unreadable to them) Ultimately, a programming language is a language It may have borrowed some words from English, but it is not English, and you do not need to understand English to program in it, any more than I need to understand latin in order to speak English (English borrows latin words as well) You might as well ask for a multi-lingual English What would be the point?

Yes, it would in theory allow people who didn't speak English to... speak English. It just wouldn't be the same English as every other English-speaker speaks, so it wouldn't actually enable communication between them The keyword if in a programming language is not the same as if in the English language. They mean different things, even though one was obviously inspired by the other The delegate keyword in C# does not mean the same thing as "delegate" in English.

Nor does while return or "constructor". They are not english words, they are keywords or concepts in C++, Java, C#, Python or any other programming language.

This is generally a horrible idea, as anyone who's worked in a localized IDE can attest to. Programmers rely heavily on having one common vocabulary. When the compiler gives me the error "missing type specifier - int assumed", I can share this exact error message with others, for example here on SO, and it will be familiar to those others so they can tell me what it means.

If the compiler instead generated error messages in Danish, I'd be limited to getting help from the relatively few programmers who speak Danish. Suddenly my vocabulary is no longer the same as someone in the same position in Germany, France or Japan. We can no longer exchange code, bugs, bug fixes or ideas.

A developer in Spain wouldn't be able to use my code because it was literally written in another language. And if I had trouble with my code, others would be helpless to debug it, because it wouldn't even compile under their localization settings (and if it did, it'd still be unreadable to them). Ultimately, a programming language is a URL1 may have borrowed some words from English, but it is not English, and you do not need to understand English to program in it, any more than I need to understand latin in order to speak English (English borrows latin words as well).

You might as well ask for a multi-lingual English. What would be the point? Yes, it would in theory allow people who didn't speak English to... speak English.

It just wouldn't be the same English as every other English-speaker speaks, so it wouldn't actually enable communication between them. The keyword if in a programming language is not the same as if in the English language. They mean different things, even though one was obviously inspired by the other.

The delegate keyword in C# does not mean the same thing as "delegate" in English. Nor does while, return or "constructor". They are not english words, they are keywords or concepts in C++, Java, C#, Python or any other programming language.

10 Exactly, when PHP says "Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM", we all know exactly what's gone wrong. – Chad Birch Mar 20 '09 at 20:40.

Sounds like a bad idea to me. If I'm writing a program, how am I to know that the variable name I'm typing is actually a keyword in Bulgarian or Korean as transliterated? Do I have to deal with thousands of keywords, or do I have problems combining two routines written by my Swedish and Egyptian colleagues?

Just realize that programming keywords are in English, just like music keywords are in Italian.

I see your point, but the keyword issue at least could be overcome by specifying the code language at compile time or in the code file itself. Libraries could also be dealt with by providing "localized" names for functions - i.e. The same function could have multiple names depending on the locale.

– Eric Petroelje Mar 20 '09 at 20:16 Which gives a new meaning to Hungarian notation, I suppose. It means I can't read any printed software in Hungarian. It means I can't get a program from a German and use simple tools.It complicates library implementation considerably.

– David Thornley Mar 23 '09 at 13:57.

This seems like a good place to start: Non-English-based programming languages. There's a few interesting ones on there, like Python translated to Chinese.

You can make use of the C/C++ preprocessor to redefine all the keywords - and some people have done this. I came across it when working as a trainer/mentor for a Norwegian company. Some bright spark had implemented aheader that translated all the C keywords into Norwegian and enforced its use.

The Norwegian staff, all of whom spoke excellent English (or I couldn't have earned my crust with them) all hated it and it died a death. I've also worked fairly extensively in the Netherlands, and most of the programmers there seem to program in English. The only people I've come across who are resistant to the English hegemony in programming languages are (needless to say) the French.

There is one area where a localized language may be useful and helpful and these are DLSs (Domain Specific Languages) that were designed to be used by non-programmers. Those languages can surely benefit from being localized since business users from non-English speaking countries often don't know English as well as programmers do. Such localized DSLs can prove advantageous to programmers as well if they deal with a lot of non-translatable terms.

One rather successful system I've encountered was used to calculate salaries for personnel in the Israeli military. It used a Hebrew-based syntax together with hundreds of terms that can only be properly expressed in Hebrew. In that particular case the standard logic keywords if, then, else, etc.Were translated to Hebrew and the entire code editor was right-to-left.

A very large body of business logic is maintained in this manner to this day and, IMHO, rightly so.

Don't try to code in the natural language, that's useless. Learn the "programming" language instead. For instance, the "switch" word didn't mean anything to me in English, but it was an instruction to decide over several choices.

Later ( when I learn english ) I thought.. this is funny, English do have a "switch" word too, just like C. ( doh! ) :) No matter how good or bad your English is, you can't say to java import java.util.

* into my CD-ROM; Because it is not a valid syntax.

The keywords in APL are all single symbols; unfortunately, most of these are not on your keyboard, so J came along and replaced most of them with ASCII representations (made up of more than one character in many cases).

Sorted! Sorted! Is bilingual.It can understand both english and german code.

To my knowledge, Sorted! Is the only programming language that can do this, in the world. Any useful ones?

That's a better question.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions