A NNALES SCIENTIFIQUES
DE L ’U NIVERSITÉ DE C LERMONT -F ERRAND 2 Série Mathématiques
Y VES H ARRAND
Programmation automatique simplifiée
Annales scientifiques de l’Université de Clermont-Ferrand 2, tome 8, série Mathéma- tiques, n
o2 (1962), p. 129-130
<
http://www.numdam.org/item?id=ASCFM_1962__8_2_129_0>
© Université de Clermont-Ferrand 2, 1962, tous droits réservés.
L’accès aux archives de la revue « Annales scientifiques de l’Université de Clermont- Ferrand 2 » implique l’accord avec les conditions générales d’utilisation (
http://www.numdam.org/conditions
). Toute utilisation commerciale ou impression systématique est constitutive d’une infraction pénale. Toute copie ou impression de ce fichier doit contenir la présente mention de copyright.
Article numérisé dans le cadre du programme Numérisation de documents anciens mathématiques
http://www.numdam.org/
129
PROGRAMMATION AUTOMATIQUE SIMPLIFIÉE
Yves HARRAND
Ancien élève de l’École Polytechnique
Attaché
àla direction de la Société Européenne
pourle Traitement de information
Pourquoi
lelangage
des machines à calculer est-il encore aussiéloigné
dulangage
humainde
l’analyse numérique, après
15 ans dedéveloppement ?
Il semble que laréponse
soit double :d’abord,
ces machines ont été étudiées pourrépondre
à des besoins deplus
enplus variés,
comme lagestion
desentreprises,
la commande des processusindustriels,
la traductionautomatique
deslangues,
la documentationautomatique,
etc. Unlangage capable
derépondre
à des besoins aussi vastes, devait devenir trèsanalytique,
si l’on voulait éviter que le"vocabulaire",
c’est-à-dire lestypes d’instructions,
soit très riche : pour éviter une tellesolution, toujours onéreuse,
les cons-tructeurs ont été conduits à un
langage
constitué d’éléments très courts, serapprochant plus
deslangues syllabiques
de l’Orient que deslangues
occidentales ! 1Ensuite,
larapidité
deplus
enplus grande
des mémoires a incité à recourir à la micro-programmation,
pourremplacer
des fonctionscomplexes
par des sous-programmes. Aucontraire ,
lelangage mathématique
évolue vers une forme deplus
enplus synthétique ;
ilapparait
donc néces-saire,
dansl’impossibilité
de combler immédiatement le fosséqui
s’est creusé entrelangage
humainet
langage
desmachines,
dejeter
au moins unpont.
Cepont
sera constitué par les traducteursautomatiques,
réalisant laprogrammation automatique.
Avant de décrire les diverses solutions
qui peuvent
êtreenvisagées,
il est bon de noterqu’il
faut au
préalable
réduire lelangage
humain à un certain formalisme :malgré
les apparences, lelangage mathématique
n’est pastoujours dépourvu
de redondance oupire, d’ambiguité !
Lesopéra-
tions
portant
sur des variables indicées en sont unexemple, puisque
l’on trouve :L’emploi
depetites machines,
à mémoireslimitées, impose
certainescontraintes,
soit sur la méthode detraduction,
soit sur lelangage
formel danslequel
le programme serarédigé.
Onpeut
songer à réduire le"pont"
en traduisant en unelangue plus synthétique
que lelangage machine ;
mais le programme ainsi obtenu devra être
interprété
àchaque
exécution ; cette dernière solution est chère enmémoire,
leprogramme-interpréteur
devant êtreprésent
àchaque exécution,
et entemps, chaque
instruction en codesymbolique
intermédiaire devant être traduite àchaque
foisqu’elle
est rencontrée dans le programme.
Il nous est donc
resté,
comme solutionpermettant
de réduire l’intervalle entre les deux lan- gages, desimplifier
lelangage
formel du"programme"objet". Néanmoins,
il était utile de tenircompte
del’expérience
des réalisateurs de telslangages :
il en est un enparticulier qui
a étéréalisé avec l’intention d’en faire un
langage
universel : l’ALGOL. Sans vouloir ledécrire,
rap-pelons
brièvement sa structure.L’ALGOL
comporte
deuxtypes
dephrases, permettant
de décrire le programme à traduireen
langage-machine :
les instructions et les déclarations. Lespremières expriment
les différentesphases
du processus decalcul,
les secondesprécisent
aupréalable
lescaractéristiques
de certainesvariables: variables entières ou
booléennes,
dimensions des vecteurs et des tableaux oumatrices,
etc . Les instructions sontséparées
enplusieurs parties
distinctes par des"délimiteurs", qui
sont soit dessignes
deponctuation,
soit des mots dulangage
usuel(anglais). Enfin,
il faut noter lapossibilité
de grouper une suite d’instructions et de déclarations sous un vocable
unique (une étiquette)
parl’organisation
en"blocs"
ou en"procédures".
Malgré
ses éminentesqualités,
l’ALGOLprésente
un certain nombre de défauts dupoint
devue de la réalisation d’un traducteur utilisable sur une
petite
machine : sa trèsgrande généralité
a conduit à une redondance un peu
excessive,
etl’emploi
detrop
de délimiteurs"verbaux"
comme130
"ELSE, THEN, WHILE, etc. "
alourdit aussi bien la rédaction duprogramme-objet
que celle du programme traducteurqui
a lacharge
de les reconnaitre. Nous avons donc décidé de rester fidèle àl’esprit
de l’ALGOL mais de ne pas enrespecter
lalettre,
et d’autrepart
decompléter
la listedes instructions ou des délimiteurs pour faciliter certaines
opérations,
comme les entrées-sortiesou la mise au
point
du programme. C’est ainsi que des instructions LIRE et DEMANDER ont étéintroduites, permettant
dans le dernier cas de fairerépéter
par la machine le nom de la variable dont la valeur doit être introduite. Unsigne
de"traçage"
provoquera, selon laposition
d’un com- mutateur,l’impression
ou non de valeurs intermédiaires au cours du calcul. Mais afin de mieux faire sentir lespoints
où I!effort desimplification
aporté,
nous allons décrire sommairement ce nouveaulangage,
leMAGE,
en établissant unparallèle
avec l’ALGOL.En vue d’utiliser au mieux la mémoire de la
machine,
le traducteur MAGE effectue son travailau fur et à mesure de la lecture du
programme-objet,
et évacuepériodiquement
sous forme deruban
perforé
ou de bloc sur bandemagnétique,
le programmedéjà
traduit. Le programme enlangage-machine
se constitue donctoujours
dans la mêmepetite
zône de mémoire(256 mots).
Les variables sont
désignées
par des groupesquelconques
de lettres ouchiffres,
mais au contrairede l’ALGOL seuls les 3
premiers
caractères sontpris
en considération. Ceci allie la clarté du texte enclair,
oùpeut figurer
parexemple : ALPHA,
à lasimplicité
de constitution du"diction- naire".
La
simplification
des instructions sera illustrée parl’exemple
de l’instructiond’itération ;
à l’instruction ALGOL :correspond
en MAGE :POUR : I =
1, 2 , 30 (retour chariot)
A ce propos,
signalons
que le bloc ALGOL n’a sonéquivalent
en MAGE que pour les instruc- tionsd’itérations,
car dans les autres cas onpeut
s’en passer,grâce
àl’emploi
des Procéduresqui
existent en MAGE. Ainsi un ensemble de2,
bouclesimbriquées
s’écrira :Il
n’y
a aucuneambiguité
dans lesboucles,
une boucle nepouvant
être que totalement inté- rieure ou extérieure à une autre boucle.Dans le cas des
procédures,
la liste desparamètres
a étésupprimée,
en laissant le soin auprogrammeur de définir les
équivalences
par une nouvelle instruction _ : POSER :Notons
qu’une
certainesouplesse
a été introduite dansl’emploi
desprocédures ;
celles-cipeuvent
êtreplacées n’importe
où dans le programme, la fin de laprocédure
étantsignalée
par le"délimiteur" :
REPRISE.Il