The Ugly American Programmer

I’ve seen only 3 comments so far mention Unicode so I think it’s a point worth saying - and repeating.

The reason English is the lingua-franca of programming is that most programming tools/languages in the past (and even present) simply didn’t (don’t) support Unicode. Heck, Unicode didn’t even exist initially. So all those languages with their special characters simply couldn’t be used, all you had was ASCII - and therefore English.

But there’s nothing magical about English that makes it a better programming language in general. The lack of proper documentation is not a reason, it’s an excuse - and a lousy one at that.

Yes, using a single language makes it easier to search for solutions, assuming they are even available to be searched. However the negative side of using English is that for non-English speakers it provides an additional overhead for sitting down and writing their ideas. It can also promote bad coding practices since for example you are much less likely to use meaningful variable names in a language you don’t know well.

Unicode is slowly making inroads into programming languages and tools. What is stopping wide-spread adoption of non-English language programming in non-English countries is:

  1. The prevalence of native-English programmers/businesses and the need to work with them, especially in this age of the global village.
  2. Still patchy support of Unicode on older Linux systems still in wide use, e.g. RHEL4.
  3. The large head-start English has as a programming language. People have already invented and popularized many programming terms in English. All of these will have to be re-invented for each language and over-come the inertia of people used to the equivalent English term.

Personally, I think English has enough of a head-start over other languages to make it very hard to unseat it as the preferred programming language even for non-native English speakers. But don’t be fooled into thinking this makes English somehow better or special. It was just lucky to be first…

Off the topic of English, but on the topic of The Ugly American

The term is usually misused.

The PHYSICALLY ugly protagonist of the 1958 book The Ugly American

http://www.amazon.com/s/qid=1238506216/ref=sr_oe_1_see_all?ie=UTF8relSet=0393318672

was a kind and helpful person, maybe even a prototype for what JFK would propose for the Peace Corp. Some other characters were wealthy, snobby, BEHAVIORALLY ugly Americans.

With all the different cultures I have worked with, Japanese are a little different. They insist in Japanese and documentation and generally find it frustrating to read English documentation.

And this is one of the discussions where everyone can form an opinion and looks like everyone has :slight_smile:

I’m from Argentina, I learned english reading books. I lived a couple of years in NC, USA. I’m really good at english and I can tell you I had the oportunity of work with Indians, Frenchs and Italians and english was our universal lang, man…just like GMT. IT IS ENGLISH because today english is universal. Could be chinese, but no, it is english. In my company 95% of guys who work on IT speaks fluent english and it is not a requirement to be hired.

What i really hate is when you buy a manual in native language (e.g. Dutch) and try to find your way around an English VS2008. You better understand the concept because of the native language but cannot find the buttons to apply the concept because they are English and the translations are crappy.

I’d also agree that English is the majority language of software development, but that doesn’t mean all software knowledge is uniformly in English.

Perhaps an appropriate question then for native english speakers is, what second language would provide the most added value for you as a developer?

I tried to go with c# when it was a brand new language, but at the time typing c# into search engine would give you nothing, and it would often break the search (I think it would delete everything after the #).

To find out that this has changed is great. I suppose it was just a case of being a little bit on the bleeding edge. We definitely bled a little for going with it too soon.

I am a Portuguese/Brazilian and I mostly agree with you on this issue.
For me, it all depends on whether you want to belong to a community or not. If you want to belong to the international community of developers then it is straightforward and simple: learn English well. This is also the rule if you want to belong to the international community of science and/or businesses. English is the new Latin, the common language of the world, what Esperanto wanted to be.
If you want to communicate in a different language then you should join a different community. There are many programming communities in Spanish and Portuguese. You can join them. But the fact is that there is much more gold and knowledge exchange in the English communities.

Disclaimer: I am an American, feel free to hold that against me.

I would agree with this article. While English may not be the most beautiful language to speak (understatement), it is very well suited to conveying technical ideas. Another strong point for using it is that I believe it is the most widely understood language. I say I believe because I have no evidence to back this up… that and the fact that there is a LOT of people living in both China and India. Another reason programming languages tend to have many English words in them is the fact that the English language has lots of short words that convey concise ideas; examples would be: for, and, or, etc. This is not to say that other languages don’t have them, though it does pretty much rule out German… sorry guys.

As several other people mentioned, it is good to point out that we are not programming in English, but instead in a programming language that just happens to borrow words from American English language (much to any British programmer’s chagrin, I know how frustrating having to change one or two letters on a word you tend to write without thinking about must be). However, after carefully rereading the article I do not think the author was actually referring to programming with any particular language, but instead to writing the documentation and sharing with one another in English.

Not totally related to this article, but along the lines with some other posts: I personally think applying the term English to American English should not be done. I think we should rename American English to something else, similar to the way the Chinese have mostly unrelated names for their dialects (though my understanding is that Chinese dialects differ from the way Americans define dialects). This should make the British semi-pleased as we will no longer be butchering their language and still calling it English and I think it would make things less confusing for many people new to English. I still remember how confused some of my classmates were back in Kindergarten through first grade about how color and colour were both part of the English language. Obviously this will never happen though because people are too resistant to changes, even if they really don’t affect them. If it does happen though, maybe we can finally switch over to the Metric system, that would simplify things.

Apparently you’re not going to be much use at operating a GhostNet unless you know Mandarin and Tibetan.

Was daran wirklich bescheiden ist, ist das Programmierer normal etwas faul sind.

Gerade bei englisch gibt es recht viele Programme, welche Programmdokumentationen und Methodennamendokumentationen automatisch erstellen (z.B. GhostDoc).

Wer dann einen Kommentar liest, glaubt meist einfach: Das ist in dem normalen schlechten Englisch geschreiben wie veile andere Dokumentation. In Wahrheit sind viele Kommentare nur einfach lausig durchdacht oder automatisch erzeugt.

Schreibt man hingegen die Kommentare in seiner Muttersprache, so merkt man schnell das man erst einmal nachdenken muss, was man da macht. Ein invokeXYZ wird eben nicht zu
///summary
///Invoke XYZ
////summary
sondern man schreibt tatsächlich mal auf, was das ganze machen soll und erhöht mit muttersprachlichen Kommentaren die Kommentarqualität beträchtlich.

I worked for some years in The Netherlands, and while everyone I worked with spoke fluent English, they still wrote their program comments in Dutch, and gave all their program variables Dutch names.

Here in Arizona, we are required to translate all of our code comments into Spanish so that the code is bilingual. It’s all part of our standards process. And braille as well.

It quadruples the development time and our company is bankrupt, but we are culturally sensitive.

I guess what I don’t understand is why this is even an issue at all, is there some movement to program in something other than English that I just never heard about?

I remember a while ago, somebody mailed me a sheet of bright red stickers that just said ENGLISH, PLEASE! I think with the idea that you would stick these over the translated parts of bills or letters in an effort to shame non-English speakers into getting with the program.

But everything was already there in English anyway. And then it’s in some other language, too. So who cares?

This is a bullshit article.

First of all, the ones who say they prefer to code in english but dont actually speak it natively, could barely have a conversation about a technical subject where I work in English. Its a fallacy.

I work with alot of foreigners who supposedly speak english (but wont even say hi in the hallway) and cannot hold a technical discussion at all.

Ive been to enough meetings full of the functional equivalent of downer cows who sit in the meeting room silent for an hour to know that non-english speaking programmers are useless in an english speaking environment.

And in other cultures where they are speaking english they are communicating it in a dialect that is heavily burdened by their native tongue and makes no technical sense in english.

This is a bigoted discussion. Languages would be more effective to observe the internationalization that applications are supposed to.

If they did, technical information would be able to be exchanged more effectively between all parties.

Wankers.

Try programming in Klingon. No wimpy messages there. Don’t even ask how uncaught exceptions are handled… (shudder).

What english speaking programmers are really worried about is that someone will obfuscate code from THEM by using other native based languages to code concepts that english based languages have not even discovered.

It will happen.

In response to the Unicode issue, some languages are better about Unicode than others. Java is 15 years old now and has always used UTF-16 for its char primitives, which propagates to String and other character handling classes.

The problem is partly with programmers assuming that all text is ASCII text.

It’s not always the programmers. Despite using UTF-16 internally, Java has some funny defaults for reading/writing characters from/to files. For example, FileReader and FileWriter are convenience classes to read/write characters from/to a file using the system’s default character set.

What’s the default character set? According to java.nio.charset.Charset.defaultEncoding(), it’s windows-1252 on Windows XP, an 8-bit character set based on iso8859-1. You’d think FileReader and FileWriter would use a sane default, like UTF-8 or UTF-16.

If you want to read files in a different encoding, you have to construct a InputStreamReader from a FileInputStream instead.

.NET handles this more sanely. StreamReader and StreamWriter default to UTF-8 rather than to any system default. These objects can be constructed manually or returned via File.OpenText, File.CreateText, or File.AppendText.

@Jacob It isn’t the spelling that makes us cringe (I’m Australian), it is the errors.

This IS a case of the pot calling the kettle black, because I make a lot of errors.

You can color or colour your words as much as you want. You can come up with unique words like Capilarity (we use the term Capliary Action) and none of that will phase us. You can throw as many z as you want in your words - and we still won’t give a rats.

No - the cringe factor is the mangling of grammar and misuse of words.

I’ll just use one example: Adverbs almost always have an ly after them unless you are in America where that suffix appears to be optional - preferably excluded.

This program has bad points. Here Bad is a noun.
This program is running badly. Here Bad is an adverb.
This program is running bad. Umm??? What’s bad? a noun or an adverb? Since there isn’t a ly then it must be a noun - so is bad some type of hardware or protocol???

This program is running slow. should be slowly, unless slow is a thing.

But the most common one that Americans get wrong is real vs really.

I need a drink real bad should be I need a drink really bad. Real is either a noun (as in Real Number) or an adjective (as in the real reason we cringe). It is never an adjective - unless you are in America.

Again - this IS a case of the pot calling the kettle black, because I personally make a lot of errors. I’m just trying to point out what we cringe about.

In the second last sentence I meant It is never an Adverb - unless you are in America.