Why did only English-based programming languages become mainstream? Were there any competing standards from outside the Anglosphere in the late 20th century?

by Kraz_I
TheInternetCanBeNice

I can't speak for the whole world, but I do know why this is the case in "The West". Perhaps another person can speak more about the former USSR and Asia.

The beginning of the answer is simple; Grace Hopper and COBOL. Languages like FLOW-MATIC had the kind of verbose naming of COBOL but were still much closer to assembly. COBOL was much easier than assembly, and coming at the exact right time and place; 1950s NASA.

Before COBOL began to really dominate the world of programming there was a German-based language called Plankalkül developed Konrad Zuse. This language was created for Z3, an early programmable computer designed by Zuse himself. There's a great English language paper by Bauer and Wössner from Technischen Universität München called The “Plankalkül” of Konrad Zuse: a forerunner of today's programming languages which covers this language.

Plankalkül contained many features which presaged today's high-level languages. World War II and its aftermath were major inhibitors in widespread adoption. Although the language itself was completed in 1945 Rojas et al. from Freie Universität Berlin and Feinarbeit Berlin ran the first Plankalkül application in the year 2000. Their paper "Plankalkül: The First High-Level Programming Language and its Implementation" has a lot of detail about the language and its implementation.

Here's a function they wrote which computes the maximum of three variables by calling the function 'max'.

P1 max3 (V0[:8.0],V1[:8.0],V2[:8.0]) => R0[:8.0]
max(V0[:8.0],V1[:8.0]) => Z1[:8.0]
max(Z1[:8.0],V2[:8.0]) => R0[:8.0]
END
P2 max (V0[:8.0],V1[:8.0]) => R0[:8.0]
V0[:8.0] => Z1[:8.0]
(Z1[:8.0] < V1[:8.0]) -> V1[:8.0] => Z1[:8.0]
Z1[:8.0] => R0[:8.0]
END

Now, these researchers were writing an English language paper for an English audience. But what I hope comes across here is how little the language is 'based' on anything at all. We don't have code examples from Zuse himself since his primary notation was influenced by a style called Begriffsschrift.

Let's compare this with a COBOL example.

      $ SET SOURCEFORMAT"FREE"
IDENTIFICATION DIVISION.
PROGRAM-ID.  Iteration-If.
AUTHOR.  Michael Coughlan.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  Num1           PIC 9  VALUE ZEROS.
01  Num2           PIC 9  VALUE ZEROS.
01  Result         PIC 99 VALUE ZEROS.
01  Operator       PIC X  VALUE SPACE.

PROCEDURE DIVISION.
Calculator.
    PERFORM 3 TIMES
       DISPLAY "Enter First Number      : " WITH NO ADVANCING
       ACCEPT Num1
       DISPLAY "Enter Second Number     : " WITH NO ADVANCING
       ACCEPT Num2
       DISPLAY "Enter operator (+ or *) : " WITH NO ADVANCING
       ACCEPT Operator
       IF Operator = "+" THEN
          ADD Num1, Num2 GIVING Result
       END-IF
       IF Operator = "*" THEN
          MULTIPLY Num1 BY Num2 GIVING Result
       END-IF
       DISPLAY "Result is = ", Result
    END-PERFORM.
    STOP RUN.

These two examples here are a great indicator of how COBOL came to dominate, and thereby how English came to dominate, high-level programming.

TL/DR: English language based languages dominate high-level programming because of three major factors: the outcome of World War II, the success of COBOL and the fact that assembly languages were not strongly tied to any human language.

If you're interested in early programming I'd encourage checking out the life and work of Konrad Zuse. His work is right in the middle of advances in both computer hardware and software. The Z1 - Z4 machines and their programming languages are all really cool.

Sources: 'The “Plankalkül” of Konrad Zuse: a forerunner of today's programming languages' by F.L. Bauer & H. Wössner. July 1972.

'Plankalkül: The First High-Level Programming Language and its Implementation' by Raúl Rojas, Cüneyt Göktekin, Gerald Friedland, Mike Krüger, Olaf Langmack, Denis Kuniß. February 2000