I have been thinking that we do have it all backwards, so let me start
from the distant past and refer to something that seems to have been
totally overlooked in this discussion, namely the fable of the Tower
of Babel (I seem to recall you'll find it in Genesis, in the Bible's
Old Testament - there's always Wikipedia, I have no doubt).
Here at the Southern tip of Africa, we are cursed with eleven official
"languages" although all conversations around language (and there have
been some significant, in my opinion quite misguided decisions in the
recent past) of course occur in English.
Now, my thinking went like this: we write code for computers in a
notation (the use of the word "language" adds to the confusion)
intended to be a middle ground between our own natural language and
the instruction set of a particular target computer. In our efforts to
address as wide a computer selection as possible (portability), we
have made great strides in developing the notation, but we have had
minimal success in persuading the engineers designing computers to
approach an understanding of computation needs (I could go off on a
tangent here and rant about Intel, but I clearly don't need to).
What counts is that the problem should be tackled differently: our
notation needs a different perspective to evolve into a useful tool
and our "compilers" also need a different target.
Let me offer this to start the conversation: we need compilers that
translate code into natural language. And we need what our very own
Rob Pike named "idioms"
(
https://en.wikipedia.org/wiki/The_Practice_of_Programming) to make
this possible.
As more than just an example, we need to express the Go runtime
library as an "implementation" of Donald Knuth's "Art of Computer
Programming" (and obviously considerably more) so that the compiler
(perhaps by some other name) can translate any invocation of, say, a
sort function into a localised idiom (freshly minted, if necessary)
for the reading benefit of the human (or android) that is reading,
analysing, the code.
Once we have inverted the role of the "compiler" like this, the
problem of a multitude of natural languages is solved: after all, Go
shows clearly that portability is neither difficult nor onerous (that,
to me, is the most important aspect of Go: I develop on my Plan 9
system and deploy more or less where I need to: Linux, NetBSD, Window
and OS-X, not quite IOS or Android, yet, sadly).
So, because I know I don't express myself clearly, do bear with me: my
wish for Go2 (more probably a later version of Go or not Go at all -
and I know that I share my admiration with "significant" others here
for APL - another story, relevant indeed) is that it should be
intended to be as agnostic as possible both towards natural language
and towards instruction sets and the algorithms implemented in such
instruction sets and that it should be possible to represent (rather
than translate) computer programs and even only code snippets into
accepted natural language descriptions, drawing on a dictionary of
idioms.
Once we have a notation that is sufficiently advanced to be able to do
this and we have cooperation in the creation and acceptance of a
growing encyclopedia of idioms readily expressed in such a notation,
the relevance of a CPU or even GPU instruction set becomes purely an
engineering task, rather than the political one that lead to Meltdown
and Spectre.
Of course, I do not have a sufficiently deep educational background in
Computer Science to support my suggestions, but I would certainly like
to have a reasonable conversations with anyone who feels this subject
can be taken further.
I apologise to anybody who may arrive at this point and feel I have
merely teased them without delivering any interesting insights.
Programming notations have been my pet subject since computing entered
my life officially in 1974, but I have mixed my hobby up with my
career as an IT general practitioner and I have been both unwilling
and unable to pursue this at an academic level. Please be patient with
my lack of a deeper understanding.
Lucio.
Lucio De Re
2 Piet Retief St
Kestell (Eastern Free State)
9860 South Africa
Ph.:
+27 58 653 1433
Cell:
+27 83 251 5824
FAX:
+27 58 653 1435