Parallel programming models: Why do OpenMP and MPI dominate? In a lecture on HPC parallel programming (for CPUs) we discussed various models available from Pthreads to OpenMP to MPI and others like Charm++, X10, UPC, Chapel…. The main focus was clearly on the first three. Intrigued by the topic I did some research on my own but could find sources, examples and discussions mainly for those first three. Later I discovered "AMPI" which can even run legacy MPI application with many of the benefits Charm++ offers but nobody seems to use it.

Why are the other models so neglected? Compared to the rather crude MPI alternatives like Charm++ and UPC appear more convenient as they handle a lot of the "dirty work" neatly in the background.
I will give you two main reasons why MPI and OpenMP dominate. 

The first one is that they are standards. There are several available implementations, and you can be sure to find them available on every possible supercomputer machine. This is strictly related to the concept of portability: you write your parallel code and, if you do not use anything else related to a particular machine, you can run the same code on all of the parallel machines you have available.

The second reason is the programmer's resistance. With MPI and OpenMP covering both message-passing and shared-memory parallel programming (and you can even use them simultaneously if useful and/or required) why a programmer, especially a beginner in the field, should spend his/her time learning new parallel programming languages that are not granted to become standards? Sure, as you pointed out, other languages provide some benefits but the question is, would you invest your time betting on something that may even totally disappear in the future ? Standards are here to stay. Anyway, regarding this specific point, my humble opinion is that, if possible, one should instead spend some time on different languages (not just those one for parallel programming) because this is a useful discipline and learning different paradigms is always beneficial. However, when reading your curriculum vitae for possible hiring, the people that can hire you for a position will be in general mostly interested to your knowledge of the standards, not to your knowledge of niche languages (in general, even though there could be exceptions of course).