Le style de programmation impératif a été pratiqué dans le développement Web de 2005 à 2013.
Avec la programmation impérative, nous avons écrit du code qui répertorie exactement ce que notre application doit faire, étape par étape.
Le style de programmation fonctionnelle produit de l'abstraction grâce à des méthodes intelligentes de combinaison de fonctions.
Il est fait mention de la programmation déclarative dans les réponses et à ce sujet, je dirai que la programmation déclarative énumère certaines règles que nous devons suivre. Nous fournissons ensuite ce que nous appelons un état initial à notre application et nous laissons ces règles définir le comportement de l'application.
Maintenant, ces descriptions rapides n'ont probablement pas beaucoup de sens, alors passons en revue les différences entre la programmation impérative et déclarative en parcourant une analogie.
Imaginez que nous ne construisons pas de logiciels, mais que nous préparons des tartes pour gagner notre vie. Peut-être que nous sommes de mauvais boulangers et que nous ne savons pas comment préparer une délicieuse tarte comme nous le devrions.
Alors notre patron nous donne une liste de directions, ce que nous appelons une recette.
La recette nous dira comment faire une tarte. Une recette est écrite dans un style impératif comme ceci:
- Mélanger 1 tasse de farine
- Ajouter 1 œuf
- Ajouter 1 tasse de sucre
- Versez le mélange dans une casserole
- Mettez la casserole au four pendant 30 minutes et 350 degrés F.
La recette déclarative ferait ce qui suit:
1 tasse de farine, 1 œuf, 1 tasse de sucre - état initial
Règles
- Si tout est mélangé, placez-le dans le moule.
- Si tout n'est pas mélangé, placez-le dans un bol.
- Si tout est dans le moule, placez-le au four.
Les approches impératives sont donc caractérisées par des approches étape par étape. Vous commencez par la première étape et passez à l'étape 2 et ainsi de suite.
Vous vous retrouvez finalement avec un produit final. Donc, pour faire cette tarte, nous prenons ces ingrédients, les mélangons, nous les mettons dans une casserole et au four et vous obtenez votre produit final.
Dans un monde déclaratif, c'est différent.Dans la recette déclarative, nous séparerions notre recette en deux parties distinctes, en commençant par une partie qui répertorie l'état initial de la recette, comme les variables. Donc nos variables ici sont les quantités de nos ingrédients et leur type.
Nous prenons l'état initial ou les ingrédients initiaux et leur appliquons certaines règles.
Nous prenons donc l'état initial et les passons à travers ces règles encore et encore jusqu'à ce que nous ayons une tarte à la rhubarbe et aux fraises prête à manger ou autre.
Donc, dans une approche déclarative, il faut savoir structurer correctement ces règles.
Donc, les règles que nous pourrions vouloir examiner nos ingrédients ou indiquer, si elles sont mélangées, les mettre dans une casserole.
Avec notre état initial, cela ne correspond pas car nous n'avons pas encore mélangé nos ingrédients.
Donc, la règle 2 dit, s'ils ne sont pas mélangés, mélangez-les dans un bol. OK ouais cette règle s'applique.
Maintenant, nous avons un bol d'ingrédients mélangés comme notre état.
Maintenant, nous appliquons à nouveau ce nouvel état à nos règles.
Donc, la règle 1 dit que si les ingrédients sont mélangés, placez-les dans une casserole, d'accord ouais maintenant la règle 1 s'applique, faisons-le.
Maintenant, nous avons ce nouvel état où les ingrédients sont mélangés et dans une casserole. La règle 1 n'est plus pertinente, la règle 2 ne s'applique pas.
La règle 3 dit que si les ingrédients sont dans une casserole, placez-les dans le four, c'est bien cette règle qui s'applique à ce nouvel état, faisons-le.
Et nous nous retrouvons avec une délicieuse tarte aux pommes chaude ou autre.
Maintenant, si vous êtes comme moi, vous vous demandez peut-être pourquoi ne faisons-nous pas encore de programmation impérative. C'est logique.
Eh bien, pour les flux simples, oui, mais la plupart des applications Web ont des flux plus complexes qui ne peuvent pas être correctement capturés par une conception de programmation impérative.
Dans une approche déclarative, nous pouvons avoir des ingrédients initiaux ou un état initial comme textInput=“”
, une seule variable.
Peut-être que la saisie de texte commence par une chaîne vide.
Nous prenons cet état initial et l'appliquons à un ensemble de règles définies dans votre application.
Si un utilisateur entre du texte, mettez à jour l'entrée de texte. Eh bien, pour le moment, cela ne s'applique pas.
Si le modèle est rendu, calculez le widget.
- Si textInput est mis à jour, restaurez le modèle.
Eh bien, rien de tout cela ne s'applique, donc le programme attendra juste qu'un événement se produise.
Ainsi, à un moment donné, un utilisateur met à jour la saisie de texte, puis nous pourrions appliquer la règle numéro 1.
Nous pouvons mettre à jour cela pour “abcd”
Nous venons donc de mettre à jour nos mises à jour de texte et de textInput, la règle numéro 2 ne s'applique pas, la règle numéro 3 dit que si l'entrée de texte est mise à jour, ce qui vient de se produire, puis restituer le modèle, puis nous revenons à la règle 2 qui dit si le modèle est rendu , calculez le widget, d'accord, calculons le widget.
En général, en tant que programmeurs, nous voulons nous efforcer d'obtenir des conceptions de programmation plus déclaratives.
L'impératif semble plus clair et évident, mais une approche déclarative s'adapte très bien aux applications plus importantes.