Paradigmes de programmation : quels sont les principes de la programmation ?
Les paradigmes en programmation désignent les principes fondamentaux du développement de logiciels. Au mieux, on peut se les représenter comme des styles de programmation fondamentaux divers générant des codes logiciels de structure différente.
Traditionnellement, la programmation impérative est la forme la plus courante. Son code source définit clairement la séquence d’étapes à exécuter par un programme. Il en existe plusieurs sous-catégories, parmi lesquelles la programmation procédurale et la programmation axée sur l’objet. Suivant le principe de la programmation déclarative, seul l’objectif du logiciel est décrit (soit uniquement le résultat, et non les différentes étapes). Il en existe plusieurs sous-catégories, parmi lesquelles la programmation fonctionnelle et la programmation logique. Comment distinguer ces paradigmes logiciels les uns des autres ?
Programmation impérative : le paradigme de programmation traditionnel
Parmi les paradigmes de programmation, la programmation impérative est considérée comme « traditionnelle ». Les premiers langages de programmation et, de ce fait, les premiers programmes informatiques, ont été intégralement conçus sur cette base, qui énonce une séquence stricte d’ordres déterminés (du lat. imperare « ordonner ») ou, pour ainsi dire, des instructions d’exécution. Ce paradigme de programmation sert entre autres de base aux langages Pascal et C, ainsi qu’à tous les langages d’assemblage. En programmation impérative, l’accent est notamment mis sur une collaboration aussi étroite que possible avec le système. Le code de programmation en résultant est alors facile à comprendre, mais très volumineux.
Les programmations structurée, procédurale et modulaire sont trois approches majeures d’écriture et de structuration du code logiciel selon le paradigme programmation impérative.
Les programmations structurée, procédurale et modulaire sont trois approches majeures d’écriture et de structuration du code logiciel selon le paradigme programmation impérative.
Pour en savoir plus sur le paradigme de programmation impérative, approfondissez le sujet en consultant notre article correspondant.
Programmation structurée
L’approche de programmation structurée est une forme simplifiée de programmation impérative. La différence déterminante par rapport au principe de base : au lieu d’instructions de saut absolu (instructions entraînant le traitement, non pas avec l’ordre suivant, mais à un autre endroit), ce paradigme de programmation prévoit l’utilisation de boucles et structures de contrôle. Un exemple en est l’utilisation de « do...while » pour l’exécution automatique d’une instruction dès lors qu’une certaine condition est remplie (au moins une fois).
Programmation procédurale
Le paradigme de programmation procédurale étend l’approche impérative à la possibilité de subdiviser des algorithmes en plusieurs parties plus facilement maîtrisables. Celles-ci sont alors désignées par les termes procédures ou, selon le langage de programmation, sous-programmes, routines ou fonctions. L’objectif de cette subdivision est de faciliter la compréhension du code de programmation et d’éviter les répétitions de code inutiles. De par l’abstraction des algorithmes, le paradigme logiciel procédural s’impose comme une avancée déterminante entre les langages d’assemblage simples et les langages standard plus complexes.
Programmation modulaire
La programmation modulaire est également comprise comme une sous-catégorie du paradigme de programmation impérative. Elle est fondamentalement très similaire à l’approche procédurale et applique ce style de programmation aux exigences de projets logiciels plus volumineux et plus complets. Le code source est ici subdivisé de manière ciblée en blocs logiques indépendants les uns des autres pour plus de clarté et pour faciliter le processus de débogage (dépannage). Les différents blocs, encore appelés modules, peuvent être testés séparément avant d’être liés au sein d’une application commune.
Programmation déclarative : paradigmes logiciels du passé récent
Parallèlement au développement continu de matériel et de logiciels, l’approche déclarative a permis l’élaboration d’un paradigme alternatif à la programmation de code. Le principe de base de la programmation déclarative réside ici dans la description du résultat final souhaité. Il s’agit donc en premier lieu de l’« objectif » à atteindre, et non du « déroulement » des étapes de résolution comme c’est le cas en programmation impérative. En programmation déclarative, le code est plus difficile à comprendre en raison de son haut niveau d’abstraction, mais est également plus court et plus précis.
Il existe des différences plus importantes entre les sous-catégories du paradigme de programmation déclarative qu’entre celles du style impératif. En outre, leur définition ou répartition n’est pas toujours très précise. Les deux approches principales du paradigme programmation déclarative sont la programmation fonctionnelle et la programme logique.
Il existe des différences plus importantes entre les sous-catégories du paradigme de programmation déclarative qu’entre celles du style impératif. En outre, leur définition ou répartition n’est pas toujours très précise. Les deux approches principales du paradigme programmation déclarative sont la programmation fonctionnelle et la programme logique.
Pour en savoir plus sur le paradigme de programmation déclarative, approfondissez le sujet en consultant notre article correspondant.
Programmation fonctionnelle
Tous les langages de programmation standard contiennent des fonctions. L’approche fonctionnelle du développement logiciel traite toutefois certaines fonctions de manière très particulière :
un programme fonctionnel 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 différents « statuts » au sein de la programmation fonctionnelle. Elles peuvent par exemple être liées les unes aux autres comme des données ou être utilisées sous forme de paramètres. Elles peuvent également être réutilisées sous forme de résultats fonctionnels. A contrario, le paradigme empêche l’affectation indépendante de valeurs.
D’une manière générale, cette sous-catégorie de programmation déclarative est très importante dans le domaine informatique et peut être utilisée de manière très variée. Le traitement spécial des fonctions permet aux programmateurs du domaine de définir et d’appliquer de nouvelles règles de calcul étendues à partir de fonctions.
un programme fonctionnel 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 différents « statuts » au sein de la programmation fonctionnelle. Elles peuvent par exemple être liées les unes aux autres comme des données ou être utilisées sous forme de paramètres. Elles peuvent également être réutilisées sous forme de résultats fonctionnels. A contrario, le paradigme empêche l’affectation indépendante de valeurs.
D’une manière générale, cette sous-catégorie de programmation déclarative est très importante dans le domaine informatique et peut être utilisée de manière très variée. Le traitement spécial des fonctions permet aux programmateurs du domaine de définir et d’appliquer de nouvelles règles de calcul étendues à partir de fonctions.
Pour en savoir plus sur la méthode de programmation fonctionnelle, approfondissez le sujet en consultant notre article correspondant.
Programmation logique
Le paradigme logiciel logique, également appelé programmation prédictive, repose sur la logique mathématique. Plutôt qu’une suite d’instructions, un logiciel programmé selon ce principe contient toute une gamme de principes, entendue comme une liste de faits et hypothèses. Chaque requête adressée au programme est traitée par un interpréteur. Celui-ci a recours à ces principes et applique des règles précédemment définies pour atteindre le résultat souhaité.
Pour en savoir plus sur la méthode de programmation logique, approfondissez le sujet en consultant notre article correspondant.
Comparaison des paradigmes de programmation : programmations impérative et déclarative
Paradigme de programmation impérative | Paradigme de programmation déclarative |
---|---|
« Déroulement ? » | « Objectif ? » |
Traditionnel | Nouvelle tendance |
Un programme élaboré selon ce paradigme se compose d’une liste d’instructions indiquant à l’ordinateur l’ordre dans lequel il doit calculer et exécuter des actions. | Un programme élaboré selon ce paradigme se compose d’instructions sur la manière dont le programme doit procéder en fonction d’une saisie. Les calculs sont exécutés par la manipulation de valeurs. Le déroulement est contrôlé par une procédure de récurrence. |
Son nom vient du latin « imperare », soit « ordonner ». | Son nom vient sur latin « declarare », soit « désigner ». |
Les étapes de résolution souhaitées sont énoncées. | Le résultat souhaité est énoncé. |
Les langages de programmation typiques sont C, Pascal, Fortran, ALGOL, ainsi que tous les langages d’assemblage. | Les langages de programmation typiques sont Lisp, ML, Haskell, F#, Prolog et Oz. |