Pourquoi utiliser (aussi) des langages fonctionnels au lycée ?
Guillaume Connan - IREM de Nantes
10 mai 2009
Résumé L’algorithmique fait une entrée remarquée dans le nouveau pro-
gramme de Seconde. Il y est fait clairement mention de l’apprentissage de
l’affectation, des entrées-sorties et des boucles comme allant de soi, ce qui
sous-entend que seule existe la programmation impérative. Cependant la
programmation fonctionnelle est une alternative très proche des mathéma-
tiques et de leur enseignement dans le secondaire. Nous verrons dans quelle
mesure l’enseignement de l’algorithmique via les langages fonctionnels peut
parfois être moins perturbante pour l’élève et le professeur n’ayant pas reçu
de formation récente en algorithmique.
1 Programmation impérative / Programmation fonctionnelle
1.1 Conventions
L’objet de cet article n’est pas d’envisager ces deux modes de programmation avec le point de vue de l’informaticien
cherchant la méthode la plus rapide mais avec celui d’un professeur de mathématiques s’adressant à des élèves
débutants dans ce domaine 1.
Pour beaucoup de professeurs, c’est un sujet oublié voire nouveau : il n’y aura pas de stages pendant l’été ni de livres
à la rentrée. L’urgence est donc à la formation des enseignants. Ce cours article ne fournit donc pas des activités
clé-en-main mais donne des éléments pour alimenter la réflexion du professeur, en particulier en montrant que la
programmation fonctionnelle, souvent méconnue (même si elle est implicite dans un tableur ou utilisée en primaire
avec la tortue Logo), est très proche des mathématique.
Nous ne parlerons pas d’un logiciel en particulier. Cependant, pour les applications pratiques, nous utiliserons
XCAS, logiciel multifonctions spécialement conçu pour être utilisé en classe de mathématiques et OCAML, logiciel
utilisant la programmation fonctionnelle.
1.2 Programmation impérative
La programmation impérative est la plus répandue (Fortran, Pascal, C,...) et la plus proche de la machine réelle. Son
principe est de modifier à chaque instant l’état de la mémoire via les affectations.
Ce mode de programmation présente plusieurs défauts pour un lycéen :
– ils s’éloignent des mathématiques en utilisant l’affectation comme base de programmation. Une même variable
peut prendre des valeurs tout à fait différentes selon le moment où on l’évalue alors qu’un élève de seconde
découvre les fonctions qui à un nombre donné associe une unique image ;
– la mémoire est constamment modifiée par le programme : le programmeur doit à chaque instant connaître son
état pour savoir ce que représentent les variables affectées ;
– on est obligé de créer des variables temporaires pour que certaines zones de la mémoire restent dans un certain
état : cela est source de nombreux bogues dus à une mauvaise maîtrise de la chronologie des affectations.
Prenons l’exemple très simple d’un programme déterminant le successeur d’un entier.
Une case mémoire nommée n reçoit comme valeur 1 :
1. lui-même pouvant d’ailleurs appartenir à cette catégorie !...
1