Groupe « Faire de l’informatique sans ordinateur à l’école et au collège »
23 mars 2016
Paradigmes de programmation
Il existe des milliers de langages de programmation pour commander des machines (ordinateurs, téléphones, robots
...). Ils sont souvent classés par catégories, correspondant à des principes de fonctionnement différents : ces catégories
sont appelées des paradigmes de programmation. Chaque paradigme suggère sa propre façon de concevoir les pro-
grammes. Pour illustrer cela, un exemple calculant le minimum d’une liste de nombres est donné ci-dessous dans les
trois principaux paradigmes de programmation. Ces trois programmes reposent sur le même algorithme, qui consiste
à parcourir la liste du début à la fin en mémorisant la plus petite valeur rencontrée au fur et à mesure.
Les langages impératifs : ils sont fondés sur une exécution étape par étape, on parle d’exécution « séquentielle ».
Le programmeur décrit l’ordre selon lequel sont exécutées les instructions. Il a aussi la possibilité d’accéder
directement à la mémoire contenant les données, ce qui permet d’écrire des programmes dont l’exécution est très
rapide. Ce paradigme est le plus courant et historiquement le plus ancien, puisqu’il a été inventé conjointement
à la création des premiers ordinateurs. Par exemple, les langages de programmation C, Pascal, Python, Fortran
et COBOL font partie du paradigme impératif.
longueur=len(s)
if longueur == 0 : print ("La liste est vide")
else :
mini = s[0]
i=1
while i < longeuur :
if s[i] < mini : mini = s[i]
i = i+1
print ("Le minimum est : ", mini)
Exemple de programme Python qui calcule le minimum de la liste s.
Le programme Python commence par calculer dans la variable longueur le nombre d’éléments de la liste sgrâce
à la fonction len(s). Ensuite le programme teste si la liste est vide en comparant sa longueur avec 0. Si c’est
le cas, il affiche le message La liste est vide. Dans le cas contraire, il affecte à la variable mini la première
valeur de la liste s[0] et initialise le compteur ià 1. Ensuite, tant que la valeur du compteur iest plus petite
que la longueur de s, le programme compare la valeur de l’élément d’indice ide la liste savec la valeur de mini.
Si s[i] est plus petit que mini alors la variable mini prend pour nouvelle valeur s[i]. Ensuite le compteur i
est augmenté de 1. Une fois la boucle terminée, le programme affiche la valeur de la variable mini qui est bien
le minimum de la liste.
Les langages fonctionnels : ils sont fondés sur l’évaluation de fonctions, dont le résultat est à son tour utilisé
pour évaluer d’autres fonctions. Leur proximité avec le formalisme mathématique est un atout majeur de ces
langages. En effet, cette caractéristique permet de prouver plus facilement que dans le paradigme impératif que
les programmes réalisent ce pour quoi ils ont été conçus. Cette propriété est très souhaitable pour simplifier le
travail des programmeurs. De plus, des objets mathématiques comme les listes ou les fonctions sont omniprésents
dans ces langages, ce qui permet d’écrire des programmes plus concis (environ dix fois plus courts qu’en C). Les
langages de programmation tels que Haskell, Ocaml et Lisp font partie des langages de programmation les plus
connus dans le paradigme fonctionnel. Ces langages sont de plus en plus utilisés car ils permettent d’écrire des
programmes certifiés sans bug, puisque prouvables.
let rec minimum s = match s with
|[] -> failwith "La liste est vide"
|[x] -> x
|e::r -> let mini = minimum r in
if mini > e then e
else mini
Exemple de programme OCaml qui calcule le minimum de la liste s.
La première ligne de ce programme OCaml définit une fonction récursive appellée minimum qui prend en paramètre
une liste s. En fonction du contenu de cette liste trois situations se présentent :
•Si la liste est vide [] (seconde ligne) alors le programme affiche le message La liste est vide.
•Si la liste svaut [x] (troisième ligne), elle contient un seul élément x. Dans se cas la fonction renvoie xqui
est bien le minimum de la liste.