Programmation impérative - Imperative programming

En informatique , la programmation impérative est un paradigme de programmation qui utilise des instructions qui modifient l' état d' un programme . De la même manière que le mode impératif dans les langues naturelles exprime des commandes, un programme impératif consiste en des commandes que l' ordinateur doit exécuter. La programmation impérative se concentre sur la description du fonctionnement d' un programme.

Le terme est souvent utilisé par opposition à la programmation déclarative , qui se concentre sur ce que le programme doit accomplir sans spécifier comment le programme doit atteindre le résultat.

Programmation impérative et procédurale

La programmation procédurale est un type de programmation impérative dans laquelle le programme est construit à partir d'une ou plusieurs procédures (également appelées sous - routines ou fonctions). Les termes sont souvent utilisés comme synonymes, mais l'utilisation de procédures a un effet dramatique sur la façon dont les programmes impératifs apparaissent et comment ils sont construits. La programmation fortement procédurale, dans laquelle les changements d' état sont localisés aux procédures ou limités à des arguments explicites et des retours de procédures, est une forme de programmation structurée . Depuis les années 1960, la programmation structurée et la programmation modulaire en général ont été promues comme des techniques pour améliorer la maintenabilité et la qualité globale des programmes impératifs. Les concepts derrière la programmation orientée objet tentent d'étendre cette approche.

La programmation procédurale pourrait être considérée comme une étape vers la programmation déclarative. Un programmeur peut souvent dire, simplement en regardant les noms, les arguments et les types de retour des procédures (et les commentaires associés), ce qu'une procédure particulière est censée faire, sans nécessairement regarder les détails de la façon dont elle atteint son résultat. En même temps, un programme complet reste impératif puisqu'il fixe en grande partie les instructions à exécuter et leur ordre d'exécution.

Justification et fondements de la programmation impérative

La mise en œuvre matérielle de presque tous les ordinateurs est impérative. Presque tout le matériel informatique est conçu pour exécuter du code machine , qui est natif de l'ordinateur et est écrit dans le style impératif. Dans cette perspective de bas niveau, l'état du programme est défini par le contenu de la mémoire et les instructions sont des instructions dans le langage machine natif de l'ordinateur. Les langages impératifs de niveau supérieur utilisent des variables et des instructions plus complexes, mais suivent toujours le même paradigme. Les recettes et les listes de contrôle de processus , bien qu'il ne s'agisse pas de programmes informatiques , sont également des concepts familiers dont le style est similaire à celui de la programmation impérative ; chaque étape est une instruction, et le monde physique détient l'état. Étant donné que les idées de base de la programmation impérative sont à la fois conceptuellement familières et directement incorporées dans le matériel, la plupart des langages informatiques sont de style impératif.

Les instructions d'affectation , dans le paradigme impératif, effectuent une opération sur les informations situées en mémoire et stockent les résultats en mémoire pour une utilisation ultérieure. Les langages impératifs de haut niveau permettent en outre l' évaluation d' expressions complexes , qui peuvent consister en une combinaison d' opérations arithmétiques et d' évaluations de fonctions , et l'affectation de la valeur résultante à la mémoire. Déclarations Looping (comme dans les boucles while , faire en boucles , et pour les boucles ) permettent une séquence d'instructions à exécuter plusieurs fois. Les boucles peuvent soit exécuter les instructions qu'elles contiennent un nombre prédéfini de fois, soit les exécuter de manière répétée jusqu'à ce que certaines conditions changent. Les instructions de branchement conditionnel permettent l'exécution d'une séquence d'instructions uniquement si une condition est remplie. Sinon, les instructions sont ignorées et la séquence d'exécution continue à partir de l'instruction qui les suit. Les instructions de branchement inconditionnel permettent de transférer une séquence d'exécution vers une autre partie d'un programme. Ceux-ci incluent le saut (appelé goto dans de nombreuses langues), le commutateur et le sous- programme , la sous- routine ou l'appel de procédure (qui renvoie généralement à l'instruction suivante après l'appel).

Au début du développement des langages de programmation de haut niveau , l'introduction du bloc a permis la construction de programmes dans lesquels un groupe d'instructions et de déclarations pouvait être traité comme s'il s'agissait d'une seule instruction. Ceci, parallèlement à l'introduction de sous - programmes , a permis d'exprimer des structures complexes par décomposition hiérarchique en structures procédurales plus simples.

De nombreux langages de programmation impératifs (tels que Fortran , BASIC et C ) sont des abstractions du langage assembleur .

Histoire des langages impératifs et orientés objet

Les premiers langages impératifs étaient les langages machine des ordinateurs originaux. Dans ces langages, les instructions étaient très simples, ce qui facilitait la mise en œuvre du matériel mais empêchait la création de programmes complexes. FORTRAN , développé par John Backus chez International Business Machines (IBM) à partir de 1954, a été le premier langage de programmation majeur à supprimer les obstacles présentés par le code machine dans la création de programmes complexes. FORTRAN était un langage compilé qui autorisait des variables nommées, des expressions complexes, des sous-programmes et de nombreuses autres fonctionnalités désormais courantes dans les langages impératifs. Les deux décennies suivantes ont vu le développement de nombreux autres grands langages de programmation impératifs de haut niveau. À la fin des années 1950 et 1960, ALGOL a été développé afin de permettre aux algorithmes mathématiques d'être exprimés plus facilement et a même servi de langage cible du système d'exploitation pour certains ordinateurs. MUMPS (1966) a poussé le paradigme impératif à un extrême logique, en n'ayant aucune instruction du tout, en s'appuyant uniquement sur des commandes, même au point de rendre les commandes IF et ELSE indépendantes l'une de l'autre, connectées uniquement par une variable intrinsèque nommée $ TEST. COBOL (1960) et BASIC (1964) étaient tous deux des tentatives pour que la syntaxe de programmation ressemble davantage à l'anglais. Dans les années 1970, Pascal a été développé par Niklaus Wirth , et C a été créé par Dennis Ritchie alors qu'il travaillait chez Bell Laboratories . Wirth a ensuite conçu Modula-2 et Oberon . Pour les besoins du département de la Défense des États-Unis , Jean Ichbiah et une équipe de Honeywell ont commencé à concevoir Ada en 1978, après un projet de 4 ans pour définir les exigences de la langue. La spécification a été publiée pour la première fois en 1983, avec des révisions en 1995, 2005 et 2012.

Les années 1980 ont vu une croissance rapide de l'intérêt pour la programmation orientée objet . Ces langages étaient de style impératif, mais ajoutaient des fonctionnalités pour prendre en charge les objets . Les deux dernières décennies du 20e siècle ont vu le développement de nombreuses langues de ce type. Smalltalk -80, conçu à l'origine par Alan Kay en 1969, a été publié en 1980 par le Xerox Palo Alto Research Center ( PARC ). S'inspirant des concepts d'un autre langage orienté objet — Simula (qui est considéré comme le premier langage de programmation orienté objet au monde , développé dans les années 1960) — Bjarne Stroustrup a conçu C++ , un langage orienté objet basé sur C . La conception de C++ a commencé en 1979 et la première implémentation a été achevée en 1983. À la fin des années 1980 et 1990, les langages impératifs notables s'appuyant sur des concepts orientés objet étaient Perl , publié par Larry Wall en 1987 ; Python , publié par Guido van Rossum en 1990; Visual Basic et Visual C++ (qui incluaient Microsoft Foundation Class Library (MFC) 2.0), publiés par Microsoft en 1991 et 1993 respectivement ; PHP , publié par Rasmus Lerdorf en 1994; Java , par James Gosling ( Sun Microsystems ) en 1995, JavaScript , par Brendan Eich ( Netscape ), et Ruby , Yukihiro "Matz" Matsumoto, tous deux publiés en 1995. Microsoft .NET Framework (2002) est impératif à sa base, comme sont ses principaux langages cibles, VB.NET et C# qui s'exécutent dessus ; cependant, le F# de Microsoft , un langage fonctionnel, s'exécute également dessus.


Voir également

Remarques

Les références

  • Pratt, Terrence W. et Marvin V. Zelkowitz. Langages de programmation : conception et implémentation , 3e éd. Englewood Cliffs, NJ : Prentice Hall, 1996.
  • Sebesta, Robert W. Concepts des langages de programmation , 3e éd. Reading, Massachusetts : Addison-Wesley Publishing Company, 1996.
Basé à l'origine sur l'article 'Imperative programming' de Stan Seibert, de Nupedia , sous licence GNU Free Documentation License .