There is a section in the book AppleScript: the Definitive Guide by Matt Neuburg (Covers Mac OS X Panther!) called The “English-likeness” monster. In this section, Neuburg lists various difficulties that arise from AppleScript’s superficial resemblance to English:
- Things that look like they should be valid AppleScript, because they are valid English, are not.
- Things that look like they do the same thing in AppleScript, because they would do the same thing in English, do not.
- Things that look like they should not be valid AppleScript, because they are not valid English, work fine.
Using his example, given this line:
set the phrase to "now is the winter of our discontent"
What happens here?
if words 1 thru 4 of the phrase is equal to the text from word 1 to word 4 of the phrase then say "equal" else say "not equal" end if
(Also, for fellow British-English readers, what even is the word “thru”?)
Programming language and library designers frequently make choices about how English-like their interfaces should be. Whether it is Clojure, where the words
rest are preferred to the IBM register mnemonics
cdr; Python, where the non-word
elif wins out over
else if; or LINQ, where the word
select beats out the word
map in the “name for the projection operator” stakes; decisions are constantly being made about how English-like programming should be, and which bit of English they should resemble.
This bias toward a the native language of a minority of the world’s population reflects the early influences on the field: on the Algol committee in 1958 the American contingent even vetoed Zuse’s ⇒ assignment operator, pronounced “yields” (or “Ergibt”) as in “evaluating x yields the value of y+3” in x⇒y+3. They preferred the good old honest American
:= (itself derived from ⇐), a weird choice given that it points the wrong way for all of the left-to-right readers involved.
If a rightwards arrow cannot overcome the language barrier, no hope for actual words. If we had listened to Zuse then binary variables would be JNWs (Ja-Nein-Werte) rather than the already oddly-mangled Bools, saving a whole column in those punch cards.
But that was the 1950s, when the lion’s share of the computing community was also the academic community or somewhat associated with it. Academia has not ever been fully English-only but certainly has been English-supremacist, and computing along with related topics like cybernetics of course grew up in the particularly English-supremacist Cold War era. So perhaps it is natural that early programmers, looking for words to describe concepts in their languages, reached for the lingua franca of their community.
Programming languages are not only a little like human-communication languages, they are a little like mathematics, too. Not entirely like maths—when Zuse introduced his yield operator, he was inventing the non-mathematical concept of assignment in programming languages—but close enough that we have things called the Algorithmic Language or the Formula Translator, and languages named after mathematicians: Haskell, Ada, Pascal, Erlang.
But even when our programming languages are being maths-like, they are still being English-like. It is common to see
sum as the name of a function that folds a collection using the
+ operator, and very uncommon to see Σ. Even APL, the least English-like of the programming languages, uses
+/ (apply addition over all elements).
Do programming languages inspired by other languages exist? Of course!
Lingua::Romana::Perligata is a Latin DSL for the Perl language. Going back to Algol, the Soviet Union adopted a standardised dialect of Algol-68 with Russian keywords although the structure remained heavily anglocentric. The Fjölnir language has both an interesting package system, and a structure and syntax based on Icelandic.
Do I have to learn Latin, or Russian, or Icelandic, to get by in computing? No, of course not. Does a native Latin, or Russian, or Icelandic, speaker have to learn English to get by in computing? Almost certainly. Along with those who speak Hungarian (such as Neumann János Lajos, who learned enough English to read Turing’s work and regurgitate it as the Von Neumann architecture); Dutch (Edsger Dijkstra); Swedish (including Swedish-speaking Finn, Linus Torvalds); and French (Bertrand Meyer).
This English-supremacy serves the Silicon Valley hegemony well, no doubt. Base your company in Palo Alto, we have got the same mediocre programmers interested in juicing their CV rather than solving customer problems as the rest of the world but we have taught them all the different confusing ways the word
set can be used in a program from an early age, and that is why we charge ten times as much for them which by the way goes directly to their landlords!
The English-supremacy history of programming cannot be rewritten, but it can be decolonised.