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.
Once upon a time I was working on an international Project. Some of the developers had English vesion of Windows others German. Everything was going right till a nice MS Doc template has been introduced in order to standardize our documents. Suprise came by the usage: the template worked only with German locale settings. Woever had the brilliant idea in MS to translate the macro language ? (and did not even provide a translation tool)
Comments written in foreign language can be also quite disturbing (especially if one does not speak that language).
The question is another.
** WhyTF my country's language is NOT English! **
I could tell you about the hair pulling that went on in our offices in Lisbon when our colleagues in Brazil decided that Portuguese keywords and function names was the way to go when writing VBA macros for Excel, but I'm still shaken by the experience.
From one side it is a chance for non-english people programmer... If you want to name a loop, for example, you can call it "boucle" in french (i'm french) without obtaining a message for using a reserved keyword. So we have a much bigger reservoir of objects' names !
Simple; it's the default language and the de-facto standard. If you want to reach a large audience, you pick a language that is spoken by many.
"I’m not sure why this is."
I am; did you ever have to hunt for an error-message of your compiler in Hindi? Computers weren't multilingual, would have been bloody expensive. Just like a medic learns Latin, we learn English.
..and it makes your code portable to non-German speakers.
Won't ever work, because programmers need to communicate about their code. That's easy if there's a standard, and the standard is easy - it's English. Imagine writing a book on C# in 40 different localized code-examples. Unit-testing 40 different localized versions of the errors.
I can see how we're trying to make things easier, but this will only result in a loss of communication and further dumbing down.
I've seen versions of Logo in English, German, Italian and Spnaish. But each one is different, with different capabilities, build for students of their own country. Not famous? Because you want to have a language that works world wide, like chemestry. Do you that H2O is water right? You see? A single language for the whole world. I don't want to publish source code that you can't undestrand because I'ts in spanish (my natual language). What if we are co-workers, pdorás endenteder lo que te escribo en mis comentarios? Well, sometimes I use spanish for my indentifiers but that's only when the project is only between spanish speakers. Today, some say Functional, others say Generic, other says Aspect Oriented, but all people say with-english-words. Now what would be better is to have less reverved words based in english, aka: don't use basic if this matters to you.
I've seen several mainframe PL/1 programs written in French. I believe the government mandated it.
The code (in a pseudolanguage):
while x <= 100 do
set x = x + 1
if int(x/2)= x/2 then
in portuguese would be something like:
enquando x <= 100 faça
defina x = x + 1
se inteiro(x/2) = x/2 então
which one is easier to understand?
I like programming in English (even though my mother tongue is Spanish) mainly because it's more terse. Also, IMHO, having multiple-language support in programming languages would dilute the amount of useful information that can be found on the internet on a certain topic because of keyword mismatch. :)
Australian users still laugh at the idea of root access.
I'd use an Ebonics programming language in a second. IN A SECOND!!
JUST AXING: F'D UP?
THEN I BE DOIN
SMACK DAT THANG
GET SOME, YO