COBOL Blues

Depuis sa conception à la fin des années 50, le language de programmation COBOL continue de régner en maître sur l’infrastructure mondiale. Frais bancaires, envois de containers, données médicales, connections téléphoniques, prélèvement de taxes, primes d’assurances, ou encore l’intégralité des transactions Visa : les petites choses de la vie passent par un script COBOL. Plusieurs décennies de performances inégalées l’ont amené à littéralement dominer le calcul. Et pourtant, les managers continuent de s’arracher les cheveux.

Le “Cobol Blues”

La pénurie fait rage, et le programmeur COBOL reste une espèce en voie de disparition et qui se monnaye au prix fort. Les “cow-boys” qui ont conçus ces systèmes sont depuis longtemps à la retraite, alors que les “youngsters” approchent la cinquantaine. La pandémie de COVID19 bouleverse les infrastructures mondiales, et met le personnel exécutif des Fortune 500 face aux réalités du “COBOL Blues”.

Hormis l’Inde qui continue de former de jeunes diplômés, il semblerait que le COBOL est disparu des programmes d’enseignement universitaire quelque part au milieu des années 80. La demande en “software engineers” capables de programmer les PCs fraichement arrivés a éclipsé l’intérêt pour les “mainframes” (ordinateur central en français), terrain de jeu préféré des programmes COBOL.

A gauche : IBM mainframe dans les années 1960s (photo : Bettmann Archive) / A droite: Jean E. Sammet mène la création de COBOL comme consultante pour le Pentagone entre Juin et Novembre 1959, avant de rejoindre IBM en 1961 (photo: IBM Archive)

Histoires comptables

Un article de 2018 intitulé Is COBOL holding you hostage with Math? (découvert dans la newsletter de l’ami Nicolas Nova) explique comment COBOL est finalement plus performant. La manière dont COBOL arrondit les chiffres décimaux (fixed point) lui permet d’être plus exact à n chiffres après la virgule. La plupart des autres languages utilise l’arrondi par floating point, plus approximatif - voir cette réponse Stack Overflow. Néanmoins, depuis 2014, COBOL utilise lui aussi l’arrondi par floating point - grâce au récent standard IEEE. L’utilisation du fixed point était essentiellement lié à la présence d’instructions machines spécifiques dans les mainframe IBM. Aujourd’hui, les limitations de calculs se situent plutôt côté hardware (coucou les cypto-monnaies).

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-NUM1 PIC 99V9 VALUE IS 3.5.
   01 WS-NAME PIC A(6) VALUE 'ABCD'.
   01 WS-ID PIC 99 VALUE ZERO.

PROCEDURE DIVISION.
   DISPLAY "WS-NUM1 : "WS-NUM1.
   DISPLAY "WS-NAME : "WS-NAME.
   DISPLAY "WS-ID   : "WS-ID.
STOP RUN.

---
output:

// WS-NUM1 : 03.5
// WS-NAME : ABCD
// WS-ID   : 00

Pourquoi s’obstiner?

Mais pourquoi s’entêter à utiliser un langage désuet comme COBOL alors qu’il existe pléthore de très bonnes solutions? L’inertie manageriale et la “peur du changement” des géants industriels est souvent invoquée. A vrai dire, se frotter à des systèmes si complexes ferait frémir même la plus téméraire armée de consultants en conduite du changement. Véritable sur-couche administrative, ces immenses châteaux de cartes perforées contiennent des décennies d’instructions propres aux régulations financières, douanières ou que sais-je encore. Nul ne peut s’aventurer dans la réécriture de milliards de lignes de code sans transformer profondément le fonctionnement et le sens du “système”.

Pourtant, l’image qu’on pourrait avoir de programmes monolithiques n’ayant pas bougé depuis 50 ans est largement fausse. La plupart des outils COBOL sont activement maintenus. Le language continue d’être mis à jour. Les opérations de maintenance sont légions. Néanmoins, tout ceci ne fait qu’accroitre la dépendance au système actuel, sans addresser pour autant la question de son devenir. L’appareil COBOL, loin d’être un archaïsme, régit nos interactions quotidiennes via plusieurs des grands systèmes d’échange mondiaux. Le manque de pilotes à bord n’est pas une question technologique, mais plutôt un symptôme général de l’état de ces organisations.

Inventeur de la touche escape présente sur tous les ordinateurs de la planète, Robert «Bob» Bemer travaille avec Grace Hopper sur le cobol. «D’un certain point de vue, je suis responsable du bug de l’an 2000», dit-il aujourd’hui, à 79 ans. Son erreur? N’avoir imposé aucune norme pour coder les dates dans le cobol.

Genèse et chronique du bug de l’an 2000 depuis 1945.”, dans Libération du 31 décembre 1999.

Esthétique décadente

Personnellement, je soupçonne qu’une partie des calculs continuent de s’écrire en COBOL car cela se lit bien si on connaît Excel. Un programme COBOL, ce sont grosso modo des formules Excel qui tournent sur un énorme ordinateur. Aucun comptable sain d’esprit ne déléguera 100% de sa compétence d’écriture à des programmeurs, et encore moins s’il est VP d’une compagnie d’assurance ou de la Fed. La syntaxe COBOL permet aux pros du tableurs d’auditer les calculs facilement. Plus simplement en tout cas qu’un language de programmation fonctionnelle hipster, avec des notations du genre const uint16_t keymaps[][2][3]::unit32_t.

Finalement, COBOL continue de dominer le monde “corporate” occidental car c’est le langage parfait pour en exprimer les opérations. Un reliquat de l’aprés-guerre, ultra-conservateur, indéboulonnable, inventé au Pentagone, pas expressif pour un sou, obsédé par le nième chiffre après la virgule et qui continue de faire tourner le monde - sans que personne ne comprenne trop comment.

Tout ça pour dire, qu’on gagnerait à considérer les langages informatiques comme des allégories, plutôt que de s’embarrasser de considérations managériales. Cela permettrait de d’affranchir 5 minutes des discours d’escortes sur les “technologies”, et de considérer l’immense contribution de ces écritures aux cultures modernes, voire même d’apprendre un truc ou deux sur elles.

A question? A comment?

Please send it to me by email bonjour@clementrenaud.com or on Twitter.