En fait, certaines écoles le font déjà de cette façon. Là où j'étudie (Université de Copenhague), ils enseignent SML au premier semestre, en tant qu'introduction à la programmation. Ensuite, ils enseignent Java, en tant qu'introduction à la POO.
Je pense que cela fonctionne extrêmement bien, et je suis d'accord avec vous, c'est mieux que l'inverse. La programmation fonctionnelle est assez intuitive pour quelqu'un qui n'est pas (encore) un programmeur. Elle correspond bien mieux à ce qu'on nous a enseigné en tant que maths au lycée ou avant, donc les gens qui n'ont pas encore été exposés à la programmation impérative l'assimilent généralement sans trop de problème.
En fait, les personnes qui ne connaissent pas la programmation ont tendance à choisir SML lorsqu'elles s'inscrivent. plus rapide que ceux qui ont déjà appris Java ou C++.
Il semble qu'il y ait un grand saut conceptuel pour passer de l'impératif au fonctionnel, mais l'inverse semble beaucoup plus facile pour la plupart. Les étudiants ne trouvent généralement pas Java difficile lorsqu'ils y sont exposés après avoir appris SML. Une fois que vous connaissez les concepts "purs" de la programmation, il est assez simple de coller des effets secondaires. Mais si toute votre compréhension de la programmation est basée sur les effets secondaires, il est beaucoup plus difficile d'imaginer que tout est possible sans les.
Je pense que l'un des grands avantages de cette approche est que les principes de la programmation fonctionnelle deviennent une partie essentielle de votre boîte à outils de programmation, plutôt qu'un ajout ésotérique que vous pourriez utiliser si vous voulez frimer. Même lorsque vous programmez dans des langages impératifs, je pense qu'il y a un avantage à avoir une formation dans un langage fonctionnel. Même en programmant dans quelque chose d'aussi bas niveau que le C, il y a un avantage à penser à minimiser l'état et les effets secondaires, et à être habitué au concept de fonctions d'ordre supérieur (même si elles ne sont pas disponibles dans le langage).