$\begingroup$

TL;DR It is not impossible, but I pretty much doubt it.

There are already good answers, but I wanted to add a slightly different point of view.

First, spoken languages are NOT a good analogy for programming languages. Indeed, in their nature they differ considerably. Excepting the conlang, the spoken languages are the results of centuries of evolution. Separation increased the difference, but communication tends to bring them more homogeneous. The main idea is to communicate with each other, to understand each other and exchange (or do business). Nevertheless, those languages are spoken by many speakers, and no-one or no-body actually control the evolution of the language. Even bodies like the French Académie Française merely reflects the evolution of the language, a posteriori. There isn't any reflection on "best" or "more efficient".

IMO, there will be an ever converging use of "English" as a communication language, but even this will diverge from the actual English. And I also doubt the other languages will completely disappear due to the inertia, mentioned by Wiliam Kappler.

At the other side, programming languages are discussed by collaborations, which sets standards. The most well known is the ANSI for C. But most of the languages have a group of people involve in deciding on the evolution of the language. It changes completely the nature of the evolution of programming languages compared to spoken languages.

Now, could those be merged? I would say it is not impossible. If you look back 10-15 years ago, few would have imagined how much a language like Java would spread. Indeed its size, performance, compilation time was considerably worse than, say C++. But since then, the language, the JVM and compilers have considerably improved. And furthermore, the progress in computers mean that a few more MB here or there, and execution difference are barely noticeable in most of the user's experience.

In microcontroller, there is a trend to adapt more and more ARM-architecture. Which seems to indicate a merging of the hardware. And if we see the OS war for mobile applications: e.g. Microsoft coming back to ARM, or tablets, smartphones, etc. If they manage to actually have a single OS running on all systems, that would facilitate a uniformisation of programming languages. As the price of the memory reduces, there will be less incentive to actually use low-memory solutions, allowing applications of bigger OSes (see how "low" the Linux gets through Embedded-Linux).

However, I see four arguments against it.

As the other answers point out, programming languages tend to be specialised in niche. I could see a few axes to differentiate languages

accessibility: how easy is it to learn the language/read a program?

efficiency: that is already three-fold: size of the bin, amount of RAM and speed

functionality: what can we do with the language?

portability: what is the scope where it can be implemented? How easy is it to reach our customers?

And there are probably a few more. Now, the only way to get the languages unified, is to get a language to be the best in all those axes. Just to give some illustration,

ruby is easy to read and to learn, but not particularly efficient,

Java is widely implemented, but too large/complex for embedded systems,

C can be very efficient, but hard to learn (comparatively).

Due to these different axes and the specialisation that we observe today, it is doubtful that one of the language evolves to dominate the others.

We also have to consider the inertia of change. Programming languages have been born in a fully connected world (amongst their users). Therefore more communication will not modify their course (as for the spoken languages). Most of the users are reluctant to learn new ones, and often wait until the last moment to resort to learn something new. But "natural selection" could play here, favouring those who do. But together with the programmers, the inertia of programming languages is written in their code. In many research domain, Fortran is the language of choice (I have even seen code in F77), although 1) research is often aware of the new tools, and 2) some would argue Fortran is a deceased language. But why? Because a huge amount of code was implemented in those Fortran! And it would be a huge effort, and would probably prove impossible to translate all of it to another language (the original writers being unavailable, hard to check the science behind). The same goes for other large code: no-one is likely to rewrite the Linux Kernel. You need to implement compatible languages. But even then, that means that the "old" language still needs to be kept up to date.

The effect of the anarcho-liberalism of programming and Internet. It can be well seen with the numerous forks on FOSS: if someone disagree with a decision on the new standard, she is likely to either stick to the old, or create an alternative. Much like, as pointed out by Wiliam, many current languages derived from C. And if we could rely on the last 30 years or so, we see that the number of applications of programming languages explodes, most of the languages evolves, some appear as derivation of those, others as new concepts (rarely). But older standards are still being used today. So there is a multiplication and diversification of languages. It is hard to imagine that this trend would reverse.

Last of four points, the irrationality of the actors of the sector, a.k.a. programmers. New languages are implemented for the sake of irrational factors: Whitespace being a perfect example. Some people will defend the elegance, the poesy, etc. of their languages. This create some of the famous internet flame wars. I suggest you look "C++ vs Java" up. Take some bandage along. New users often side along one of the sides. As we have seen in the famous infamous emacs vs vim war.

To conclude, I would say that I can see a scenario where HW memory becomes cheap, HW architecture becomes limited to a few (X86, ARM) and that one OS is predominant on all of those. A new language appears that is the best or almost the best on all of the axes above. Then, given enough time, the other languages might die out.

But really, the easiest would probably to get an evil-genius dictator taking control of the world and forbidding any language other than assembler. Because who needs anything else?