bandeau Aconit

Navigation : Publications  >  Chroniques  >  Chronique - Un compilateur Fortran illogique


Pour nous écrire :


© 2002-2020 - Aconit

Chronique - Un compilateur Fortran illogique


Quand la lettre "O" vous empêche de prendre le téléphérique ...

Vers 1975 le service de calcul ISN-CNRS avait été contacté par des ingénieurs d’une société de services qui n’arrivaient pas à convertir un très gros programme Fortran écrit pour la machine CDC 6600 et qui devait servir de test de performances sur une machine CII.

Après plusieurs jours d’investigations, nous n’avions toujours pas trouvé de faille dans leur conversion. Nous étions sur le point d’imprimer un grand nombre de résultats d’opérations intermédiaires réalisées par les deux machines. Nous espérions ainsi comprendre à partir d’où les résultats différaient, mais une observation de nos interlocuteurs attira notre attention. Selon leurs dires, une opération logique (intersection) dans le programme CDC avait un comportement bizarre.

En regardant de plus près le texte, nous avons constaté que l’une des deux variables entières concernées par l’intersection avait un nom commençant par O.
Dans le langage FORTRAN, les noms de variables commençant par I,J,K,L,M,N correspondent à des variables entières, et ceux commençant par les autres lettres de l’alphabet correspondent à des variables réelles. Mais l’ordinateur CDC 6600 avait la particularité de considérer les variables commençant par O comme des variables octales (variables entières) alors que le compilateur CII les considérait comme des variables réelles. Le programmeur n’ayant pas connaissance de cette particularité, le test du résultat de l’intersection logique conduisait à un mauvais branchement dans le programme CII.

Le langage Fortran n’étant pas basé sur une logique formelle, il n’existait pas de carte syntaxique du langage comme cela était le cas pour l’Algol et deux développeurs de compilateurs pouvaient ainsi prendre des options différentes.

Nos demandeurs étaient tellement contents qu’ils nous proposèrent de nous offrir à manger dans un restaurant de notre choix. Nous choisîmes le restaurant de La Bastille. Au moment de prendre les tickets pour monter en téléphérique, l’un d’eux, anglais d’origine, refusa de prendre le téléphérique.

Nous lui proposâmes donc de monter en voiture. Pendant le repas chez le père Gras, nous lui demandâmes pourquoi il n’aimait pas le téléphérique. Il nous dit qu’il avait vu dans la gare de départ que la société qui effectuait la maintenance de l’équipement avait le même sigle que celle qui leur avait commandé le travail. Comme il avait vu des anomalies d’écriture dans le programme Fortran, il avait préféré utiliser le principe de précaution, ne sachant pas si les deux sociétés de même sigle n’étaient en fait qu’une seule et même société.

Première publication :
Mise en ligne le lundi 10 juin 2013

Article écrit par :
Maurice Geynet



Haut de page | Accueil | Plan du site | Mentions légales | Administration ?