N.S.I. WorkSpace T-Th-D,Terminale D.4 – Paradigme de programmation

D.4 – Paradigme de programmation

Categories:

Programmation impérative vs Programmation Objet

Soit le programme suivant sauvegardé dans un fichier « ModuleTuyau.py ».

Soit le programme suivant sauvegardé dans un fichier « mainModuleTuyau.py ».

L’exécution de ce dernier programme donne le résultat suivant :

Constatant que ‘t1’ est de type ‘dict’ il est donc possible de manipuler les données de cette structure

Programmation fonctionnelle

Principes

L’idée fondamentale est de considérer que les fonctions sont des données comme les autres.

Ainsi, elles peuvent être par exemple passées en paramètre à d’autres fonctions.

Par exemple :

# Tri d'une table (liste de listes ou liste de tuples)
table.sort(key=lambda x:x[3])

Autres principes :

>>> les fonctions sont des fonctions au sens mathématique du terme : elles se contentent de renvoyer une valeur en fonction de leurs arguments ;
>>> il n’y a pas de notion « d’état », ni à l’extérieur des fonctions, ni dans les fonctions.
Un programme n’est donc qu’une composition de fonctions.

Le paradigme fonctionnel a d’abord été implanté au sein de langages dédiés, plus ou moins « purement fonctionnel ».

Parmi les langages dits fonctionnels, on peut citer :
• LISP (List Processing) : 1958 ;
• SML (Standard Meta Language) : 1983 ;
• CAML (Categorical Abstract Machine Language) : 1987, puis son extension objet OCAML ;
• Haskell : 1990 ;
• Clojure : 2007.

Mais certains aspects du paradigme fonctionnel ont fini par être intégrés dans des langages impératifs, car ils présentent certains avantages :
• fonctions pures ;
• fonctions d’ordre supérieur.

Mise en œuvre du paradigme fonctionnel en Python

Fonctions pures

Une fonction pure est une fonction qui ne modifie rien ; elle ne fait que renvoyer des
valeurs en fonction de ses paramètres.

Les modifications qu’une fonction peut effectuer sur l’état du système sont appelées effets de bord.

Un affichage à l’écran est un exemple d’effet de bord.

En Python, rien n’impose d’implanter des fonctions pures. Notamment, étant donné la façon dont les arguments sont passés à une fonction en Python (utilisation d’une copie de la référence initiale), rien n’interdit qu’une fonction modifie l’objet référencé par l’un de ses paramètres.

Par exemple :