31 votes

La programmation fonctionnelle doit-elle être enseignée avant la programmation impérative ?

Il me semble que la programmation fonctionnelle est une grande chose. Elle élimine l'état et rend beaucoup plus facile l'exécution automatique du code en parallèle.

De nombreux programmeurs à qui l'on a d'abord enseigné des styles de programmation impérative trouvent qu'il est très difficile d'apprendre la programmation fonctionnelle, car elle est très différente. J'ai commencé à me demander si les programmeurs à qui l'on a d'abord enseigné la programmation fonctionnelle auraient du mal à s'initier à la programmation impérative. Il semble que ce ne serait pas aussi difficile que dans l'autre sens, donc j'ai pensé que ce serait une bonne chose si plus de programmeurs apprenaient d'abord la programmation fonctionnelle.

Ma question est donc la suivante : la programmation fonctionnelle devrait-elle être enseignée à l'école avant l'impératif, et si oui, pourquoi n'est-il pas plus courant de commencer par elle ?

28voto

jalf Points 142628

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).

12voto

Scott Wisniewski Points 14420

De nombreuses écoles enseignent la programmation fonctionnelle. Certaines d'entre elles l'enseignent même en premier. Je pense que le MIT, pendant longtemps, a enseigné la programmation fonctionnelle dans ses cours d'introduction à la programmation informatique.

Dans mon école, nous avons abordé ML dans le cadre d'un "cours sur les langages de programmation comparés" que tout le monde était tenu de suivre.

En tout cas, je ne pense pas que la programmation fonctionnelle soit si difficile à apprendre pour des personnes venant de langages impératifs. En tout cas, elle ne l'était pas pour moi.

Beaucoup de gens pensent que la raison pour laquelle des langages comme Haskell et Scheme n'ont pas été plus largement adoptés est que les gens sont "ruinés" par la programmation impérative. C'est absurde.

La vraie raison pour laquelle ces langages n'ont pas été largement adoptés est qu'ils n'utilisent pas d'accolades. Sérieusement.

Le style syntaxique C/Algol est répandu parce que les gens aiment son apparence.

La clé pour accroître l'adoption de la programmation fonctionnelle n'est pas de dire combien Haskell est génial et combien les effets secondaires sont diaboliques, ni de prononcer le mot "monade" à plusieurs reprises. Au lieu de cela, il suffit de créer un langage fonctionnel qui utilise des accolades et des points-virgules. Les gens l'utiliseront.

9voto

jfclavette Points 1757

De nombreuses écoles (la plupart ?) enseignent la programmation fonctionnelle. Très peu l'enseignent en première intention, pour de nombreuses raisons.

  • La plupart des environnements de développement pour langages fonctionnels craignent, et nécessitent des connaissances approfondies en programmation pour les utiliser correctement. Ceci est de moins en moins vrai, mais nous sommes encore loin de Visual Studio pour Haskell.

  • C'est plus difficile de se lancer dans le "tape-à-l'œil". flashy". Les boîtes à outils GUI et les librairies craignent pour la plupart des langages fonctionnels. Il est important de montrer les choses à l'écran et de récompenser l'étudiant.

  • Les programmeurs autodidactes ont tendance à à graviter vers les langages impératifs/OO pour des raisons historiques. La disponibilité de BASIC dans leur jeunesse, le fait de savoir que leur jeu préféré a été écrit en C ou C++, etc.

  • Des ressources simples et des tutoriels pour les langages de programmation fonctionnels sont plus difficiles à trouver. Comparez le nombre d'échantillons de C# à celui des échantillons de Lisp sur Code Project. N'oubliez pas que Lisp est plus de 5 fois plus ancien.

5voto

chills42 Points 8260

Il pourrait s'agir d'un problème de partage des connaissances, car la plupart des enseignants/professeurs ont probablement appris les styles impératifs en premier.

De plus, je pense qu'il existe un nombre beaucoup plus important de travaux disponibles pour l'enseignement des styles impératifs.

2voto

Fusspawn Points 1171

Je ne peux que supposer que c'est le fait que OOP semblait être le mot à la mode / le style préféré, donc les écoles s'y sont tenues,

On m'a enseigné la conception OOP dès le départ, ce n'est que récemment que j'ai appris le style fonctionnel de la programmation et je peux voir qu'il a ses avantages.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X