"A predominância do JavaScript é um acidente histórico ou algo mais?"
Pessoalmente, sou da opinião de que o sucesso de JS é uma questão de design, tanto quanto muitos foram e continuará a ser odioso em admiti-lo e não apenas por um acidente ou simplesmente pelo fato de ter sido o primeiro garoto no playground.
Embora nomeado para atrair desenvolvedores Java e sintaxe como a sintaxe C baseada em Java também para atrair desenvolvedores Java, Brendan Eich tomou uma das decisões mais duras da história do www, que foi extraída principalmente do Scheme para a mecânica de linguagem real inspiração, algo que os desenvolvedores Java não parecem ter gostado muito (o que acho muito divertido).
O JavaScript usa herança prototípica altamente flexível / granular para OOP, possui fechamentos, tipos são 100% dinâmicos, funções são de primeira classe, permitindo que sejam transmitidos como qualquer outro objeto ou tipo de dados e sejam reutilizados em diferentes contextos e até são aplicados a objetos em tempo real como se tivessem sido declarados como membros reais do objeto desde o início. É praticamente lamentável ser usado para arquiteturas orientadas a eventos que precisam normalizar uma tonelada de lixo proprietário ou lidar com problemas de interface do usuário altamente não lineares.
No final dos primórdios da web, é o único idioma que já foi seriamente responsável pela normalização de navegadores por meio de uma guerra real de navegadores em que o Netscape e o IE tentaram fazer as coisas de maneira diferente de propósito, seguidos por mais de 10 anos de navegador. trégua em que o IE fez as coisas de maneira diferente porque o MS é preguiçoso e auto-arraigado em algumas práticas anticompetitivas justamente estúpidas, resultando em estagnação do navegador, e agora em um mundo em que os navegadores estão finalmente começando a concordar com a mesma especificação geral em relação ao HTML, O CSS e a API DOM com o IE estão apenas 2-3 anos atrás dos desenvolvimentos mais recentes, em vez de 10, devido ao Google e Mozilla eliminarem os compiladores JIT que faziam com que os números de desempenho do IE parecessem tão patéticos. O MS finalmente se envergonhou de modernizar adequadamente seus malditos navegadores.O IE9 é o primeiro a realmente atualizar seriamente o suporte à API do DOM para níveis que o Netscape estava suportando em 2000.
JS teve concorrência na forma de Java Applets e do ActionScript for Flash da Adobe. É sobre isso na frente séria dos contendores. MS tentou empurrar VB, mas falhou miseravelmente porque ... bem ... VB. Além disso, proprietário. Na verdade, havia muito mais sites em Flash do que a maioria das pessoas imagina. Você simplesmente não conseguia encontrar as coisas tolas nos mecanismos de pesquisa. Applets fizeram suas próprias coisas, e foi feio. Muito feio. JS foi a única linguagem que realmente resolveu o problema de trabalhar no contexto de vários navegadores por pessoas que não concordavam com quem estava definindo as especificações com as quais eles deveriam estar combinando.
Nos últimos anos, o JS tem explodido em um domínio de aplicação muito mais amplo. Em combinação com outras tecnologias da Web, ele é preparado para basicamente derrubar todas as outras soluções na frente móvel, uma vez que a tecnologia + web é realmente a única opção realista no momento, se você realmente deseja escrever um aplicativo e fazê-lo funcionar em tudo.
Então não, e sim, sou um grande fã, mas não acho que tenha derrotado todos os outros concorrentes no lado do cliente por acidente, assim como se tornar explosivamente popular fora do navegador, pode ser considerado um acidente agora. Antes do JS, não havia muitas linguagens semelhantes a Scheme por aí que não eram principalmente acadêmicas. Isso deu à JS algumas vantagens poderosas e as necessidades exclusivas do lado do cliente tornaram possível que essas vantagens se tornassem cristalinas lentamente.