Introduction
À la différence de la programmation fonctionnelle où on calcule
une valeur par l'application d'une fonction à ses arguments sans se
soucier du déroulement des opérations, la programmation
impérative est plus proche de la représentation machine car elle
introduit un état mémoire que le déroulement des actions d'un
programme va modifier. On appelle instructions ces actions des
programmes et un programme impératif est une suite, ou
une séquence, d'instructions. L'état mémoire est susceptible
d'être modifié à l'exécution de chaque instruction. On
considère les opérations d'entrées-sorties comme des modifications
de la mémoire, de la mémoire vidéo ou de fichiers.
Ce style de programmation est directement inspiré de la
programmation assembleur. On le retrouve dans les premiers langages
évolués généralistes (Fortran, C, Pascal, etc. ).
En Objective CAML
les éléments suivants du langage correspondent à ce modèle :
-
les structures de données physiquement modifiables, comme les
tableaux ou les enregistrements à champs modifiables;
- les opérations d'entrées-sorties;
- les structures de contrôle de l'exécution comme les boucles et
les exceptions.
Certains algorithmes s'écrivent plus facilement
dans ce style de programmation. On peut citer comme exemple le produit de
deux matrices. Même s'il est effectivement possible de le traduire
dans une version purement fonctionnelle, où des listes remplacent
les vecteurs, cela n'est ni naturel, ni efficace par rapport à une
écriture impérative.
L'intérêt d'intégrer ce modèle dans un langage fonctionnel est de
pouvoir écrire certains algorithmes dans ce style de programmation
quand ceux-ci s'y prêtent. Les deux principaux désavantages par
rapport au style purement fonctionnel sont :
-
de compliquer le
système de types du langage et de rejeter certains programmes qui
sans cela seraient considérés comme corrects;
- de devoir tenir compte de la représentation mémoire et
de l'ordre des calculs.
Néanmoins, avec quelques règles de prudence dans
l'écriture des programmes, le choix entre plusieurs styles de
programmation offre de plus grandes possibilités d'écriture
d'algorithmes, ce qui est l'objectif principal des langages de
programmation. En outre, un programme écrit dans un style proche de
l'algorithme utilisé sera plus simple donc aura plus de chances
d'être correct (ou, tout du moins, plus rapidement mis au point).
Pour ces raisons, le langage Objective CAML possède des types de données dont
les valeurs sont physiquement modifiables, des structures de contrôle de
l'exécution des programmes et une bibliothèque d'entrées-sorties
dans un style impératif.