Programmation impérative : vue d’ensemble du paradigme de programmation le plus ancien

Qu’il s’agisse du développement d’une application, de la programmation de machines ou du développement d’un logiciel d’entreprise, avant d’écrire la première ligne de code, le développeur doit choisir le langage de programmation qu’il souhaite utiliser. La gamme des langages de programmation est très variée. Cela dit, ces langages peuvent tous être classés en fonction des deux paradigmes de programmation de base : la programmation impérative et la programmation déclarative. Ces deux approches présentent des avantages et des inconvénients.

Quelles sont les caractéristiques du paradigme de programmation impérative ? De quelles lacunes les développeurs doivent-ils tenir compte ? Le présent article rassemble les réponses aux principales questions liées au paradigme impératif.

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

La programmation impérative (du latin imperare = ordonner) est le paradigme de programmation le plus ancien. Ce paradigme définit un programme comme une séquence clairement définie d’instructions informatiques.

Le code source des langages impératifs énonce donc des séquences d’ordres, déterminant quand l’ordinateur doit exécuter quelle action pour atteindre le résultat souhaité. Les valeurs utilisées dans les variables sont alors transformées en durée d’exécution du programme. Pour piloter les ordres, des structures de contrôle, telles que des boucles ou embranchements, sont intégrées au code.

Le paradigme de programmation impérative est très concret et fonctionne en étroite collaboration avec le système. Le code est aisément compréhensible, mais l’écriture de nombreuses lignes de code source est nécessaire pour décrire ce que les langages de programmation déclarative obtiennent en quelques mots.

Les langages de programmation impérative les plus connus :

  • Fortran
  • Java
  • Pascal
  • ALGOL
  • C
  • C#
  • C++
  • Assembler
  • BASIC
  • COBOL
  • Python
  • Ruby

Les différents langages de programmation impérative peuvent encore être subdivisés en trois autres styles de programmation secondaires : le style de programmation structuré, procédural et modulaire.

Le style de programmation structuré étend le principe impératif de base à des structures de contrôle concrètes : séquences, sélection et itération (répétition). La maîtrise ou l’évitement complet des instructions de saut, qui rendent le code impératif inutilement compliqué, se font en arrière-plan.

L’approche procédurale divise la tâche à exécuter en plusieurs sous-tâches, que le code doit alors décrire séparément. Les blocs de programmation ainsi créés peuvent ensuite être réutilisés au sein d’autres programmes. Le modèle de programmation modulaire va encore plus loin en concevant, développant et testant les différents composants du programme indépendamment les uns des autres. Ce n’est qu’à la fin que la combinaison des différents modules forme le logiciel proprement dit.

Comparaison entre les programmations déclarative et impérative

Un élément fondamental distingue le paradigme de programmation impérative du paradigme de programmation déclarative. En bref : la programmation impérative se concentre sur le DÉROULEMENT, la programmation déclarative sur l’OBJECTIF.

Qu’est-ce que cela signifie ? Le paradigme de programmation impérative est rédigé sous la forme d’un mode d’emploi étape par étape (déroulement) à suivre par l’ordinateur. Il décrit explicitement la séquence d’étapes à exécuter pour parvenir à la solution souhaitée. La programmation déclarative, à l’inverse, décrit directement le résultat final souhaité (objectif). On en trouve un exemple parfait dans nos cuisines : les langages impératifs énoncent des recettes, les langages déclaratifs fournissent des photos du plat fini.

Avec les langages déclaratifs, le code source reste très abstrait quant à la procédure concrète à suivre. Pour arriver à la solution, on utilise un algorithme recherchant et appliquant automatiquement les méthodes appropriées. Cette procédure a de nombreux avantages : non seulement l’écriture des programmes est beaucoup plus rapide, mais en plus, les applications peuvent ensuite être facilement optimisées. Lorsqu’une nouvelle méthode est mise au point, les instructions abstraites du code source permettent à l’algorithme d’y avoir facilement recours.

Exemple de programmation impérative

Le paradigme de programmation impérative se distingue par sa forme de mode d’emploi, qui nécessite généralement de nombreuses lignes de code pour exprimer ce que le style déclaratif peut décrire en quelques mots. Dans l’exemple suivant, nous cherchons à obtenir une liste de prénoms :

Programmation impérative (PHP)

$Listeparticipants = [1 => 'Pierre', 2 => 'Paul', 3 => 'Sarah'];
$prénom = [];
foreach ($Listeparticipants as $id => $nom) {
    $prénom[] = $nom;
}

Programmation déclarative (PHP)

$prénom = array_values($Listeparticipants);

Avantages et inconvénients du paradigme de programmation impérative

De nos jours, de nombreux langages de programmation se fondent sur le paradigme de programmation impérative.

Cela tient, d’une part, au fait que cette approche correspond au mode de programmation initial. De l’autre, au fait que le paradigme impératif présente des avantages pratiques par rapport aux autres modèles.

Comparativement, ces langages sont faciles à apprendre dans la mesure où le code se lit comme un mode d’emploi, étape par étape. En ce sens, au cours de leur formation professionnelle, les programmeurs commencent généralement leur apprentissage par un langage impératif.

La bonne lisibilité est un facteur déterminant au quotidien : la maintenance et l’optimisation des applications ne doivent pas dépendre d’une seule personne, mais pouvoir être facilement réalisées par divers collaborateurs, même lorsqu’ils n’ont pas écrit eux-mêmes le code.

Inconvénient de la programmation procédurale : lorsqu’il s’agit de résoudre des problèmes plus complexes, le code prend très rapidement de l’ampleur. Bien qu’il reste lisible, il perd en clarté du fait de son volume.

Dans la mesure où son exécution n’est pas clairement séparée de la programmation, comme dans le cas du style déclaratif, des effets secondaires indésirables ou des erreurs peuvent survenir en cas de remaniements ultérieurs. Il est également plus difficile d’insérer des extensions dans du code purement impératif, bien à l’inverse du paradigme déclaratif, au sein duquel des méthodes permettent d’en rajouter de manière séparée.

Avantages Inconvénients
Bien lisible Le code devient très rapidement volumineux et perd en clarté
Comparativement facile à apprendre Risque d’erreurs supérieur lors de retouches
Modèle de pensée aisément compréhensible pour les débutants (étapes de résolution) Les opérations de maintenance bloquent le développement d’applications, car la programmation est étroitement liée au système
Permet de tenir compte des caractéristiques de cas d’application spéciaux Optimisations et extensions plus difficiles

Au jour le jour, on utilise souvent des combinaisons de ces paradigmes, car les styles de programmation impérative et déclarative comportent tous deux des avantages et des inconvénients. De plus en plus, le style de programmation déclarative, complété par des méthodes impératives, s’impose toutefois.