Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I think the world now programs in English-based programming languages not only because of historical/economic circumstances, but because the English morphology in particular has some properties that suit algorithmic thinking best. But anyway it would be interesting to hear your opinions on this, especially if you are multilingual yourself.

I've seen some mentioning of German-based languages (see Plankalkul for example, in fact the first ever programming language we know very little about, thanks to WW2), also a Russian-based flavor of Algol which existed back in the 80's at least on paper, not sure if it ever existed in binary or not. Both looked a bit sluggish because there were more shortened words and weird abbreviations than full words like in the EN-based languages. So if you know of any other national language-based PL's, even completely archaic and irrelevant today, purely theoretical or whatever, would be interesting to take a look at them.

And back to the main question: so what, if any, makes the Shakespeare's language so good for programming?

(There is actually a list of Non-English-based programming languages on Wikipedia (of course, where else?), but it would be interesting to hear opinions of native speakers of those languages on how a given "national" programming languages really feels like.)

share|improve this question
3  
@Michael: He said "I think". He's expressing his own opinion. You might ask how he came to that opinion, but I don't think he needs to cite a source. We can take him at his word that if he says it's his opinion, it's his opinion. Additionally, he didn't say there were NO historical or economic circumstances, only that he believed that these weren't the only factors, and he is more interested in discussing the others. –  HedgeMage Nov 4 '10 at 15:41
1  
@Michael: you say "Computers were invented and established primarily in English-speaking countries", now that's historical/economic circumstances. For example we can bring up the industrial revolution in the 19th century in the U.K. (and the whole empire actually), or the "brain drain" during/after WW2 to the U.S., or that the U.S. probably had the least losses during WW2 among the industrial countries, etc. –  mojuba Nov 4 '10 at 15:53
3  
Whatever language it is should gramatically be gender neutral. –  JeffO Nov 4 '10 at 16:00
1  
@Jeff O: absolutely, and not only gender. Basically all your verbs should be neutral, because otherwise you end up thinking in what exact form (tense, gender etc) the "do" in your "while...do..." should be. The morphology of verbs in English is so relaxed compared to many other European languages that I think that's, among other things, what makes English so good for programming. –  mojuba Nov 4 '10 at 16:27
2  
We might also ask why Italian supplies the keywords for music, while we're at it. There might be some insights there. –  David Thornley Nov 4 '10 at 19:02

8 Answers 8

Disclaimer: My native language is German.

I don't think there is any reason English as a language to take keywords from would be better than any other natural language. I do think it's the one all-important language in IT, but not because of linguistic properties, but because most tech people speak it to some degree, it's the native tounge of quite a few important people in the field, most tech-related terms are already English, etc.

But since we talk about programming languages, not about documentation/API/names/etc, I have to object: Programming languages are not based on English - or on any other natural language, for that matter. Programming languages are formal languages. They do use, to varying degree, a handful of words from (usually) English. Some even try to mimic its grammar -- but utterly fail to read like English regardless. To add insult to injury, they only associate one single (in rare cases a handful of) meaning(s) with each word they borrow. Often, this meaning is very jargon-y, specialized, or based on a questionable analogy. Therefore, knowing the myriad natural-language meanings of a word borrowed by programming language doesn't really help understanding the programming concept behind the keyword. Examples off the top of my head: array, type, goto, class, void. (Fun fact that sprung to mind as I re-read the question: All of these, except goto, have German translations which are at most one character longer: Feld, Typ, Klasse, Leere. They all sound weird to me, but that's probably a matter of habit.)

share|improve this answer
2  
Class kind-of means what it means in English. A "class" defines a Type, which is a "class of objects." You can say that all Int values or all Person records are of a class because they share certain features. However, most C-like programmers don't think in categorical terms, so "class" just means "object blueprint" to them. –  CodexArcanum Nov 4 '10 at 16:30
5  
Your English is excellent btw –  Allen Jun 30 '11 at 12:23
    
As a fellow german, i have to say that i totally agree with you. I think, th emain reason is, as you mentioned, that english is the language in the IT-world. People from all around the world speak, discuss and program in english every day - and so almost every relevant article is first published in english. The same applies for books. Plus that most of the books that get translated to german read kinda wrong. Some phrases and keywords are translated. That totally kills the flow. –  mri Feb 1 '13 at 19:53
    
I completely agree that trying to shoehorn English grammar into programming languages is a complete mistake. I don't agree with "this meaning is very jargon-y, specialized". As a native English speaker, describing concepts as analogues to pre-existing terms is typical of everyday communication. English as a language is just loosely interpreted and very context-specific in general. As for the German equivalents, it's not a big surprise. English borrows much of it's structure from German, and a lot of it's vocabulary from other languages. It's like the 'mystery meat' of natural languages. –  Evan Plaice Feb 1 '13 at 20:12
    
@EvanPlaice Yeah, it's debatable how unnatural these really are. There's clearly some merit to them, else they would have been abolished long ago. I can't judge if they generally help native English speakers, I just know that the equivalent (choosing the closest translation, then constructing equivalent analogies with that translation) tends to build wrong associations in students' brains. Re translations: Yes, it's no surprise that there are similar words; I was aiming at the "there were more shortened words and weird abbreviations than full words" bit of the question. –  delnan Feb 1 '13 at 20:20

English is the lingua franca language of programming.

From the same article:

It's nothing more than great hackers collectively realizing that sticking to English for technical discussion makes it easier to get stuff done.

share|improve this answer
7  
lingua franca - a Latin phrase that (today) means French. And yet we use it to mean English. –  user4051 Nov 4 '10 at 16:52
6  
@Graham Lee: As ironic as that is, the phrase has come to mean (as a borrowed English term) "a common language used by people of diverse backgrounds to communicate with one another." –  greyfade Nov 4 '10 at 16:58
    
Why is Italian the language of musical notation or Latin the music of Science? For technology it's English. With international acceptance as the 'lingua franca' it's inevitable that English will have the most extensive technology-specific vocabulary. A rich vocabulary is essential to effective (and universal) communication, so people are willing to adopt the language. –  Evan Plaice Feb 1 '13 at 19:50

The English language is favorable because:

  1. Better fits the restrictions of current peripherals.

Ease of type. You can use a standard keyboard. I know this sounds like "llama dung", but have you tried typing in Chinese? There are 1000s of characters and since Chinese doesn't have an adequate "character" building technique to fit the concept of a keyboard, it wouldn't be easy to learn for a global audience.

  1. Can be morphed into non-words that are equally recognizable. English favors abbreviations due to the lack of accent symbols.

Shortened English words are recognizable symbols. One doesn't have to learn the entire English language to code, thus people external to the language can learn fast.

  1. And consider that common programming languages feature more mathematical symbols and less words.

Assembly used small words that had no sentence structure. Then came languages, like COBOL and FORTRAN, which attempted to accommodate the English sentence structure as much as possible. Newer languages implemented more reliance on universal algebraic symbols, because they had better predictability. (In COBOL Add X To Y, Subtract Y From X, Compute Y = X + A; Compute makes the previous statements unnecessary and reduces language parsing complexity). It wouldn't take much more for me to consider languages like C++ to be more symbolic than language based. There's a little bit of a return to word based programming with C#, but that's mostly to have baked in support for popular programming patterns.

Conclusion:

Ultimately, the peripherals limit to a character based language (like English). Also, western languages have better support for mathematical concepts (like the concept of 0, among others; China borrows numerals in lieu of their own representation of numeric values, to better convey numbers, because it's shorter to write (on average)). Other than numerical values, I would see symbol based languages (Chinese) as better suited to programming language morphology than English, as most of the modern languages already use symbols, and it would be universally equivalent to learn. However, we'd have to impose C++ like structure, having blocks of symbols would not be easy to read for most people in the world.

share|improve this answer
4  
One doesn't have to learn the entire English language to code, thus people external to the language can learn fast - doesn't sound like a good argument: in the medical science there are a lot of Latin words, and you don't need to know Latin to study medical science. –  mojuba Nov 4 '10 at 16:46
2  
What you said about Chinese is false. Chinese can be entered with a standard keyboard. –  grokus Nov 4 '10 at 18:45
2  
@mojuba Not what I meant. What I meant is that English is good at abbreviating words, MOV, cpystr, etc. You can't chop off half a chinese symbol, or half a japanese word (which is a combination of words usually) and mean the same thing. Whereas you have lots of room to shorten english words and convey the same meaning. I don't mean to say that other professions don't incorporate words from other languages, I mean to say that the words program syntax do incorporate can be simplified easily into tokens. –  Lee Louviere Jan 20 '11 at 21:56
    
@grokus Unless you mean PinYin, you cannot directly type Chinese. You have to use keystrokes, or use PinYin and select the closest matching symbol. Either way, you have to incorporate a selection process because the standard keyboard doesn't support the four Chinese tones. UNLESS you modify the standard keyboard, thus violating the requirements. –  Lee Louviere Jan 20 '11 at 21:57
    
-1, 0 wasn't a Western concept (Mid East first), Assembly doesn't use words at all (usually based off line/register names, and 3-5 character commands to take place of 0x86 being LDA), English structure kills programming because English has one of the worst sets of structure in the "Western" Languages. Non-words that are "recognizable" is a locality and subject matter specific idea and can be as bad as a "Non-English" set of words to understand. All languages are symbolic, it's part of how you make them a formal language: int represents Integers, Double represents double precision floats... –  Jeff Langemeier Feb 1 '13 at 20:50

The only reason that english is widely used in computing is that it happens to be a wide spread language right now.

If computers were invented 2000 years ago, they would have used Greek. If they were invented 200 years ago they would have used French. If they would have been invented in 200 years they would probably use Chinese...

share|improve this answer

Here are some benefits to a hypothetical programming language would have if it just assumed the English - Latin alphabet.

  1. It's a small character set (unlike say Kanji)
  2. Doesn't usually use diacritical marks (unlike French, Spanish, German, etc.)
  3. Every Upper case has a lower case (unlike the German Eszett)
  4. It's collation is straight forward

All of these things are problems that still haven't properly been solved on all devices. For example Song titles with diacritical marks don't show up correctly on a number music players

share|improve this answer
5  
I wonder if computers had been invented in China, we'd be debating how anyone could write code that wasn't in Chinese because all the characters allow for shorter names. –  CodexArcanum Nov 4 '10 at 16:41
3  
I disagree. The Greek alphabet, for example, is as small; diacritical marks could have been eliminated for programming specifically, same for the German ß; collation nowadays is normalized, i.e. brought to some "straightforward" form for computing/databases etc in virtually all existing languages. Just like the English "the" and "a" articles are basically not used or avoided in computing, any other language could have gone through some optimization. –  mojuba Nov 4 '10 at 16:42
3  
I don't see that upper and lowercase have much to do with the programming language. –  David Thornley Nov 4 '10 at 19:04
1  
@David Thornley ah but to a compiler the program is the data. –  Conrad Frix Nov 6 '10 at 0:19
1  
@Ingo I'm not sure what you mean. For example lets assume I used a variable named étudiant. With unicode the first letter can be expressed as U+00E9 LATIN SMALL LETTER E WITH ACUTE or it could be e followed by U+0301 COMBINING ACUTE ACCENT. If you were the compiler writer for one of these languages would you want to support variable naming like this? How exactly would you treat two variables in the same scope named \u00e9tudiant and e\u0301tudiant? –  Conrad Frix Feb 1 '13 at 19:12

I'm not so sure that programming languages themselves benefit from being based on English. In explanation:

  • The name of a methods, variables, objects, etc. don't matter to the computer
  • The content of a comment doesn't matter to a computer
  • The logic of programming is expressible in most (and I assume ALL) spoken languages.

So, if English is of benefit to programming languages, it would be in helping to cause more people to use the programming language. In that regard, here are a few thoughts:

  • Many people in foreign countries learn English whether or not they want to program
  • People designing a computer language and wanting many people to use it will generally pick the most well-known spoken language to describe it.

Summarizing these thoughts, I don't think English really helps programming languages in any significant way that most other languages could offer - other than that many people speak it.

share|improve this answer
    
Interesting that you mention comments; I have worked for a Japanese-based company, where all of the C files were stored in Unicode because the comments were in Japanese. –  Mark Avenius Feb 1 '13 at 19:40

In my opinion, English simply has a richer technical and mathematical vocabulary than many (but not all) other languages. The languages that lack such vocabulary use English loan words to get the job done. This alone is a compelling reason to orient programming languages toward English.

Regarding the languages that do have a sufficiently rich vocabulary to describe everything we need to describe without resorting constantly to English loan words, the tradition of English as the lingua franca (common tongue) for the sciences is in itself compelling, but our alphabet gives us another little leg up:

  • English can be represented in a smaller character set than, for example, Chinese, Japanese, Cyrillic, or even Romance languages that use accented Latin characters.
  • The English alphabet, largely due to its complete lack of accented characters, is very visually clear. We have enough bugs due to mismatched brackets or missing semicolons, it would be foolish to add problems discerning between 'ē', 'ĕ', and 'ě'.
share|improve this answer
3  
The English technical vocabulary is rich because computing was mainly developed in EN-speaking countries, and not the other way around. Kind of a chicken-egg problem really ;) As for accented characters, interesting point indeed. –  mojuba Nov 4 '10 at 16:02
    
@mojuba I disagree. The English technical vocabulary is rich because technologies that long predate computers were mainly developed in English. Those technologies were developed in English for mainly economic reasons, but by the time computers came along, the English language was already primed and ready. –  HedgeMage Nov 4 '10 at 16:06
2  
Pulchra est lingua Latina! ("The Latin language is beautiful!") I actually speak classical Latin and have had great fun using it in my code. Unfortunately, it hangs constantly on the edge of being a dead language, so it is not practical to base a programming language on. (Though, now I'm tempted to design one just for fun.) Plenty of good technologies came from non-English speakers, but not enough of them from any one language to match the rich vocabulary offered by English in any language that also meets the other factor I mentioned: a small, clear alphabet. –  HedgeMage Nov 4 '10 at 16:48
1  
@mojuba + HedgeMage, it really doesn't matter where technologies are developed, English is such a big hodgepodge of borrowed words and vocabulary, that any terminology that wasn't developed in English is quickly slurped up into the language. Englishes main advantage is that it offers a lot of complicated tense that can finely describe abstract concepts well, which is very useful. –  whatsisname Nov 4 '10 at 16:49
5  
The English language is rich because of its habit of mugging other languages in dark alleys and stealing all their useful words. It isn't so much a source of loan words as a bazaar of words. –  David Thornley Nov 4 '10 at 19:06

For some fun reading on the context of language and how we end up groking things:

Stuff of Thought by Steven Pinker

Remember, we're talking about the language construct, not how we communicate the information (not one in the same), I've worked with code where the main language for variables was all in German (the code was no less easy to understand). English doesn't inherently have anything that suits it better for programming, if we're going directly off of how our language is structured it is probably worse not better, and this could honestly be for many reasons:

  1. Lack of structure (we can put subject/predicate/nouns/adjectives wherever we please),
  2. Mutability of our words (we feel like we can abbreviate ANYTHING)
  3. BIG ONE: Someone who knows English fluently won't have any better understanding of a section of code than someone who has no understanding of the English language.

Asking why programming languages use "English" is like asking why the periodic table still has the letter 'W' identify Tungsten, most people can't tell you why unless they know the history. And if you want the history of programming languages we should go back to punch cards, byte instructions, and assembly.

Assembly has no major "English" constructs but it's as close as you can get to machine code without hating yourself. Further, all structural elements of higher level languages can and are regularly implemented by those of us crazy enough to enjoy it. LD, MV, ST, BRA, and the rest of the instruction set look nothing like English, but I can read it perfectly and get the full meaning.

We assign the same meaning of the LD or MV in assembly to higher level constructs, I don't need to know what a variable means, and in many cases won't if it's in English anyway because of #2 in my list. The set of identifiers like int, str, enum, and such are a way of telling what you're working with, no more. If instead of int the identifier was seagull we'd all know what seagull meant in a coding context, not because it's English, but that's what the identifier covers.

TL;DR: Programming languages, like any language need training to understand. The reason their commands are in English instead of Spanish or German or Russian is more than likely esoteric and historical than by some necessary construct of the English language being more or less suited for the identifiers in the Formal Language construct.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.