Les pa­ra­digmes en pro­gram­ma­tion désignent les principes fon­da­men­taux du dé­ve­lop­pe­ment de logiciels. Au mieux, on peut se les re­pré­sen­ter comme des styles de pro­gram­ma­tion fon­da­men­taux divers générant des codes logiciels de structure dif­fé­rente.

Tra­di­tion­nel­le­ment, la pro­gram­ma­tion im­pé­ra­tive est la forme la plus courante. Son code source définit clai­re­ment la séquence d’étapes à exécuter par un programme. Il en existe plusieurs sous-ca­té­go­ries, parmi les­quelles la pro­gram­ma­tion pro­cé­du­rale et la pro­gram­ma­tion axée sur l’objet. Suivant le principe de la pro­gram­ma­tion dé­cla­ra­tive, seul l’objectif du logiciel est décrit (soit uni­que­ment le résultat, et non les dif­fé­rentes étapes). Il en existe plusieurs sous-ca­té­go­ries, parmi les­quelles la pro­gram­ma­tion fonc­tion­nelle et la pro­gram­ma­tion logique. Comment dis­tin­guer ces pa­ra­digmes logiciels les uns des autres ?

Pro­gram­ma­tion im­pé­ra­tive : le paradigme de pro­gram­ma­tion tra­di­tion­nel

Parmi les pa­ra­digmes de pro­gram­ma­tion, la pro­gram­ma­tion im­pé­ra­tive est con­si­dé­rée comme « tra­di­tion­nelle ». Les premiers langages de pro­gram­ma­tion et, de ce fait, les premiers pro­grammes in­for­ma­tiques, ont été in­té­gra­le­ment conçus sur cette base, qui énonce une séquence stricte d’ordres dé­ter­mi­nés (du lat. imperare « ordonner ») ou, pour ainsi dire, des ins­truc­tions d’exécution. Ce paradigme de pro­gram­ma­tion sert entre autres de base aux langages Pascal et C, ainsi qu’à tous les langages d’as­sem­blage. En pro­gram­ma­tion im­pé­ra­tive, l’accent est notamment mis sur une col­la­bo­ra­tion aussi étroite que possible avec le système. Le code de pro­gram­ma­tion en résultant est alors facile à com­prendre, mais très vo­lu­mi­neux.

Les pro­gram­ma­tions struc­tu­rée, pro­cé­du­rale et modulaire sont trois approches majeures d’écriture et de struc­tu­ra­tion du code logiciel selon le paradigme pro­gram­ma­tion im­pé­ra­tive.

Conseil

Pour en savoir plus sur le paradigme de pro­gram­ma­tion im­pé­ra­tive, ap­pro­fon­dis­sez le sujet en con­sul­tant notre article cor­res­pon­dant.

Pro­gram­ma­tion struc­tu­rée

L’approche de pro­gram­ma­tion struc­tu­rée est une forme sim­pli­fiée de pro­gram­ma­tion im­pé­ra­tive. La dif­fé­rence dé­ter­mi­nante par rapport au principe de base : au lieu d’ins­truc­tions de saut absolu (ins­truc­tions en­traî­nant le trai­te­ment, non pas avec l’ordre suivant, mais à un autre endroit), ce paradigme de pro­gram­ma­tion prévoit l’uti­li­sa­tion de boucles et struc­tures de contrôle. Un exemple en est l’uti­li­sa­tion de « do...while » pour l’exécution au­to­ma­tique d’une ins­truc­tion dès lors qu’une certaine condition est remplie (au moins une fois).

Pro­gram­ma­tion pro­cé­du­rale

Le paradigme de pro­gram­ma­tion pro­cé­du­rale étend l’approche im­pé­ra­tive à la pos­si­bi­lité de sub­di­vi­ser des al­go­rithmes en plusieurs parties plus fa­ci­le­ment maî­tri­sables. Celles-ci sont alors désignées par les termes pro­cé­dures ou, selon le langage de pro­gram­ma­tion, sous-pro­grammes, routines ou fonctions. L’objectif de cette sub­di­vi­sion est de faciliter la com­pré­hen­sion du code de pro­gram­ma­tion et d’éviter les ré­pé­ti­tions de code inutiles. De par l’abs­trac­tion des al­go­rithmes, le paradigme logiciel pro­cé­du­ral s’impose comme une avancée dé­ter­mi­nante entre les langages d’as­sem­blage simples et les langages standard plus complexes.

Pro­gram­ma­tion modulaire

La pro­gram­ma­tion modulaire est également comprise comme une sous-catégorie du paradigme de pro­gram­ma­tion im­pé­ra­tive. Elle est fon­da­men­ta­le­ment très similaire à l’approche pro­cé­du­rale et applique ce style de pro­gram­ma­tion aux exigences de projets logiciels plus vo­lu­mi­neux et plus complets. Le code source est ici subdivisé de manière ciblée en blocs logiques in­dé­pen­dants les uns des autres pour plus de clarté et pour faciliter le processus de débogage (dépannage). Les dif­fé­rents blocs, encore appelés modules, peuvent être testés sé­pa­ré­ment avant d’être liés au sein d’une ap­pli­ca­tion commune.

Pro­gram­ma­tion dé­cla­ra­tive : pa­ra­digmes logiciels du passé récent

Pa­ral­lè­le­ment au dé­ve­lop­pe­ment continu de matériel et de logiciels, l’approche dé­cla­ra­tive a permis l’éla­bo­ra­tion d’un paradigme al­ter­na­tif à la pro­gram­ma­tion de code. Le principe de base de la pro­gram­ma­tion dé­cla­ra­tive réside ici dans la des­crip­tion du résultat final souhaité. Il s’agit donc en premier lieu de l’« objectif » à atteindre, et non du « dé­rou­le­ment » des étapes de ré­so­lu­tion comme c’est le cas en pro­gram­ma­tion im­pé­ra­tive. En pro­gram­ma­tion dé­cla­ra­tive, le code est plus difficile à com­prendre en raison de son haut niveau d’abs­trac­tion, mais est également plus court et plus précis.

Il existe des dif­fé­rences plus im­por­tantes entre les sous-ca­té­go­ries du paradigme de pro­gram­ma­tion dé­cla­ra­tive qu’entre celles du style impératif. En outre, leur dé­fi­ni­tion ou ré­par­ti­tion n’est pas toujours très précise. Les deux approches prin­ci­pales du paradigme pro­gram­ma­tion dé­cla­ra­tive sont la pro­gram­ma­tion fonc­tion­nelle et la programme logique.

Conseil

Pour en savoir plus sur le paradigme de pro­gram­ma­tion dé­cla­ra­tive, ap­pro­fon­dis­sez le sujet en con­sul­tant notre article cor­res­pon­dant.

Pro­gram­ma­tion fonc­tion­nelle

Tous les langages de pro­gram­ma­tion standard con­tien­nent des fonctions. L’approche fonc­tion­nelle du dé­ve­lop­pe­ment logiciel traite toutefois certaines fonctions de manière très par­ti­cu­lière :

un programme fonc­tion­nel se compose de fonctions ordonnées les unes par rapport aux autres, chaque partie de programme pouvant alors être conçue sous forme de fonction. Les fonctions peuvent prendre dif­fé­rents « statuts » au sein de la pro­gram­ma­tion fonc­tion­nelle. Elles peuvent par exemple être liées les unes aux autres comme des données ou être utilisées sous forme de pa­ra­mètres. Elles peuvent également être réu­ti­li­sées sous forme de résultats fonc­tion­nels. A contrario, le paradigme empêche l’af­fec­ta­tion in­dé­pen­dante de valeurs.

D’une manière générale, cette sous-catégorie de pro­gram­ma­tion dé­cla­ra­tive est très im­por­tante dans le domaine in­for­ma­tique et peut être utilisée de manière très variée. Le trai­te­ment spécial des fonctions permet aux pro­gram­ma­teurs du domaine de définir et d’appliquer de nouvelles règles de calcul étendues à partir de fonctions.

Conseil

Pour en savoir plus sur la méthode de pro­gram­ma­tion fonc­tion­nelle, ap­pro­fon­dis­sez le sujet en con­sul­tant notre article cor­res­pon­dant.

Pro­gram­ma­tion logique

Le paradigme logiciel logique, également appelé pro­gram­ma­tion pré­dic­tive, repose sur la logique ma­thé­ma­tique. Plutôt qu’une suite d’ins­truc­tions, un logiciel programmé selon ce principe contient toute une gamme de principes, entendue comme une liste de faits et hy­po­thèses. Chaque requête adressée au programme est traitée par un in­ter­pré­teur. Celui-ci a recours à ces principes et applique des règles pré­cé­dem­ment définies pour atteindre le résultat souhaité.

Conseil

Pour en savoir plus sur la méthode de pro­gram­ma­tion logique, ap­pro­fon­dis­sez le sujet en con­sul­tant notre article cor­res­pon­dant.

Com­pa­rai­son des pa­ra­digmes de pro­gram­ma­tion : pro­gram­ma­tions im­pé­ra­tive et dé­cla­ra­tive

Paradigme de pro­gram­ma­tion im­pé­ra­tive Paradigme de pro­gram­ma­tion dé­cla­ra­tive
« Dé­rou­le­ment ? » « Objectif ? »
Tra­di­tion­nel Nouvelle tendance
Un programme élaboré selon ce paradigme se compose d’une liste d’ins­truc­tions indiquant à l’or­di­na­teur l’ordre dans lequel il doit calculer et exécuter des actions. Un programme élaboré selon ce paradigme se compose d’ins­truc­tions sur la manière dont le programme doit procéder en fonction d’une saisie. Les calculs sont exécutés par la ma­ni­pu­la­tion de valeurs. Le dé­rou­le­ment est contrôlé par une procédure de ré­cur­rence.
Son nom vient du latin « imperare », soit « ordonner ». Son nom vient sur latin « declarare », soit « désigner ».
Les étapes de ré­so­lu­tion sou­hai­tées sont énoncées. Le résultat souhaité est énoncé.
Les langages de pro­gram­ma­tion typiques sont C, Pascal, Fortran, ALGOL, ainsi que tous les langages d’as­sem­blage. Les langages de pro­gram­ma­tion typiques sont Lisp, ML, Haskell, F#, Prolog et Oz.
Aller au menu principal