Je rejoins entièrement, Nikko, il n'y a pas de mauvais langage; il n'y a que de mauvais langage par rapport à un problême précis (et eventuellement de mauvais programmeurs).
Par exemple, on peut critiquer le C++ autant qu'on le veut (langage peu cohérent, systeme de template tordu, héritage douteux lorque le programme est écrit par plusieurs programmeurs...) et pourtant c'est un des langages clef de la programmation systeme.
Autre exemple, caml et haskell sont des langages fonctionnels fabuleux.
Mais ce ne sont pas toujours des langages adaptés.
Si je dois écrire demain des drivers pour un matos que j'ai fabriqué dans la nuit (lol), je n'utiliserais certainement pas ces langages là, qui ne me permettent pas d'avoir une vision de suffisamment bas niveau pour appréhender convenablement mon matériel.
Lorsque je m'attaque à un projet, je commence par cerner les "potentiels candidats", puis je les élimine au fur et à mesure jusqu'à garder celui (ou ceux à la rigueur si j'accepte de l'interconnexion de morceaux de code écrits dans des langages différents) qui me convient le mieux.
Il est absurde de faire l'inverse : "je ne connais QUE ce langage là, donc je vais modifier le projet pour qu'il soit facilement réalisable avec ce langage" est un paradigme de programmation asser étrange.
D'où l'interet de connaitre plusieurs langages, de styles et de domaines d'applications différents.