Se alguém realmente soubesse, seriam pessoas muito ricas.
Dito isto, aqui está o meu palpite:
Disponibilidade
O BASIC é uma linguagem horrível que veio com (todos?) PCs quando foram lançados. O Apple II (o computador padrão para muitas escolas de ensino médio) e o ATARI 400/800 (o primeiro computador doméstico super barato) vieram com o BASIC.
Se você possuía uma máquina UNIX (sistema AT&T V ou Berkeley), possuía C. Se você queria programar a máquina, era isso que precisava usar.
EDIT : Com o advento e a onipresença da 'net', este requisito se transforma em:
- Quantas distribuições Linux empacotam uma cópia recente e quão bem elas a mantêm atualizada? As bibliotecas de terceiros estão igualmente disponíveis para instalação?
- É facilmente instalado no Windows (XP | Vista | 7,8 ...)?
- As plataformas Mac / iOS são cobertas?
- Pode ser instalado sem incômodo no Unix legado?
- E, uma vez instalado, quão fácil é acessar as bibliotecas de terceiros e pode ser atualizado facilmente?
Facilidade de transição
Java é um bom exemplo aqui. Se você conhecia a programação C, o Java não estava muito longe, e ainda assim fornecia muitos dos recursos que faltavam ao C e o C ++ falhou ao fornecer de maneira limpa.
O C ++, por razões óbvias, foi um passo fácil em relação ao C e foi fácil vender para o gerenciamento como um C. "aprimorado". O C ++ teve o benefício adicional de ser compatível com versões anteriores de grande parte da base de código C herdada existente.
Perl era uma amálgama de utilitários C, awk, sed e outros utilitários Unix, tudo em um único pacote. Antes de sua aparência, a maior parte da administração do sistema era feita por meio de scripts de shell colando tudo de uma maneira insatisfatória. Trazer tudo sob um processo com as estruturas de dados e o controle de uma linguagem C foi uma dádiva de Deus.
Preenche uma necessidade
C decolou porque lhe permitiu produzir eficiências próximas à montagem sem se atolar no mundo específico da máquina, difícil de manter.
O FORTRAN decolou porque permitiu a tradução fácil de idéias matemáticas em código sem ter que se perder nos detalhes da máquina.
Da mesma forma para LISP e manipulação simbólica.
O Python surgiu da necessidade de um Perl "melhor". (Sou tendencioso aqui, então não direi mais.)
O PHP era essencialmente o BASIC para a Web - ele era instalado por padrão em muitos servidores da Web e era fácil juntar algo útil rapidamente.
Advocacia, Base de usuários, Código contribuído
Vamos ser sinceros, Haskell não seria tão popular quanto em uma linguagem que não está em produção se não fosse pela incansável defesa de seus desenvolvedores e base de usuários.
Muitos idiomas têm um culto à personalidade por trás dos criadores do idioma, e todos sabemos quem eles são.
O FORTRAN possui enormes conjuntos de códigos matemáticos estabelecidos e aprovados; o mesmo para Java e web / systems-integration / MVC-systems; o mesmo para Perl e CPAN; o mesmo para T E X e gerenciamento de documentos; etc.
O É Fator
Por alguma razão, algumas línguas parecem ter a quantidade certa de novas , com um aceno suficiente para as antigas , de uma maneira que a faz parecer fácil ou necessária. Ou seja, faz seu próprio caso. E quem sabe exatamente como isso acontece?
Enfim, esse é o meu melhor palpite sobre por que alguns conseguem. Quanto ao motivo pelo qual alguns não ... bem, se eles não atendem aos critérios acima, provavelmente é por isso que falharam.