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 programmes. Pour illustrer cela, nous donnons 3 vidéos ci-dessous, chacune présentant un certain paradigme de programmation à partir d’un exemple calculant le minimum d’une liste de nombres. Pour illustrer le paradigme impératif, nous utilisons un programme en Python, pour le paradigme fonctionnel, un programme en OCaml et pour le paradigme logique, un programme en Prolog. Ces trois programmes reposent sur le même algorithme, qui consiste à parcourir la liste du début à la fin (ou de la fin au début suivant le type de langage) en mémorisant la plus petite valeur rencontrée jusque là dans la liste.
Voici cet algorithme écrit en pseudo-code :
- L'élément initial est stocké dans la variable mini.
- Tant que l'on n'est pas arrivé au bout de la liste :
* Prendre l'élément suivant
* S'il est plus petit que mini, c'est la plus petite valeur rencontrée jusqu'à maintenant, remplacer la valeur stockée dans mini par celle-ci
- Le résultat est mini
Voici tout d’abord la vidéo illustrant le paradigme impératif.
Voilà ensuite un exemple de paradigme fonctionnel.
Enfin, nous présentons le paradigme logique.
(Les réponses se trouvent dans le glossaire.)
Que va afficher ce code (qui utilise un langage suivant le paradigme impératif ?
a = 5
b = 3
c = 8
a = b - 1
b = a + b
c = c / a + b
print(c)
Le programme va afficher 9. Ci-dessous, on voit les valeurs qu’auront chaque variable ligne par ligne
a = b - 1 # a=2, b=3, c=8
b = a + b # a=2, b=5, c=8
c = c / a + b # c = 8/2+5 = 9
Les 3 lettres a,b et c sont trois variables. Un premier piège ici est que on peut définir la nouvelle valeur d’une variable à partir de son ancienne variable. Le deuxième est qu’une fois que l’on a donné une nouvelle valeur à une variable, l’ancienne est effacée, il est donc important de suivre une exécution séquentielle, donc étape par étape pour ne pas se tromper !