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.
Windev is in French :)
I think that it has huge benefits.. Sharing code and comments this way is much easier when you work in a multi-language context.. So, we have English as a base language for programming, including comments / variables, etc..
If English programming languages bother you that much, then write one of your own, say in Swahili. See how well it catches on ;)
As if it's not bad enough having Visual Studio localize the error messages so they're just about useless in an internet search. Having the keywords localized too will make it all but impossible to find similar cases concepts and examples. So thanks but no thanks.
Its 'English US' actually otherwise we'd use control.backcolour and not control.backcolor in vb.net....lol
Another old time langauge that seemd truly language independent was RPG II. Setting single position switches across a monitor screen where each position meant a different thing drove a lot of developers mad as setting the column next door would produce very different behavior.
In a global economy market that computer development has become, a common language seems to make the most sense.
I had Access 97 in a Dutch version. Some of the keywords (like Forms!) of the VBA that the wizards created where localized (Formulieren!) as a result the VBA didn't work in anything other than Dutch versions. The other way round it works ok.
Let's face it: the de facto language in computer science is English. If you want to do something in programming you have to be litterate in English, so it's useless to give someone the impression that you can learn to program without a basic understanding of English.
And I agree with the comment that it's a pain in a certain place that the error messages are localized. The end user won't understand the localized version of the error, so please give an English one!
Its because the english speaking people should be able to understand it well...mostly the americans and british programmers...
The APL example given was a good one. LISP doesn't have keywords as such, but the basic functions have a tenuous claim on English (car, cdr, cons, cond, defun, ...).
Have never myself been faced with a computer language that actually had, say, French or Russian keywords - and I've been faced with many.
One of the difficulties in allowing the keyword to be switched on the fly to a different language is that keywords have to be 'reserved' such that they cannot be used as identifiers. Switching languages on the fly would cause a different set of reserved words to come into play and has the very strong potential to introduce conflicts. The same phenomenon is easily observed when new keywords are introduced into languages, such as when the assert keyword was introduced into Java - lots of code had to be fixed before it could be compiled with the newer version of java.
There's a tradution of VBA for Protuguese. I think there are for other languages, too.
Bjorn is right, as anyone who has ever dreamed in Pascal knows!
Back in 80's , we had a pure french programming language called : LSE (a kind of Basic in french) . Then LOGO language existed first in French then translated to english.
Later in 90's we had a very good L4G for windows called WINDEV where all the syntax was in French. (now in Windev it is possible to choose your language for the keywords : French, English or German. ).
In 90's i made some project using Windev despite the fact i'm french , it was actually extremely hard to program in "French" , at this time it was not possible to have keyword in English with Windev and i really regret that. It was very painfull to "think" in french. Just because my brain was not train to do that , i think.
In early 1970th there was a version of COBOL in the former USSR with all russian keywords. And it was terrible!
Excel formulas are localized. A terrible idea, if you ask me. And English is not mu mother tongue.