Si alguien realmente supiera, serían personas muy ricas.
Dicho esto, aquí está mi conjetura:
Disponibilidad
BASIC es un lenguaje muy pequeño que viene 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 doméstica súper barata) vinieron con BASIC.
Si tenías una máquina UNIX (ya sea AT & T system V o Berkeley's) tenías C. Si querías programar la máquina, eso es lo que tenías que usar.
EDIT : con el advenimiento y la ubicuidad de 'net, este requisito se transforma en:
- ¿Cuántas distribuciones de Linux empaquetan una copia reciente y qué tan bien las mantienen actualizadas? ¿Las bibliotecas de terceros están disponibles de forma similar para su instalación?
- ¿Se instala fácilmente en Windows (XP | Vista | 7,8 ...)?
- ¿Están cubiertas las plataformas Mac / iOS?
- ¿Se puede instalar sin problemas en Unix heredado?
- Y una vez instalado, ¿qué tan fácil es acceder a bibliotecas de terceros, y se puede actualizar fácilmente?
Facilidad de transición
Java es un buen ejemplo aquí. Si conocías la programación en C, Java no era un gran avance y, sin embargo, proporcionaba muchas de las características que a C le faltaban y que C ++ no podía proporcionar de forma limpia.
C ++ por razones obvias fue un paso adelante de C, y fue fácil de vender a la administración como una "C mejorada". C ++ tuvo el beneficio adicional de ser compatible con versiones anteriores con gran parte de la base de código C existente. / p>
Perl fue una amalgama de C, awk, sed y otras utilidades Unix en un solo paquete. Antes de su aparición, la mayoría de la administración del sistema se realizaba a través de scripts de shell que pegaban todo de una manera insatisfactoria. Poner todo bajo un solo proceso con las estructuras de datos y el control de un lenguaje tipo C fue una bendición.
Llena una necesidad
C despegó porque le permitió 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ó la fácil traducción de las ideas matemáticas al código sin tener que perderse en los detalles de la máquina.
Igualmente para LISP y manipulación simbólica.
Python surgió de la necesidad de un "mejor" Perl. (Estoy predispuesto aquí, así que no diré más).
PHP fue esencialmente el BÁSICO para la web: se instaló de forma predeterminada en muchos servidores web y fue fácil de hackear algo útil rápidamente.
Defensa, Base de usuarios, Código contribuido
Seamos realistas, Haskell no sería tan popular como 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 lenguaje, y todos sabemos quiénes son.
FORTRAN tiene grandes conjuntos de códigos matemáticos establecidos y examinados; lo mismo para Java y la web / sistemas-integración / MVC-sistemas; lo mismo para Perl y CPAN; lo mismo para T E X y gestión de documentos; etc.
El It Factor
Por alguna razón, algunos idiomas parecen tener la cantidad correcta de nuevo , con suficiente aprobación para el antiguo , de una manera que hace que parezca fácil o necesario. Es decir, tiene 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 sea por eso que fallaron.