













| |
Paradigme en programmation
Un paradigme de programmation est un style fondamental de programmation
informatique qui traite de la manière dont les solutions aux problèmes doivent
être formulées dans un langage de programmation (à comparer à la méthodologie,
qui est une manière de résoudre des problèmes spécifiques de génie logiciel).
|
Un paradigme de programmation fournit (et détermine) la vue qu’a le
développeur de l’exécution de son programme. Par exemple, en programmation
orientée objet, les développeurs peuvent considérer le programme comme une
collection d’objets en interaction, tandis qu’en programmation fonctionnelle
un programme peut être vu comme une suite d'évaluations de fonctions sans
états. Lors de la programmation d’ordinateurs ou de systèmes multi-processeurs,
la programmation orientée processus permet aux développeurs de voir les
applications comme des ensembles de processus agissant sur des structures de
données localement partagées.
|
|
De la même manière que des courants différents du génie logiciel
préconisent des « méthodologies » différentes, des langages de programmation
différents plaident pour des « paradigmes de programmation » différents.
Certains langages sont conçus pour supporter un paradigme en particulier (Smalltalk
et Java supportent la programmation orientée objet, tandis que Haskell
supporte la programmation fonctionnelle) alors que d’autres supportent des
paradigmes multiples (à l’image de C++, Common Lisp, OCaml, Oz, Python, Ruby
ou Scheme).
De nombreux paradigmes de programmation sont aussi célèbres pour les
techniques qu’ils prohibent que pour celles qu’ils permettent. La
programmation fonctionnelle pure, par exemple, interdit l’usage d’effets de
bord ; la programmation structurée interdit l’usage du goto. En partie pour
cette raison, les nouveaux paradigmes sont souvent considérés comme
doctrinaires ou abusivement rigides par les développeurs habitués aux styles
déjà existants. Cependant, le fait d’éviter certaines techniques peut
permettre de rendre plus aisé la démonstration de théorèmes sur la correction
d’un programme — ou simplement la compréhension de son fonctionnement — sans
limiter la généralité du langage de programmation.
La relation entre les paradigmes de programmation et les langages de
programmation peut être complexe, car un langage de programmation peut
supporter des paradigmes multiples. Pour citer un exemple, C++ est conçu pour
supporter des éléments de programmation procédurale, de programmation orientée
objet et de programmation générique. Cependant, concepteurs et développeurs
décident de la méthode d’élaboration d’un programme en utilisant ces éléments
de paradigmes. Il est possible d’écrire un programme purement procédural en
C++, comme il est possible d’en écrire un purement orienté objet, ou encore
qui relève des deux paradigmes.
Les paradigmes les plus populaires:
 |
Programmation impérative, paradigme originel et le plus courant
|
 |
Programmation structurée, visant à structurer les programmes impératifs
pour en supprimer les instructions goto |
 |
Programmation orientée objet, consistant en la définition et
l’assemblage de briques logicielles appelées objets (comme en
Smalltalk)
|
 |
Programmation fonctionnelle, avec laquelle un programme est une fonction
au sens mathématique du terme |
 |
Programmation procédurale, à comparer à la
programmation fonctionnelle |
 |
Programmation déclarative, consistant à déclarer les données du
problème, puis à demander au programme de le résoudre |
 |
Programmation événementielle, consistant à répondre à des
événements |
 |
Programmation logique, consistant à exprimer les problèmes et les
algorithmes sous forme de prédicats (comme en
Prolog) |
 |
Programmation par contraintes, à comparer à la
programmation logique |
 |
Programmation concurrente, où l’on tient compte de l’exécution en
parallèle de plusieurs piles sémantiques |
 |
Programmation orientée prototype, qui simplifie et rend plus flexible la
programmation orientée objet |
 |
Programmation orientée composant (comme en
OLE) |
 |
Programmation orientée aspect (comme en AspectJ)
|
 |
Programmation par contrat, dans lequel le déroulement des traitements
est régi par des règles (comme en
Eiffel)
|
Autres Paradigmes que nous n'allons pas aborder dans ce chapitre:
 | Programmation orientée agent, souvent basée sur la programmation
orientée objet, qui simplifie le développement d’agents logiciels
|
 | Programmation orientée concept |
 | Programmation orientée pile (comme en
Forth) |
 | Programmation orientée principes |
 | Programmation orientée flux de données (comme dans un Tableur)
|
 | Programmation non-déterministe |
 | Programmation orientée sujet |
 | Programmation orientée classe, à comparer à la
Programmation orientée prototype (dans le contexte de la programmation
orientée objet) |
 | Programmation par annotations (comme en langage
Flare )
|
 | Programmation par attributs (comme avec les
annotations Java, pré-traitées par la classe XDoclet,
ou avec les attributs C#) |
 | Programmation sur flux, à comparer à la
Programmation sur événement |
 | Programmation par messages, à comparer à la programmation impérative
|
 | Programmation orientée processus, pour la programmation parallèle
|
 | Programmation récursive, à comparer à la
programmation itérative |
 | Programmation réflexive |
 | Programmation scalaire, à comparer à la
programmation par tableaux |
 | Programmation au niveau valeur, à comparer à la
programmation au niveau fonction |
Article de Wikipédia
|