Last week I was at the CSTA Computer Science & Information Technology conference in New York City. One of the great thing about events like this is the hallway conversations that just happen. When you get a lot of interesting people together the conversations are interesting by default. I had one such conversation with Dave Reed, computer science faculty at Creighton University and past Chief Reader of the Advanced Placement Computer Science exam. We started by talking about programming by people whose language is not English. The keywords they use are, for almost all languages, in English. Comments, variables, user written classes and methods though are in their own language. How confusing might that be? Dave has used a program written in German in some of his classes and asked students to explain what is going on from context. That’s an interesting exercise for sure. On the other hand why not translate the keywords?
Many years ago I heard Grace Hopper talk about an early compiler. As I recall they wrote this sample compiler and finished it before it was due. They thought about the fact that keywords are really just symbolic so why not make them in other languages. They wound up adding support for several languages into the compiler. Unfortunately the committee who reviewed the final project thought that was far to complicated to actually work and concluded the demo was faked. Ah, the early days on computers when people really didn’t understand what they could do. To this day compilers seem to only understand keywords in one language and that language is almost always English.
It is not just Americans or even other English as a first language speakers who are doing this. Niklaus Wirth who designed PASCAL among other languages was Swiss. No doubt he could have used any one of several other natural languages but he used English. Off hand I don’t know of programming languages that use non English keywords. If there are some, and there must right, they don’t appear to be common. Anyone know any?
I’m not sure why this is. Most modern computer design was done in English language countries but that should not be a limitation. The other thing I really don’t understand is why IDEs don’t support non-English keywords. I mean how hard could it be to add a parser that uses different (or additional) keywords? It’s been a long time since my graduate course in compiler design but as I recall parsing was only a small part of the whole process. Converting things to meta data should be a simple matter. Expensive perhaps but not critically so. Anyone know of IDEs that do this sort of thing? And why are people whose first languages not designing their own languages using non-English keywords? I can understand something about wanting widespread acceptance and that most experienced programmers know English keywords if not a real working knowledge of English. On the other hand having kids learn in their native language strikes me as potentially a good thing.
Just something to wonder about today.
heh, or maybe kids can also learn english very soon, and that will give much more advantages than using the language in their own language....
i know that here in Brazil, people tend to do LOT of things in portuguese, and on the university you learn english concepts in portuguese, i personally dislike it.... because many examples over the internet will be in english, and on earlier days you have 2 letters variables.... so guessing the meaning of those, we're a hard task before i learned english...
so i think that focusing it on english is a good thing, and i also think that everybody doing coding SHOULD known english very well....
because otherwise we would end having things like
dim Atenção as integer
just thinking of that is scary :P
This article poses an interesting question. One benefit of English is the lack of accent marks, umlauts, tildes, etc. Compilers would need to be restructured in a Unicode framework (which most are, by now, I'm sure), etc. If everyone's OK with English, then we should let sleeping dogs lie (sorry -- American English idiom for "leave things as they are"). We Americans, however, should strive to write comments that are clear and free of slang for our non-English collaborators.
I don't know anybody who's eager to write programms in Russian. We have a programming language with Russian keywords but really I don't even think to switch to it, it's kinda disgusting.
It's not actually English, it is American, if it was english it would be colour and not color.
Seriously, you are asking "why"?
English is a global language with upwards of 1.8 billion speaking it to some degree, far in excess of the second most popular language (Mandarin, and that is primarily spoken in just one country).
Back in 1965, while I was at the University of Pennsylvania, we received an Algol compiler for the IBM 7040 from Grenoble, France. All of the keywords and error messages were in French. My job was to modify the compiler so that they would be in English.
English has the advantage that it's spoken by many hundreds of millions of people. A language using non-English key words probably wouldn't have the demand needed to support it.
The only exception seems to be Chinese. It's spoken by even more people than English is, and the huge difference between English and Chinese would make learning English more of a barrier for Chinese learning to program.
I expect there will be Chinese programming languages (and they probably already exist).
I suppose the Whitespace programming language is (human) language independent.
I wonder if the English language lends itself to abbreviation better than other common languages?
English is the international language of business, people write programs primarily for business of some sort.
The only localized "programming language" I have used is... Excel. And having to remember (actually guess) the keywords in two or three different languages is a real pain. As someone said, this is one of the few things the world has agreed on (think of thousand of other "little" things like voltage, electrical plugs, time format, ...), let's keep it and treasure it :)
There's something to be said for keeping a standard, no matter if the compiling language is english or otherwise. Now if we could just do that with the code writing...
My guess would be, that English is a more direct language than others for example; in French there are numerous ways of saying one phrase whereas in English... there's only one.
Some of the first versions of VBA for MS Office was localized in Danish.
It was Awful, Horrible and Evil (tm) :
"If" = "Hvis"
"While" = "Sålænge"
"With" = "Med"
How readable do you think that was?
Any samples and source code was unreadable, any knowledge about BASIC keywords was useless and code had to be "ported" to other translations.
If you are too lazy too learn some basic English words you are probably to lazy to learn programming anyway.
There is a programming IDE that your write your code in hebrew its calld magic.
it caught in israel for a few years and it is now in very limited use.
its pretty interesting as you dont write it in a normal way you write it in a table with columns and rows