Je commence par un lien qui reprend assez bien tous les points que j'ai pu soulever dans mes pages enseignements, ici. Notez le transparent "langages" qui décrit le besoin d'avoir dans ses compétences des langages impératif, OO, et fonctionnel. OCaml n'est pas cité, bien qu'il pourrait se caser dans les trois catégories. Je note aussi l'oubli d'un langage orienté programmation parallèle/distribuée, et un langage de programmation par contraintes, mais ces deux derniers correspondent à des besoins plus spécifiques, alors que les trois premiers correspondent plutôt à des techniques de génie logiciel.
Bref, le but ultime pour un programmeur, ce n'est pas de programmer, c'est d'avoir une maîtrise d'un problème si grande qu'on l'a déjà résolu avant d'implémenter la solution. Autant dire, déjà, qu'espérer que le code va venir tout seul si on y réfléchit suffisamment longtemps en face du terminal, sans coucher sur le papier ses réflexions, relève d'une jolie utopie. De plus, la solution d'un problème est indépendante d'un langage donné. Certains problèmes se résolvent mieux en orienté-objet, d'autres de manière fonctionnelle, mais cela ne dépend pas du langage qu'on utilise au final : cela dépend de la nature de problème lui-même. Autant dire, donc, que n'avoir qu'un seul langage à disposition rendra certains problèmes plus difficiles à résoudre. De plus, si on n'a appris qu'un seul langage, résoudre des problèmes étant typiques d'autres classes de langages sera plus difficile, puisque la solution ne viendra pas aussi naturellement.
Pire encore, qui ne connaît qu'un seul langage, est condamné à réimplémenter les techniques naturelles d'autres langages. Ça arrive aussi quand on connaît d'autres langages mais qu'on est contraint à en utiliser un inadapté : je me surprends à faire du fonctionnel en C, par exemple.
Bref, tout ça pour dire que se prendre la tête sur des langages aux syntaxes non-naturelles au début, avec des concepts inhabituels, est un mal souhaitable et nécessaire : c'est ce qui permet de s'abstraire de la syntaxe et de s'intéresser à ces concepts pour pouvoir analyser plus de problèmes de manière plus efficace. Une fois qu'on a appris sérieusement 3-4 nouveaux langages, les suivants deviennent de plus en plus facile à appréhender, qui plus est.