Si quelqu'un savait vraiment, ce serait des gens très riches.
Cela dit, voici ma supposition:
Disponibilité
BASIC est un petit langage affreux fourni avec (tous?) Les PC lors de leur première sortie. L'Apple II (l'ordinateur par défaut de nombreuses écoles secondaires) et l'ATARI 400/800 (le premier ordinateur domestique super bon marché) sont tous deux fournis avec BASIC.
Si vous aviez une machine UNIX (AT&T system V ou Berkeley's), vous aviez C. Si vous vouliez programmer la machine, c'est ce que vous deviez utiliser.
EDIT : Avec l'avènement et l'omniprésence du «net», cette exigence se transforme en:
- Combien de distributions Linux emballent une copie récente et dans quelle mesure la tiennent-elles à jour? Des bibliothèques tierces sont-elles également disponibles pour l'installation?
- Est-il facile à installer sous Windows (XP | Vista | 7,8 ...)?
- Les plates-formes Mac / iOS sont-elles couvertes?
- Peut-il être installé sans nuisance sur Unix hérité?
- Et une fois installé, est-il facile d'accéder à des bibliothèques tierces et peut-il être mis à niveau facilement?
Facilité de transition
Java est un bon exemple ici. Si vous connaissiez la programmation C, Java n'était pas un pas en avant très important, et pourtant il offrait de nombreuses fonctionnalités qui manquaient à C et que C ++ n'a pas pu fournir proprement.
C ++ pour des raisons évidentes était un pas en avant facile par rapport à C, et il était facile de le vendre à la direction en tant que C. «amélioré». C ++ avait l'avantage supplémentaire d'être rétrocompatible avec une grande partie de la base de code C existante.
Perl était une fusion de C, awk, sed et d'autres utilitaires Unix dans un seul paquet. Avant son apparition, la plupart de l'administration du système se faisait par le biais de scripts shell collant tout ensemble de manière insatisfaisante. Rassembler tout sous un même processus avec les structures de données et le contrôle d'un langage de type C était une aubaine.
Répond à un besoin
C a décollé car il vous a permis de produire des rendements proches de l'assemblage sans vous enliser dans le monde de l'assemblage spécifique à la machine, difficile à maintenir.
FORTRAN a décollé car il a permis de traduire facilement des idées mathématiques en code sans avoir à se perdre dans les détails de la machine.
De même pour LISP et la manipulation symbolique.
Python est né du besoin d'un "meilleur" Perl. (Je suis biaisé ici, donc je n'en dirai pas plus.)
PHP était essentiellement le BASIC pour le Web - il était installé par défaut sur de nombreux serveurs Web, et il était facile de pirater rapidement quelque chose d'utile.
Plaidoyer, base d'utilisateurs, code contributif
Avouons-le, Haskell ne serait nulle part aussi populaire qu'il l'est pour un langage non en cours de production sans le plaidoyer infatigable de ses développeurs et de sa base d'utilisateurs.
De nombreuses langues ont un culte de la personnalité derrière le (s) créateur (s) de la langue, et nous savons tous qui elles sont.
FORTRAN possède d'énormes ensembles de codes mathématiques établis et approuvés; idem pour Java et les systèmes web / intégration de systèmes / MVC; idem pour Perl et CPAN; idem pour T E X et la gestion des documents; etc.
Le Il facteur
Pour une raison quelconque, certaines langues semblent simplement avoir la bonne quantité de nouvelles , avec suffisamment de clin d'œil à l' ancienne , avec une manière qui semble facile ou nécessaire. Autrement dit, il fait son propre cas. Et qui sait exactement comment cela se produit?
Quoi qu'il en soit, c'est ma meilleure estimation de la raison pour laquelle certains le font. Quant à savoir pourquoi certains ne le font pas ... eh bien, s'ils ne répondent pas aux critères ci-dessus, c'est probablement pourquoi ils ont échoué.