Pour revenir vers le sujet, j'aimerais apporter une réponse peut-être surprenante au premier abord. Pourquoi a t-on autant de langages ? Pour la même raison que l'on a autant de systèmes d'exploitation et autant d'éditeurs de texte : parce que c'est possible.
Je veux dire par là que n'importe qui (ayant des connaissances suffisantes, mais c'est plus facile qu'on ne le croit) peut créer un langage de programmation. Du coup, les gens ne se privent pas — que ce soit pour le défi, pour s'amuser, ou bien pour obtenir un langage qui correspond exactement à ses propres attentes. Ainsi, le C et le Forth (entre autres) ont été conçus par des personnes qui avaient un besoin particulier, et aucun langage qui le satisfaisait sous la main. Si je ne m'abuse, le OCaml était à la base une expérimentation pour essayer de nouvelles techniques de compilation et de nouvelles fonctionnalités pour les langages. Java était initialement pensé pour attirer les programmeurs C++ vers des langages semblables au Lisp. Le Lisp, d'ailleurs, était un langage théorique : il servait à représenter des objets mathématiques, pas a programmer. Ça n'est que par accident que l'on a implémenté un compilateur (d'ailleurs, John MacCarthy, le concepteur du langage, pensait au départ qu'il était impossible d'implémenter ce langage sur un ordinateur !). D'autres langages, comme le C#, le Basic et l'objective C, ont été créés ou récupérés par des entreprises pour faire partie de leur stratégie commerciale.
Bref, la liste est longue.
Ce qu'il faut retenir, c'est qu'il n'y a pas de Grand Conseil des Langages de Programmation, qui décide quels sont les langages qui existent. Les gens ne se concertent pas entre eux, chacun fait son truc dans son coin. Il doit exister des milliers — peut-être même des millions — de langages de programmation qui ne sont jamais sortis du disque dur de leur concepteur. J'en ai une demi-douzaine rien que sur ma machine. Les gens les implémentent pour apprendre, pour le fun, pour le défi, ou par besoin — chacun a ses raisons. Ensuite, la loi de l'offre et de la demande (ou la sélection naturelle, comme tu veux) fait le reste : dans certains cas, une communauté se crée et fait vivre le langage.
En outre, si tu étudies la conception de langages de programmation et la compilation, tu commenceras rapidement à penser : « hey, mais je peux améliorer ça ! » lorsque tu apprendras un nouveau langage. La conception de langages est comme un art, et les langages existants des œuvres. Tu commenceras à voir les avantages et les défauts de chacun, y compris d'un point de vue théorique, et tu auras rapidement envie d'essayer de faire le tien.
On peut voir les choses autrement. Il y a un débat fondamental qui est : « qu'est-ce que la programmation ? ». Tu peux considérer chaque langage comme l'expression d'un point de vue vis-à-vis de cette question. Ainsi, je prétends que Dennis Ritchie (concepteur du C) et John MacCarthy (concepteur du Lisp) avaient des vues assez différentes — quoique pas diamétralement opposées — sur cette problématique. Si tu t'intéresses à cette question, tu te documenteras et tu te forgeras ta propre opinion à ce sujet ; concrétiser cette opinion sous forme de langage de programmation, avec un compilateur et tout, est un excellent moyen de confronter ton idée avec la réalité.
Comme je l'indiquais en début de mon message, on pourrait faire une réponse similaire sur la question : « pourquoi y a t-il plusieurs éditeurs de textes ? Systèmes d'exploitations ? Marques de céréales ? » etc. etc.