>However, if the one true language already existed,
The one true language can't exist because we want to use a finite set of characters to express convenient programming syntax. (A previous comment about this.[0])
It might be possible to craft a single optimal language for only one particular programmer but I even doubt that limited scenario is even realistic. Consider trying to combine syntax of 2 languages that many programmers use: (1) bash (2) C Language
In bash, running an external program is a first class concept. Therefore the syntax is simple. E.g.:
gzip file.txt
rsync $HOME /backup
Basically, whatever one types at a bash command prompt is just copy-pasted into a .sh file.But in C Language, external programs are not first-class concepts so one must use a library call such as "system()":
main()
{
system("gzip file.txt");
system("rsync $HOME /backup");
}
In C, we have to type out "system("")" that surrounds each external program. We have to add the noisier syntax of semicolons after each line. It's ugly and verbose for scripting work.In the reverse example, C makes it easy to bit-shift a number using << and >>.
y = x << 3;
How would one transfer that cleanly and conveniently to bash? Bash uses a bunch of special symbols for special functions.[1] Bashes uses << >> for input output redirection. Therefore, bash would need to have noisier syntax such as "bitshiftleft(x, 3)"So, if we attempt to create a Frankenstein language called "bashclang" that combine concepts of bash and C, which set of programmers do we inconvenience with the noisier syntax?
What if we just tweaked C's parsing rules so that naked syntax to run external programs would look like bash? Well, what if you have executable binaries with names like "void", "switch"? Those are reserved names in C Language.
Same thing happens with other concepts like matrices. In Julia and Mathematica, matrices are first class. You can type them conveniently without any special decoration. But in Python, they are bolted on with a package like NumPy. So one has type type out the noiser syntax of np.full() and np.matmul().
Convenient syntax to enable easy-to-read semantics in one language leads to contradictions and ambiguity in another language.
To add to munificent's comment, I also don't see how one language can offer both garbage-collected memory and manual allocated memory using convenient concise syntax _and_ and zero-cost runtime performance-penalty for manual memory. Those two goals contradict each other. When I want to write a line-of-business type app, I just use C# with GC strings. On the other hand, when I'm writing a server-side app that's processing terabytes of data, I can use C++ with manually allocated strings with no virtualmachine runtime overhead for max performance.