Si alguien realmente lo supiera, serían personas muy ricas.
Dicho esto, aquí está mi suposición:
Disponibilidad
BASIC es un lenguaje pequeño y horrible que vino con (¿todos?) PC cuando salieron por primera vez. La Apple II (la computadora predeterminada para muchas escuelas secundarias) y la ATARI 400/800 (la primera computadora hogareña súper barata) vienen con BASIC.
Si tenía una máquina UNIX (AT&T system V o Berkeley's) tenía C. Si quería programar la máquina, eso era lo que tenía que usar.
EDITAR : con el advenimiento y la ubicuidad de la red, este requisito se transforma en:
- ¿Cuántas distribuciones de Linux empaquetan una copia reciente y qué tan bien la mantienen actualizada? ¿Las bibliotecas de terceros están igualmente disponibles para la instalación?
- ¿Se instala fácilmente en Windows (XP | Vista | 7,8 ...)?
- ¿Están cubiertas las plataformas Mac / iOS?
- ¿Se puede instalar sin molestias en Unix heredado?
- Y una vez instalado, ¿qué tan fácil es acceder a bibliotecas de terceros? ¿Se puede actualizar fácilmente?
Facilidad de transición
Java es un buen ejemplo aquí. Si conocía la programación en C, Java no estaba muy lejos y, sin embargo, le dio muchas de las características que C carecía y C ++ no pudo proporcionar de manera limpia.
C ++ por razones obvias fue un paso fácil hacia adelante desde C, y fue fácil de vender a la administración como un C. "mejorado". C ++ tenía el beneficio adicional de ser compatible con versiones anteriores de gran parte de la base de código C existente.
Perl fue una fusión de C, awk, sed y otras utilidades de Unix, todo en un solo paquete. Antes de su aparición, la mayoría de la administración del sistema se realizaba mediante scripts de shell que pegaban todo de manera insatisfactoria. Poner todo bajo un solo proceso con las estructuras de datos y el control de un lenguaje tipo C fue un regalo del cielo.
Llena una necesidad
C despegó porque le permitía producir eficiencias cercanas al ensamblaje sin atascarse en el mundo del ensamblaje específico de la máquina, difícil de mantener.
FORTRAN despegó porque permitió una fácil traducción de ideas matemáticas en código sin tener que perderse en los detalles de la máquina.
Asimismo para LISP y manipulación simbólica.
Python surgió de la necesidad de un "mejor" Perl. (Soy parcial, así que no diré más).
PHP era esencialmente el BASIC para la web: se instaló de manera predeterminada en muchos servidores web y fue fácil hackear algo útil rápidamente.
Abogacía, base de usuarios, código contribuido
Seamos realistas, Haskell no sería tan popular como lo es para un lenguaje que no está en producción si no fuera por la incansable defensa de sus desarrolladores y su base de usuarios.
Muchos idiomas tienen un culto a la personalidad detrás de los creadores del idioma, y todos sabemos quiénes son.
FORTRAN tiene enormes conjuntos de códigos matemáticos establecidos y examinados; lo mismo para Java y los sistemas web / integración de sistemas / MVC; lo mismo para Perl y CPAN; lo mismo para T E X y la gestión de documentos; etc.
El factor it
Por alguna razón, algunos idiomas parecen tener la cantidad correcta de novedades , con un guiño suficiente al antiguo , de una manera que hace que parezca fácil o necesario. Es decir, hace su propio caso. ¿Y quién sabe cómo sucede esto?
De todos modos, esa es mi mejor suposición de por qué algunos lo logran. En cuanto a por qué algunos no ... bueno, si no cumplen con los criterios anteriores, probablemente es por eso que fallaron.