Programmation impérative vs déclarative - la différence expliquée en anglais simple

En tant qu'instructeur de codage, il est de mon devoir d'envoyer les programmeurs dans le monde en pensant de nouvelles manières. Un changement majeur dans la réflexion se produit lorsque nous passons de la programmation impérative à la programmation déclarative.

Une fois que mes étudiants ont appris le JavaScript de base, nous passons en revue la programmation fonctionnelle et les méthodes de tableau utilisées dans un style de codage déclaratif. C'est là que leur cerveau commence à éclater, à grésiller et à fondre comme des guimauves au-dessus d'un feu.

Qu'est-ce que la programmation impérative?

En tant que débutant, vous avez probablement principalement codé dans un style impératif: vous donnez à l'ordinateur un ensemble d'instructions à suivre et l'ordinateur fait ce que vous voulez dans une séquence facile à suivre.

Imaginez que nous ayons une liste des mots de passe les plus couramment utilisés au monde:

const passwords = [ "123456", "password", "admin", "freecodecamp", "mypassword123", ];

Notre application va vérifier le mot de passe de l'utilisateur lors de son inscription et ne pas lui permettre de créer un mot de passe issu de cette liste.

Mais avant de faire cela, nous voulons affiner cette liste. Nous avons déjà un code qui ne permet pas à l'utilisateur de s'inscrire avec un mot de passe de moins de 9 caractères. Nous pouvons donc réduire cette liste à des mots de passe de 9 caractères ou plus pour accélérer notre vérification.

Impérativement, nous écririons:

// using the passwords constant from above let longPasswords = []; for (let i = 0; i = 9) { longPasswords.push(password); } } console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];
  1. Nous créons une liste vide appelée longPasswords.
  2. Ensuite, nous écrivons une boucle qui s'exécutera autant de fois qu'il y a de mots de passe dans la passwordsliste d' origine .
  3. Ensuite, nous obtenons le mot de passe à l'index de l'itération de boucle sur laquelle nous nous trouvons actuellement.
  4. Ensuite, nous vérifions si ce mot de passe est supérieur ou égal à 9 caractères.
  5. Si c'est le cas, nous le mettons dans la longPasswordsliste.

L'une des forces de la programmation impérative est le fait qu'il est facile de raisonner. Comme un ordinateur, nous pouvons suivre étape par étape.

Qu'est-ce que la programmation déclarative?

Mais il existe une autre façon de penser le codage - en tant que processus de définition constante de ce que sont les choses. C'est ce qu'on appelle la programmation déclarative.

La programmation impérative et déclarative atteint les mêmes objectifs. Ce ne sont que des manières différentes de penser le code. Ils ont leurs avantages et leurs inconvénients et il est parfois temps d'utiliser les deux.

Bien que la programmation impérative soit plus facile à raisonner pour les débutants, la programmation déclarative nous permet d'écrire un code plus lisible qui reflète exactement ce que nous voulons voir. Combiné avec de bons noms de variables, cela peut être un outil puissant.

Donc, au lieu de donner à l'ordinateur des instructions étape par étape, nous déclarons ce que nous voulons et nous l'affectons au résultat d'un processus.

// using the passwords constant from above const longPasswords = passwords.filter(password => password.length >= 9); console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];

La liste de longPasswordsest définie (ou déclarée) comme la liste des passwordsmots de passe filtrés uniquement pour les mots de passe supérieurs ou égaux à 9 caractères.

Les méthodes de programmation fonctionnelle en JavaScript nous permettent de déclarer les choses proprement.

  • Ceci est une liste de mots de passe.
  • Ceci est une liste de mots de passe longs uniquement. (Après avoir couru filter.)
  • Ceci est une liste de mots de passe avec des identifiants. (Après avoir couru map.)
  • Ceci est un mot de passe unique. (Après avoir couru find.)

L'une des forces de la programmation déclarative est qu'elle nous oblige à nous demander ce que nous voulons en premier. C'est dans la dénomination de ces nouvelles choses que notre code devient expressif et explicite.

Et lorsque nos collègues développeurs viennent et regardent notre code, ils peuvent trouver des bogues plus facilement:

«Vous appelez cette variable 'index' ce qui me fait attendre un nombre, mais je vois que c'est le résultat filterqui renvoie un tableau. Qu'est-ce qui se passe avec ça?

J'encourage les apprenants à écrire du code déclaratif aussi souvent que possible, définissant constamment (et refactorisant pour redéfinir) ce que sont les choses.

Plutôt que de tenir un processus impératif entier dans votre tête, vous pouvez tenir une chose plus tangible dans votre tête avec une définition claire.

Mike Zetlow est l'instructeur principal du 10x Code Camp .