Quelle est la différence entre les paradigmes de programmation déclarative et procédurale ? Pouvez-vous donner quelques exemples?
Quels autres paradigmes de programmation existent?
Quelle est la différence entre les paradigmes de programmation déclarative et procédurale ? Pouvez-vous donner quelques exemples?
Quels autres paradigmes de programmation existent?
Réponses:
Impératif
Il existe plusieurs sous-paradigmes du paradigme de programmation impérative, tels que les paradigmes de programmation procédurale ou orientée objet.
Dans le paradigme de la programmation impérative, vous décrivez l'algorithme étape par étape, à divers degrés d'abstraction.
Exemples de langages de programmation prenant en charge le paradigme procédural:
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 inclut également le JavaScript inhabituel basé sur un prototype.
Exemples de langages de programmation prenant en charge le paradigme OO:
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 une " boîte noire ". Le contraire de l' impératif.
Exemples de langages de programmation prenant en charge le paradigme de programmation déclarative:
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:
la source
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 des é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.
la source
Laissez-moi vous donner un exemple concret: j'ai besoin d'une tasse de thé.
De procédure:
Déclaratif:
Dans un langage procédural, vous définissez l'ensemble du processus et indiquez les étapes à suivre pour le faire. Il vous suffit de fournir des commandes et de définir comment le processus sera servi.
Dans un langage déclaratif, vous définissez simplement la commande ou l'ordre, et laissez le système indiquer comment terminer cet ordre. Vous avez juste besoin de votre résultat sans creuser dans la façon dont cela doit être fait.
la source
Programmation procédurale:
En programmation procédurale, lorsque le programme démarre, il suit un ensemble d'instructions. Les instructions peuvent changer en fonction du contenu de certains fichiers 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é-rassemblées.
Programmation déclarative:
Dans la programmation déclenchée par les événements déclaratifs, se centralise autour d'un corps de données avec des actions optionnelles que le programme peut entreprendre. Par exemple, chaque «événement» dans un traitement de texte est une modification de souris ou de clavier (ou de fichier) qui affecte les données, le ou les documents. Ils ne doivent être exécutés dans aucun ordre. La programmation événementielle prend la forme de petits programmes (gestionnaires d'événements) qui fonctionnent tous sur un ensemble commun de données, de sorte que chaque petit programme puisse utiliser les mêmes données, le document dans cet exemple.
la source
La principale différence entre deux langages de programmation est la suivante: en programmation procédurale, nous disons à l'ordinateur comment résoudre le problème et en programmation déclarative, nous disons à l'ordinateur quel problème nous voulons résoudre.
la source
Pour répondre au commentaire ansible et peut-être donner un exemple entre les différences des deux. Ansible est procédural alors que quelque chose comme marionnette ou terraform est déclaratif. Par exemple, vous créez un fichier yaml ansible pour déployer 10 instances ec2 comme ceci:
-ec2: count: 10 image: ami-058c6e5b73b074cd2 instance_type: t2.micro
Si vous exécutiez ce fichier deux fois, vous vous retrouveriez avec 20 instances t2.micro ec2. Si vous écriviez l'équivalent dans un langage déclaratif comme terraform et que vous l'exécutiez deux fois, vous n'auriez que 10 instances de t2.micro en cours d'exécution, quel que soit le nombre de fois que vous l'avez exécuté. Les langages déclaratifs spécifient l'état final. Les langages procéduraux font juste ce que vous leur dites sans tenir compte de l'état actuel ou passé.
la source
Donc YAML est un langage de programmation déclaratif? Parce que nous définissons ce que nous voulons au lieu d'écrire de la logique réelle.
Je demande cela parce que si quelqu'un connaît Ansible qui est un outil de gestion de configuration, il utilise YAML mais il appartient toujours à la catégorie du langage procédural.
la source
Dans l'approche procédurale, vous encodez votre instruction pour obtenir le résultat. Dans l'approche déclarative, vous définissez ce qui doit être résolu comme la connaissance de la résolution du problème. Jetez un œil à l' exemple d' approche procédurale ou déclarative que j'ai mis en œuvre dans les deux approches.
Comme vous le verriez dans l'exemple, dans l'approche déclarative, vous n'avez pas besoin d'instruire COMMENT résoudre le problème.
la source