Are all Programming Languages in English?
How fun would it be to write code in your favourite language? But is there any programming language which uses non-english keywords? Let's find out!

After some time spent searching for the right programming language for your project, you may have thought: "Hey, but is there a programming language with non-english keywords?".

No? Ok, maybe I'm the only one wondering these strange things while making researches for tools and languages for my projects!

But the question itself seems very interesting, so let's find out.

#A bit of History

When talking about programming (and programming languages in general), English seems to be some kind of lingua franca for writing computer programs. The reason is pretty obvious: modern programming languages are proud offsprings of other programming languages mainly developed in the United States in the mid of the 20th century, so it seems natural that those languages evolved maintaining the current language as source for vocabules to be used as keywords.

Nice fact about programming languages: the first high level programming was the Plankalkül. It has been developed by Konrad Zuse, a german engineer, between 1942 and 1945. Here it is an Hello World Program in Plankalkül:

R1.1(V0[:sig]) => R0
R1.2(V0[:m x sig]) => R0
0 => i | m + 1 => j
[W [ i < j -> [ R1.1(V0[i: m x sig]) => R0 | i + 1 => i ] ] ]
END
R1.3() => R0
'H';'e';'l';'l';'o';',';' ','w';'o';'r';'l';'d';'!' => Z0[: m x sig] R1.2(Z0) => R0
END

(code source: Twitter)

Starting from the 1950's, a lot of notable programming languages began to come to life. In 1955, in fact, FLOW-MATIC appeared for the first time. Its syntax may be pretty familiar:

 (0)  INPUT INVENTORY FILE-A PRICE FILE-B ; OUTPUT PRICED-INV FILE-C UNPRICED-INV
     FILE-D ; HSP D .
 (1)  COMPARE PRODUCT-NO (A) WITH PRODUCT-NO (B) ; IF GREATER GO TO OPERATION 10 ;
     IF EQUAL GO TO OPERATION 5 ; OTHERWISE GO TO OPERATION 2 .
 (2)  TRANSFER A TO D .
 (3)  WRITE-ITEM D .
 (4)  JUMP TO OPERATION 8 .
 (5)  TRANSFER A TO C .
 (6)  MOVE UNIT-PRICE (B) TO UNIT-PRICE (C) .
 (7)  WRITE-ITEM C .
 (8)  READ-ITEM A ; IF END OF DATA GO TO OPERATION 14 .
 (9)  JUMP TO OPERATION 1 .
(10)  READ-ITEM B ; IF END OF DATA GO TO OPERATION 12 .
(11)  JUMP TO OPERATION 1 .
(12)  SET OPERATION 9 TO GO TO OPERATION 2 .
(13)  JUMP TO OPERATION 2 .
(14)  TEST PRODUCT-NO (B) AGAINST ; IF EQUAL GO TO OPERATION 16 ;
     OTHERWISE GO TO OPERATION 15 .
(15)  REWIND B .
(16)  CLOSE-OUT FILES C ; D .
(17)  STOP . (END)

(code source: Wikipedia)

yes, you guessed it! FLOW-MATIC is an ancestor of COBOL. As you can see, the english language is strictly part of the programming language itself (just like in COBOL).

The next big (I would say huge) programming language from those years was Fortran, developed in 1957 by IBM. Just like FLOW-MATIC, its keywords are written in english (IF, GO TO, PROGRAM, and so on).

In 1958, John McCarthy developed LISP, which is one of the oldest programming languages still in use today (together with Fortran). Just like the other programming languages of the time, it was developed with english keywords (list, quote, if, or, and so on).

The same year, ALGOL 58 came to life, and like all the previously mentioned programming languages, it used english keywords for building programs.

During these years, many other programming languages appeared on the scene: COBOL (1959), APL (1962), SIMULA (1962), CPL (1963), BASIC (1964) and many others.

Why is that so important? Because these programming languages were the base for the modern languages that we love to use everyday. In fact, more modern languages are an evolution of the programming languages born in the 1950's. CPL (with the B Programming Language) led to C. C led to C++, C#, PHP, Java and may others. LISP led to Clojure, Racket, Scheme and many other LISP dialects still widely used today. ALGOL 58 led to Pascal, Simula (the first Object Oriented language), and so on.

So, with the evolution of programming languages, the english language has been adopted as a convention for writing computer programs. This doesn't mean that there weren't other programming languages (maybe in french, spanish, or other languages); they didn't become as popular and widely adopted as the english-based programming languages.

#Non-American Languages

We've just took a look at the early days of programming languages. Most of them were developed in the US, but that doesn't mean that more modern languages are all coming from there.

In fact, we can say that Object Oriented Programming has been invented in Norway by Ole-Johan Dahl and Kristen Nygaard while working with Simula in the early 1960's.

ML, the ancestor of Standard ML, OCaml, F#, ReasonML and Coq, has been developed in France in 1973. ML (which has roots in LISP) improved drastically the Functional languages development.

Pascal has been designed by Niklaus Wirth, a Swiss computer engineer in the 1970's.

The list of non-American programming languages continues with Python (Netherlands), Ruby (Japan), OCaml (France), Elixir and Lua (Brazil), and so on.

By the way, in the Online Historical Encyclopaedia of Programming Languages book, we can see that in 8900+ known programming languages, circa 2400 of them has been developed in the United States, ~600 in the UK, 160 in Canada and 75 in Australia, all countries with the same mother language.

#Symbolic Programming Languages

Symbolic Programming Languages, are languages that uses characters and symbols to represent concepts (such as loops, operations, conditionals and so on) instead of common used keywords.

Most of the time, these languages can be considered as non-english-programming languages.

An example of a popular symbolic programming language is APL (do you remember? We mentioned it before!):

This is how an "Hello World" looks like in APL:

'Hello, world'

Ok, maybe that's a trivial example, let's see something more complex:

(~R∊R∘.×R)/R←1↓ιR

the program above, finds all the prime numbers from 1 to R. As you can see, no english keywords has been used for expressing a non-trivial problem.

Alonzo Church's Lambda Calulus is another awesome example of how we can implement symbolic programming languages without using english keywords at all. In fact, Lamda Caluclus emphatizes the use of anonymous functions, meaning that you'd be able to build even complex programs just using anonymous functions. An example, an implementation of multiplication of two numbers abstraction:

(λxyz.x(yz))

Its application:

(λxyz.x(yz))22

Its reduction:

(λz.2(2z))

The lambda expressions above can be translated in every language that supports anonymous functions, making it irrilevant which language you're speaking!

Many esoterical programming languages takes the advantage of symboilc programming for their syntax. The most famous example is Brainfuck:

+[-[<<[+[--->]-[<<<]]]>>>-]>-.---.>..>.<<<<-.<+.>>>>>.>.<<.<-.

The code above prints "hello world" to the console. Other well known esoteric and symbolic programming languages are (with their "hello world" programs):

  • ChoonAGb-A#A#+A+%A#DF-AC#
  • Elang"" .H .e .l .l .o ., ._ .w .o .r .l .d .! ()
  • Integ](104)](101)](108)](108)](111)](44)](32)](119)](111)](114)](108)](100)](10)
  • OuroborosS"Hello, World!"1( ewSoL!(

And may many others.

#Non-English-Based Programming Languages

Now, let's come back to the original question: are programming languages all in english? The answer is: no. As we've just seen, the most used programming languages in the real world are all based on the english language, but that doesn't mean that other languages can't be used for coding.

In fact, there are a wide number of programming languages that uses non-english keywords.

#Linotte

Linotte is an awesome example of non-english-based programming language. It has been developer for using french keywords, and its "Hello world" program looks like this:

BonjourLeMonde:
début
affiche "Bonjour le monde!"

#SAKO

One example could be the SAKO (System Automatycznego Kodowania Operacji) programming language, which uses polish as for its keywords:

K) PROGRAM DRUKUJE NAPIS HELLO WORLD
   LINIA
   TEKST:
   HELLO WORLD
   KONIEC

some itmes SAKO is described as "the Polish Fortran".

#Rapira

Rapira is another awesome example of a non-english programming languages. It uses russian keywords:

ПРОЦ СТАРТ()
    ВЫВОД: 'Привет, мир!!!'
КОН ПРОЦ

it has been developer for educational purposes in the Soviet Union and has been highly influenced by Algol.

#Himawari

A famous japanese programming language called ひまわり (Himawari) is another great example of japanese coding:

「Hello, World!」と、表示。 ’母艦(メインフォーム)に表示。
「Hello, World!」と、言う。 ’ダイアログボックスで表示。

#Qalb

Another interesting programming language is قلب (Qalb), as known as the arabic LISP:

(قول "مرحبا يا عالم"‏)

#EPL (Easy Programming Language)

Chinese engineers developed 易语言 (Easy Programming Language, as known as EPL):

公开 类 启动类
{
  公开 静态 启动()
  {
    控制台.输出("你好,世界!");
  }
}

#Conclusion

There are thousands of programming languages out there, and no matter where you come from, programming itself is like an universal language for both humans and computers.