Hey

,
Chaque
vrai langage est créé pour répondre à un problème. Je l'ai dit, je le redis, et je le redirai autant de fois qu'il le faut.
Le C rencontre beaucoup de succès car il répond à un réel besoin : celui de faire du bas-niveau de manière très fine (gestion de la mémoire, des processus etc.).
PHP rencontre beaucoup de succès car il répond à un réel besoin : celui de faire du Web.
Après, on a des langages qui ne servent à rien du tout. Désolé, mais je vais taper sur Ruby. Qu'est-ce que Ruby apporte de plus que PHP ? Il veut faire la même chose, mais n'apporte pas radicalement un plus. Juste une pâle copie (je ne parle pas des fonctions ou de l'objets, mais de ce qu'on peut faire avec et de la manière dont on le fait).
Je parle
de problème et de langage car il faut voir les choses de cette façon :
On a un compilateur à faire par exemple. On peut le faire en PHP, en C, en Scheme, en Caml, en Skonveu (langage suèdois). Soyons objectif un minimum : PHP n'a pas été créé pour ce genre d'utilisteur, il n'est pas adapté ; C pourquoi pas, mais il ne sert pas à ça non plus, même s'il est rapide, le développement d'un compilateur va être très long ; Scheme est magnifique mais n'a pas été conçu pour ça non plus ; Caml, ah tiens, on dirait que le langage a été spécialement conçu pour répondre à ce genre de problème, bah on le choisit.
Je prends une expérience personnelle que j'ai déjà cité sur PHPFrance. J'ai réalisé un projet qui devait mettre en place un système de test. Sous sa forme originelle, la rédaction du test pouvait prendre 50 lignes de code. J'ai inventé un langage (Praspel) qui réduisait ça à 4 ou 5 lignes.
J'ai déjà réfléchi au problème, ensuite à comment le résoudre, et j'ai ajouté un langage par dessus.
On pourrait parler de
la puissance et de l'expressivité des syntaxes car c'est extrêmement intéressant.
Un langage c'est avant-tout (et j'insiste sur ça) une syntaxe.
Quand Sékil' dit qu'apprendre un langage est totalement bidon, c'est plus qu'évident. Il suffit d'apprendre une syntaxe, c'est tout. Par contre, comprendre comment utiliser le langage à bon escient, c'est une autre paire de manche.
Il y a
différent niveau de compréhension d'un langage.
Soit on apprend juste sa syntaxe, mais ça ne nous avance à rien du tout.
Soit on apprend comment l'utiliser, on apprend l'API et on fait mumuse avec.
Soit on apprend ce qu'il y a derrière le langage, comment il fonctionne, comment il est conçu.
Quand on a compris à quel problème répond le langage et comment il fonctionne, on peut faire ce qu'on veut avec (dans les limites de ses compétences) sans forcément passer des jours dans la doc API ou sur des forums.
Je veux dire, je prends encore un exemple.
Pendant 2 ans, j'ai eu des cours de Logique et Déduction (base des preuves Mathématiques et tests entre autre). On a tout fait sur papier avec des Maths, et un jour, on a découvert Caml. Ah bah tiens, le langage a été conçu justement pour répondre à ce genre de problème. On y retrouve nos petits : langage fonctionnel (puis objet avec OCaml), du lambda-calcul, de l'inférence de type etc. Ok, donc on comprend très rapidement comment fonctionne ce langage. On regarde sa syntaxe, ah bah tiens, elle est identique aux syntaxes Mathématiques qu'on a utilisé. Bah en 30mn, on a déjà réalisé un solveur d'équations logiques. Le programme est très performant et n'a rien d'amateur.
Tous les langages que je connais, je les connais car j'ai du les utiliser pour répondre à un problème. Sinon, je n'irais jamais les voir, je n'en ai pas l'utilité.
Et dans ce beau petit monde, oui, il y a des langages qui sont juste de vastes blagues et qui ne servent à rien. Il y a aussi des langages qui servent à tout, et du coup, ils font tout mal. Mais c'est une autre histoire.
Un langage est un outil. L'ordinateur est lui-même un outil, il ne faut pas l'oublier.
Compter le nombre de langages que l'on connaît n'a strictement aucun intérêt et montre que la personne n'a rien compris à l'Informatique. Il n'est pas question de connaître des langages mais de répondre à des problèmes. Il ne faut pas non plus apprendre un langage pour l'apprendre. Si on n'a pas de réels problèmes à résoudre, on ne comprendra pas toujours le but du langage (ce qui est d'autant plus vrai avec des langages particuliers, comprendre peu communs).