Why are all programming languages in English?


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.

Comments (93)

  1. jader3rd says:

    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.

  2. RO says:

    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

  3. EmmaChinedu says:

    really interesting, but i guess we are comforatble, programming in English

  4. hpm says:

    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.

  5. Eddy Pronk says:

    It is the only small thing we agreed on. Let's not touch it.

  6. Bjorn says:

    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.

  7. PC - France says:

    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.

  8. Rodrigo says:

    Seria horrivel ter que programar em portugues… muito melhor programar em ingles… Abraço !

  9. L says:

    The reason may be quite simple: Whether we like it or not, English is the new Latin!

  10. Mark A. says:

    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>

  11. Tim says:

    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.

  12. Ryan says:

    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).

  13. Daniel says:

    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!)

    Cheers,

    Daniel

  14. Jono says:

    Because all Indians have learned English.

  15. GreyBeard says:

    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.

  16. Luan says:

    Windev is in French :)

  17. Yves Schelpe says:

    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..

  18. Barry says:

    If English programming languages bother you that much, then write one of your own, say in Swahili.  See how well it catches on 😉

  19. BNP says:

    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.

  20. The Ace!! says:

    Its 'English US' actually otherwise we'd use control.backcolour and not control.backcolor in vb.net….lol

  21. Joy Petko says:

    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.

  22. Rob Rotterdam says:

    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!

  23. Balaji Birajdar says:

    Its because the english speaking people should be able to understand it well…mostly the americans and british programmers…

  24. Jens Fiederer says:

    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.

  25. Shon says:

    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.

  26. Daniel Nava says:

    There's a tradution of VBA for Protuguese. I think there are for other languages, too.

  27. RandomChimp says:

    Bjorn is right, as anyone who has ever dreamed in Pascal knows!

  28. youki says:

    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.

  29. Vlad says:

    In early 1970th there was a version of COBOL in the former USSR with all russian keywords. And it was terrible!

  30. fermin says:

    Excel formulas are localized. A terrible idea, if you ask me. And English is not mu mother tongue.

  31. 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 😛

  32. Ken Boyer says:

    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.

  33. javros says:

    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.

  34. Paul C says:

    It's not actually English, it is American, if it was english it would be colour and not color.

  35. Phizzy says:

    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).

  36. Paul Wolfgang says:

    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.

  37. Alan Balkany says:

    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).

  38. digitig says:

    I suppose the Whitespace programming language is (human) language independent.

  39. RadRod says:

    I wonder if the English language lends itself to abbreviation better than other common languages?

  40. ENG says:

    English is the international language of business, people write programs primarily for business of some sort.

  41. Marco says:

    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 :)

  42. DG says:

    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…

  43. Liam says:

    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.

  44. Christian Skovdal Andersen says:

    Some of the first versions of VBA for MS Office was localized in Danish.

    It was Awful, Horrible and Evil ™ :

    "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.

    -Christian

  45. Tev says:

    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

  46. Tom says:

    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).

  47. mosgrulli says:

    The question is another.

     ** WhyTF my country's language is NOT English! **

  48. Rui says:

    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.

  49. Tityves says:

    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 !

  50. Eddy Vluggen says:

    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.

  51. Eddy Vluggen says:

    @hpm;

    ..and it makes your code portable to non-German speakers.

  52. Eddy Vluggen says:

    @RO;

    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.

  53. Theraot says:

    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.

  54. For the same reason we don't write in assmebly says:

    It's easier?

    n'est pas?

  55. Bob Snowden says:

    I've seen several mainframe PL/1 programs written in French.  I believe the government mandated it.

  56. Marcus Carvalho says:

    The code (in a pseudolanguage):

    set x=1

    while x <= 100 do

     set x = x + 1

     print x

     if int(x/2)= x/2 then

        print "even"

     else

        print "odd"

     end if

    end while

    in portuguese would be something like:

    defina x=1

    enquando x <= 100 faça

      defina x =  x + 1

      se inteiro(x/2) = x/2 então

         imprima "even"

      casocontrário

         imprima "odd"

      fim se

    fim enquanto

    which one is easier to understand?

  57. Gerardo O says:

    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.  :)

  58. Br.Bill says:

    Australian users still laugh at the idea of root access.

  59. Paul says:

    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

    'NUFF SAID

  60. Max says:

    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.

  61. Larry says:

    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.

  62. Phillip says:

    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

  63. PhilSalinas says:

    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.

  64. Steve says:

    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.

  65. qwerty says:

    It doesn't matter which language you choose. As long as the logic is still there that everyone is interested on.

  66. Sundar says:

    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. :(

  67. JB says:

    English is considered as the International Language so it makes sense for people to programme in it.

  68. Mike Irwin says:

    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.

  69. TheEngineer says:

    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++?

  70. Jack says:

    I'm a French programmer…

    There is "Windev" which is a L5G that allows perfectly programming in French …

  71. mkbh says:

    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

  72. Giulio says:

    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. […]"

  73. Interarticle says:

    Hear of ChinesePython? Unfortunately, due to the size of Chinese character set, programming can be very inefficient without a good IME

  74. Nata says:

    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.

  75. Hash Collision says:

    There is a language developed in Icelandic, called Fjölnir, it is a derivative of the C language that has Icelandic syntax and was developed by an Icelandic professor.

    It was developed in the 80's, and it's extension name is .fjo.

    HC

    Read about Icelandic programming Language Fjölnir en.wikipedia.org/…/Fj%C3%B6lnir_(programming_language)

  76. Adewole Ayobami says:

    I thinks its because, the revolution in the computing world actually started from English speaking countries, but massive work and research is currently going on on localization( Yoruba), even by a company I currently work for – Pure Systems Nigeria. ayobami@programmer.net

  77. Harald M. Müller says:

    Marcus Carvalho wrote:

    ————

    The code (in a pseudolanguage):

    set x=1

    while x <= 100 do

    set x = x + 1

    print x

    if int(x/2)= x/2 then

       print "even"

    else

       print "odd"

    end if

    end while

    in portuguese would be something like:

    defina x=1

    enquando x <= 100 faça

     defina x =  x + 1

     se inteiro(x/2) = x/2 então

        imprima "even"

     casocontrário

        imprima "odd"

     fim se

    fim enquanto

    which one is easier to understand?

    ————

    I'm Austrian (and hence my mother tongue is German); but I know enough words from Roman languages. So I can tell you: BOTH versions are equally easy to understand!!!

  78. Mark says:

    There's actually a programming language in Hebrew called Mama – it's very simple and its pretty much sums up as 'draw turtle' 'move turtle' – obviously in Hebrew.

  79. Peter Camilleri says:

    The real problem is ASCII! Most languages are designed to use ASCII, and for the most part, ASCII only supports English. To truly support multiple languages, you'd have to go to Unicode or some other larger format. This would greatly complicate the lexical analyzer, but would have other benefits too. The available symbols in Unicode would allow for truly descriptive assignment, equality, inequality and other symbols. ASCII was great in 1964. Maybe it's time to move on?

  80. FitToBust says:

    It's American english e.g. Color

  81. jsc42 says:

    Algol-58 (and, hence, Algol-60) had symbols such as 'IF' which could have any implementation as most systems did not have an 'IF' character. The compilers that I have used used the 4 chars 'IF'; most documentation used the two chars if (normally in bold), but it was a single symbol. Foreign languages were free to use any representation for the 'IF' symbol, e.g in Spanish documentation it was si (I am unaware of any Spanish compiler implementation). The syntax for Algol-58/60 was based on German, which is why it had a 'DO' symbol in strange places (strange, that is, to English speakers). Algol based languages, such as Coral-66, C, Pascal, Ada, Java, C++ etc retain the Germam syntax but have discarded the use of language agnostic symbols in preference to reserved keywords. The C++ definition does permit alternative 'front ends' which could incorporate different language specific keywords.

    A recent trend is having computing languages that sit on top of other languages (e.g. Coffee ==> JavaScript, Ruby ==> JVM), this could easily accommodate various natural language words.

  82. Stef says:

    I based in Germany and do not allow our developers to use anything else than English in their code. It just does not make sense. Even if possible based on a culture-aware compiler, too many people have to edit, review, or analyse the code. Why to adjust each time to someone's language?

  83. Dizzy says:

    Sheila Jackson Lee says cause computers are racist & she's OUTRAGED!

  84. Paul says:

    They aren't, they are in American, don't believe me? try and serialise a colour object 😉

  85. Anuj says:

    English is globally acceptable language, this is the main reason. Because is it will not be english then the reusability of code will not be there and hence the code is not used effeciently

  86. André says:

    There's a programming language called G-Portugol that is a language written in Portuguese.

  87. Pete Dashwood says:

    It is because English is the lingua franca for the polyglot world. It is a pretty simple matter to convert reserved word lists into any language you want, but nobody bothers because it creates other problems on the platform. I speak 5 languages and have worked in many different countries. English is simply convenient and easy for most people.

  88. Temidayo says:

    Interesting post. English language seems to be well-adapted for programming. In most native languages finding concise equivalent of keywords can really be a burden. Some languages might measure up but some languages can't just stand the test. Just like there are only 6 UN languages!

  89. Mohamed Samy says:

    My language Kalimat ( code.google.com/…/kalimat ) is Arabic-based. It's intended for teaching children programming, which gave me a lot of design freedom; I don't have to be 'compatible' with languages existing programmers are familiar with.

    It tries its best to make programs sound like Arabic, by making as much of the language grammar similar to actual Arabic as practically possible without making it sound too much like e.g Cobol or complicating the rules too much.

    I'm thinking of making an English version of this language, then using the scientific method to see how much the human language factor actually matters: Teach an experimental group with the Arabic version, a control group with the English one, and observe any differences in outcome.

  90. Kenneth Kasajian says:

    The reason is because English is the defacto International language.

  91. BlueCollarCritic says:

    I would imagine the reason for this has to do with English being the language of business. That’s not to say all business is done in English only that within global business the common generally accepted form of a single language to communicate with is English.  Let me re-iterate because someone will certainly still say it, this does not mean all business is done in English, only that when people of different languages (many)get together and need a single common language upon which to communicate with it is English that is first.

  92. Ile says:

    Think about googling for coding examples, if you use some uncommon language. And you would need to first find out how this code is written in other laguage.