You can paper over syntactic annoyances and semantic confusion with a mental mind-shift, and once they do, they become barriers to entry for your competitors. You can't paper over an inability to deploy your software in front of a customer. From the POV of "what's a showstopper, vs. what's an annoyance", ubiquity is the most important feature a language can have.
It has just as much to do with the tooling, community, support and adoption - again, just like natural languages.
I think the ubiquitous languages ARE the best languages because the purpose of any language, natural, computer or otherwise is to transmit information and meaning. And the ubiquitous ones are, by definition, best suited for that.
Seriously. Even if there was the goalposts would keep moving anyway as things like functional programming get more popular.
My ideal language is one that I can use as often as possible in as many different contexts as possible. JavaScript is alright for that.
There are certainly really bad languages (say, brainfuck). Once you admit that some languages are worse than others, you admit that there can be a hierachy. Of course, it's possible for the hierarchy to have a 256-way tie for first place.
I don't mean to be snarky, but the reality is that JS is the common interface available to all browsers to access internals in a consistent API. In order for anything else to come of age it would take the cooperation of at least three major browser vendors along with a decade for older deprecated versions to disappear. It's not going to happen, get over it...
JS is a pretty nice language and with sourcemaps and tooling, there are a number of other languages that target it. Evolution is happening, and fighting it is like trying to pray to your devine entity to be saved from it all.
It's internals are prototype based. The user-visible layer is essentially class-based, but lacks syntactic support for both inheritance and composition.
You have a real choice of language! You can use any language you like, and compile to JS.
Or are you going to complain that x86 CPUs provide no "real choice of language", offering only x86 assembly?
There are no optimizations missing from x86 so complaining about it is pointless.
Especially given the improvements in sandboxing having a more powerful underlying language could improve things (note that this doesn't mean it needs access to the API of the underlying OS, which is where Java got itself in trouble).
> There are no optimizations missing from x86 so complaining about it is pointless.
Not true. x86 is a high-level language and modern x86 CPUs do a lot of fancy stuff behind-the-scenes to try and make code run better.
To me, JS is one of the best languages out there. It's expressive, functional and versatile.