web-dev-qa-db-fra.com

Quelle est la différence entre les paradigmes de programmation déclarative et procédurale?

Quelle est la différence entre les paradigmes de programmation déclarative et procédurale? Pourriez-vous s'il vous plaît fournir quelques exemples?

Quels autres paradigmes de programmation existent?

88
Tarik

Impératif

Il existe plusieurs sous-paradigmes du paradigme de programmation impérative, tels que procédural ou orienté objet paradigmes de programmation.

Dans le paradigme de la programmation impérative, vous décrivez l'algorithme étape par étape, à différents degrés d'abstraction.

Exemples de langages de programmation prenant en charge le paradigme procédural:

  • C (and most other legacy languages)
  • PHP, principalement
  • Dans un certain sens, toutes les principales langues

Orienté objet

Il fait généralement référence aux langages qui présentent une hiérarchie de types qui héritent à la fois des méthodes et de l'état des types de base aux types dérivés, mais comprend également l'inhabituel basé sur des prototypes JavaScript.

Exemples de langages de programmation prenant en charge le paradigme OO:

  • Java

Déclaratif

Il existe plusieurs sous-paradigmes du paradigme de programmation déclarative, tels que les paradigmes de programmation fonctionnelle ou logique.

Dans le paradigme de programmation déclarative, vous décrivez un résultat ou un objectif, et vous l'obtenez via un " boîte noire ". Le contraire de impératif.

Exemples de langages de programmation prenant en charge le paradigme de programmation déclarative:

  • yacc
  • Cime des arbres
  • SQL
  • Expressions régulières
  • Lex
  • XSLT
  • balisage, troff, CSS, VHDL

Fonctionnel

La programmation fonctionnelle met l'accent sur l'application de fonctions sans effets secondaires et sans état mutable. Les systèmes déclaratifs ci-dessus présentent certains aspects de la programmation fonctionnelle.

Exemples de langages de programmation prenant en charge le paradigme fonctionnel déclaratif:

  • Haskell
  • OCaml
  • Schème
  • Erlang
  • F#
  • Scala
104
DigitalRoss

La programmation déclarative est l'endroit où vous dites ce que vous voulez sans avoir à dire comment le faire. Avec la programmation procédurale, vous devez spécifier les étapes exactes pour obtenir le résultat.

Par exemple, SQL est plus déclaratif que procédural, car les requêtes ne spécifient pas d'étapes pour produire le résultat.

59
Ned Batchelder

Permettez-moi de vous donner un exemple concret: j'ai besoin d'une tasse de thé.

Procédure:

  1. Aller à la cuisine
  2. Obtenez du sucre, du lait et du thé,
  3. Mélangez-les et chauffez sur le feu jusqu'à ébullition
  4. Mettez ça dans une tasse et apportez-le moi

déclaratif:

  1. Prends-moi une tasse de thé.

Dans un langage procédural, vous définissez l'ensemble du processus et indiquez les étapes à suivre. Vous fournissez simplement des commandes et définissez comment le processus sera servi.

Dans un langage déclaratif, il vous suffit de définir la commande ou l'ordre et de laisser au système comment terminer cet ordre. Vous avez juste besoin de votre résultat sans chercher comment le faire.

20

Programmation procédurale:

Dans la programmation procédurale, lorsque le programme démarre, il suit un ensemble d'instructions. Les instructions peuvent changer en fonction du contenu d'un fichier ou de la mémoire, mais dans l'ensemble, elles ne varient pas beaucoup. l'entrée dans le programme ne provient généralement pas d'une entrée utilisateur en temps réel, mais plutôt d'un ensemble de données pré-recueillies.

Programmation déclarative:

Dans la programmation basée sur les événements déclaratifs, elle se centralise autour d'un corps de données avec des actions facultatives que le programme peut entreprendre. Par exemple, chaque "événement" dans un traitement de texte est une modification de la souris ou du clavier (ou fichier) qui affecte les données, le ou les documents. Ils n'ont pas besoin d'être exécutés dans n'importe quel ordre. La programmation pilotée par les événements prend la forme de petits programmes (gestionnaires d'événements) qui fonctionnent tous sur un ensemble commun de données, afin que chaque petit programme puisse utiliser les mêmes données, le document dans cet exemple.

5
SattiS