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.
It's probably that way, so there isn't confusion when a project is being worked on in multiple languages. Let's say I always compile in German, but when a coworker compiles in English (English being the language his user session is set to), all of a sudden the German keywords don't make sense to the complier.
Interesting thoughts. Thanks for sharing them!
I came across this article on Wikipedia a while back, and thought you'd be interested. It addresses some of your factual questions (e.g., non-English-based PLs DO exist), but leaves the pedagogical questions wide open. en.wikipedia.org/.../Non-English-based_programming_languages
really interesting, but i guess we are comforatble, programming in English
I am a German programmer and I often use English comments and English variable names because they are shorten and more expressive than German ones.
It is the only small thing we agreed on. Let's not touch it.
You're making the assumption that having the keywords in your own language is a benefit. It isn't. It's just the English-natives that hasn't understood that. Having english keywords keep the programming abstracted from normal language for us, for you natives it must be a constant mixup for your minds to deal with. ,-)
So, thanks, but no thanks... We do NOT want local language keywords for programming. Anyone who has made their own programming language at university and tried local keywords will agree with me on how confusing it is to read the code.
In the old age of non micro-computing, there have been an ALGOL compiler for IBM 1130 in french (as far as I rememeber, but maye it was only the operating system keywords that were in french).
And, at the very beginning of micro computers (around 1980), there was a french (maybe canadian origin) implementation of Basic called "BASICOIS" (from "Quebcois", the french language spoken in Quebec), were the keywords were in french. No future...
And I think this is understandable.
Seria horrivel ter que programar em portugues... muito melhor programar em ingles... Abraço !
The reason may be quite simple: Whether we like it or not, English is the new Latin!
My first PC was a BBC Micro.
The BASIC language was part of the operating system and was not a program loaded from a disc.
I had the English version, but there was later also an American version.
The basic command colour was spelt COLOUR with the UK version but COLOR with the US version.
I haven't found any web browsers that support the HTML code <FONT COLOUR=#7F00FF>
As has been stated, a compliler CAN be written that uses multiple 'aliases' or alternate keywords for the same end result. So, if the perceived 'problem' is that source code written in say, German, can't be read by an English only speaker, then why can't the IDE be set to switch keywords between languages?
Non-language specific code, such as classes, functions, table names, etc are often written in non-English form.
As an English only speaker, I am truly interested in what others have to say.
Have you ever tried using Ruby on Rails with a different language? It falls apart as soon as you want to use Dutch names, and that's a language which is 30% English loanwords (based on common usage - there are more French words in the dictionary, but the English words are used more often thanks to the technology industry).
Windev is by default in French, but it comes with english subsystem that allows you to use 'for' 'while' and 'while not' rather than 'pour' 'tant que' and 'tant que pas' loops...
Now, what about French versions of excel where you can find functions like 'trouve', 'nbcar' and 'arrondi.sup' for find(), len() and roundup() and importing an English worksheet can wreak havok in a foreign version at times, not to mention the fact that you find great examples in English... but cannot find the localized versions in the app ! (this is where my VB6-fu comes in very handy re-inventing the wheel in VBA!)
Because all Indians have learned English.
Part of the problem is that changing the key words isn't enough. Foreign grammars would make rote translated statements confusing. Word order can be very different from one language to another.
If you want the ultimate example of a non-English language, check out APL.