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.
I like it this way. How complex would it be to read code from around the world?
Even my method Names and variable are in English.
Well probably in the first place the answer is that they using a machine language which is made of English instructions just like MOV, ADD, INC etc...so if it were the case it is not a good practise to use an assembler or a compiler and create a high lever language in which all the instructions is made from Russian language. A system developer should know both languages for this issue. Otherwise they have to invent another processor made of Russian instruction codes. I wonder for a chinese processor with chinese machine codes should look to top American programmer! then they will become moron at this time.
Ever wonder why most medical terms are in Latin? There needs to 1 and only 1 "language" for keywords and such so everyone reading the code will know essentially what is going on even if variables are in some arcane language to the reader. IMHO
Actually, there is a computer language that does not understand English. It is APL and at one time it was used by a host of folks, not only in scientific computing, but, interestingly, in the prototyping of business applications.
There was once a variant of Basic that used French keywords - "si" rather than "if" etc. All I really know about it is that it existed, and that (being a variant of Basic), it can't have been that great a language.
It doesn't matter which language you choose. As long as the logic is still there that everyone is interested on.
infitt.net/TechPaper.aspx - In 2003, a young student had created a preprocessor-based implementation that facilitated writing Python code in Tamil. Sadly, those were very early days for Python here and the project didn't get the support it deserved. :(
English is considered as the International Language so it makes sense for people to programme in it.
You used to get things in Siemens computers in Germany that were in German, not English. For example, although you had written your FORTRAN program with English keywords, running it on the OS was totally in German, with not just German words for things like listing directories and moving around the filesystem, but also German abbreviations (Eingabequelle as EGQ) for things like specifying source and destination files for process tasks (like the compiler!). That was around 1980 By 1986 everything was in all-English.
The reason lies most probably in lexical analysis.
To my knowledge, only jflex for Java (http://jflex.de/)
and Quex for C/C++ (http://quex.sourceforge.net) support
Unicode characters. Quex actually supports a wide
range of character encodings, but who wants to
code in C/C++?
I'm a French programmer...
There is "Windev" which is a L5G that allows perfectly programming in French ...
windev is a programming application ,you can use the keywords in french or it synonymies in English !! and it is used alot in the francophone world
I totally agree with Bjorn: "You're making the assumption that having the keywords in your own language is a benefit. It isn't. [...] Having english keywords keep the programming abstracted from normal language for us [...] So, thanks, but no thanks... We do NOT want local language keywords for programming. [...]"
Hear of ChinesePython? Unfortunately, due to the size of Chinese character set, programming can be very inefficient without a good IME
Why one language? Why not? It is leading to "universal". I am a bit angry at all translations modules, because they slow down this beneficial process....I have a Dutch system, but to translate Dates properly from application export I set them in English.