ScholarGate
Assistant

Paradigmes de Programmation

Les paradigmes de programmation sont les styles fondamentaux qui organisent la manière dont le calcul est exprimé, allant de la mutation d'état impérative aux modèles fonctionnels, logiques et déclaratifs.

Trouver un sujet avec PaperMindBientôtFind papers & topics
Tools & resources
Télécharger les diapositives
Learn & explore
VidéoBientôt

Definition

Un paradigme de programmation est un ensemble cohérent de concepts et de principes de structuration permettant d'organiser le calcul au sein d'un langage, définissant ce que sont les unités de base d'un programme (instructions, expressions, objets, relations) et comment elles se composent.

Scope

Ce domaine couvre les principaux paradigmes des langages de programmation et les modèles computationnels qui les sous-tendent : la programmation impérative et orientée objet, fondée sur l'état mutable et le passage de messages ; la programmation fonctionnelle, basée sur l'évaluation d'expressions et les fonctions d'ordre supérieur ; la programmation logique et par contraintes, construite sur les relations et la recherche ; et la métaprogrammation, où les programmes manipulent des programmes. Il aborde la manière dont les paradigmes façonnent la conception des langages, les compromis qu'ils impliquent et la façon dont les langages multi-paradigmes modernes les combinent.

Sub-topics

Core questions

  • Qu'est-ce qui distingue un paradigme d'un autre, et ces distinctions sont-elles nettes ou plutôt des questions d'emphase ?
  • Comment les paradigmes affectent-ils la correction, la modularité et le raisonnement des programmes ?
  • Les styles impératifs et déclaratifs peuvent-ils être unifiés, et qu'est-ce qui est gagné ou perdu en les mélangeant ?
  • Comment le modèle computationnel sous-jacent (machine de von Neumann, lambda-calcul, résolution) influence-t-il un paradigme ?

Key theories

La programmation fonctionnelle comme algèbre de programmes
Backus a soutenu que la programmation fonctionnelle, basée sur les combinateurs, libère les langages du goulot d'étranglement de von Neumann en dotant les programmes d'une algèbre de lois équationnelles pour le raisonnement et la transformation.
Algorithme = Logique + Contrôle
La séparation par Kowalski de la spécification logique d'un problème de la stratégie de contrôle utilisée pour le résoudre fonde le paradigme déclaratif/logique et clarifie ce qui le distingue du code procédural.
Cadre de langage noyau multi-paradigme
Van Roy et Haridi présentent les paradigmes comme des extensions incrémentales d'un petit langage noyau, montrant comment des concepts tels que l'état, la concurrence et l'évaluation paresseuse peuvent être ajoutés ou supprimés pour retrouver chaque paradigme.

Clinical relevance

Le choix du paradigme a des conséquences pratiques pour l'ingénierie logicielle : les styles fonctionnels et déclaratifs facilitent le raisonnement équationnel, la testabilité et la parallélisation, tandis que la décomposition orientée objet favorise la modularité à grande échelle. Les langages modernes tendent à mêler de plus en plus les paradigmes, de sorte que la compréhension de leurs compromis éclaire le choix du langage et la conception idiomatique.

History

La programmation impérative découle de l'architecture de von Neumann à programme enregistré et des premiers langages comme Fortran et Algol. Lisp (1958) a introduit des idées fonctionnelles enracinées dans le lambda-calcul. Les années 1970 ont vu l'émergence de la programmation logique (Prolog) et l'essor de la programmation structurée, puis orientée objet (Simula, Smalltalk). La conférence de Backus pour le prix Turing en 1977 a cristallisé la critique fonctionnelle du style impératif, et les décennies suivantes ont produit des langages de plus en plus multi-paradigmes.

Debates

Impératif versus déclaratif comme principe d'organisation principal
Un débat de longue date oppose la simplicité et le contrôle des performances du code impératif aux avantages de raisonnement et de composabilité des styles déclaratifs et fonctionnels ; la plupart des langages modernes le résolvent en supportant les deux.

Key figures

  • John Backus
  • Robert Kowalski
  • Peter Van Roy
  • Harold Abelson
  • Gerald Jay Sussman

Related topics

Seminal works

  • backus1978
  • kowalski1979
  • vanroy2004
  • abelson1996

Frequently asked questions

La programmation orientée objet est-elle un paradigme distinct de la programmation impérative ?
La programmation orientée objet est généralement considérée comme une discipline de structuration superposée au paradigme impératif : elle organise l'état mutable en objets avec un comportement encapsulé, mais elle repose toujours sur le changement d'état et le séquençage.
Les paradigmes sont-ils mutuellement exclusifs ?
Non. De nombreux langages largement utilisés sont multi-paradigmes, combinant des fonctionnalités fonctionnelles, orientées objet et impératives afin que les programmeurs puissent choisir le style le plus adapté à chaque tâche.

Methods for this concept

Related concepts