Bonjour à tous,
Pour avoir utilisé COBOL pendant une vingtaine d'années, j'affirme que sa disparition est un effet de mode et n'a pas de causes techniques réelles. Entendons-nous, COBOL est un langage particulier, dédié préférentiellement à un domaine particulier : La gestion. Le langage embarque tout le nécessaire pour écrire une application de gestion rapide, performante, fiable et efficace. Dans le cas d'une petite entreprise, un compilateur COBOL et un PC antédiluvien peuvent largement suffire pour répondre aux besoins administratifs de la boîte.
COBOL embarque des structures de données évoluées, une gestion de fichiers sophistiquée, la gestion directe d'écrans, la génération de rapports et les trappes d'exception.
On peut considérer qu'il embarque nativement un quasi-modèle MVC. Ainsi la FILE SECTION serait le modèle, la SCREEN SECTION la vue et la PROCEDURE DIVISION le contrôleur. Il est capable aussi d'attaquer à bas niveau en passant par les structures de données adaptées. Certains compilateurs (je travaillais sous VMS) offrent une interface quasi-complète sur les routines système, permettant de travailler à très bas niveau.
Comme dans tout langage, il est possible soit d'écrire proprement, soit de faire de la m... COBOL est certes verbeux, mais dans le premier cas on obtient un code lisible même par un non-initié ; quelqu'un qui ne connait ni le langage ni le domaine peut se faire assez rapidement une idée du fonctionnement d'une application bien écrite en COBOL simplement à partir de ses sources.
Bien que n'étant pas vraiment généraliste, on peut faire pas mal de choses avec ce bizarre langage. J'ai en mémoire par exemple un système de validation de droits d'accès dans le domaine bancaire. En fait, un parser a été écrit en quelques instructions, qui permet de dire que tel utilisateur du système peut accéder à l'ensemble des comptes commençant par 34, aussi au 56789, surtout pas au 34567 et à l'ensemble de la réception 10 si la rubrique est 00, etc. La syntaxe de définition n'est pas limitée, on peut mettre autant de contraintes que l'on veut, le système retourne un GO / No GO. L'ensemble tient dans une cascade d'instruction INSPECT imbriquées. Il tourne sur un environnement de 2500 postes à chaque interrogation des bases de données centrales, et n'est pas perceptible de l'utilisateur.
Je pense que COBOL est victime de la mode du tout-nouveau-tout-beau, celle qui veut que chaque nouvelle génération de développeurs estime que le passé n'a rien à nous apprendre. C'est une erreur. Dès lors qu'il s'agit de données structurées, tabulaires, COBOL peut être efficace, soit seul, soit en s'appuyant sur une base de données à travers un pré-compilateur. Dans ce cas il est possible d'écrire directement du code SQL dans le source COBOL, ce qui augmente encore la lisibilité du tout. Sur les systèmes centraux il est d'usage de déléguer les tâches de gestion des écrans et des transactions à des couches dédiées, comme, sous VMS toujours, DecFORMS et ACMS - les équivalents existent chez IBM, évidemment. On était capables de faire tourner des applications performantes sur des machines dont la puissance semble ridicule aujourd'hui, avec des temps de réponse qui rendraient jaloux n'importe quel bidouilleur internet actuel (bon, certains travaillent quand même pas mal, d'accord, mais ce n'est pas la règle !)
Bref, COBOL semble faire peur, peut-être aussi parce qu'il a permis à des générations de personnes formées à la comptabilité d'exprimer leurs (absences d') idées en informatique. Les résultats n'ont pas toujours été à la hauteur, ce qui explique la crainte de certains devant des montagnes de code spaghetti, incompréhensible. Cela est un vrai problème. Mais aujourd'hui, je ne vois pas de réelle raison de passer à la poubelle un langage qui permet depuis trente ans de résoudre le même problème : Régler les rapports entre l'entreprise, ses clients et ses fournisseurs, surveiller l'état d'un stock, passer des commandes et les réceptionner, l'activité administrative quotidienne, quoi. COBOL fait tout cela très bien, en offrant l'avantage insigne de fournir des résultats de calcul financier absolument précis, contrairement aux langages courants, même pour les grands chiffres.
En passant, lorsque je lis que la candidature d'un gars est rejetée uniquement parce qu'il a fait 7 ans de COBOL, je tombe de ma chaise : Un gars qui fait du COBOL dans le domaine bancaire est quelqu'un qui non seulement doit maitriser le langage, ce qui s'obtient assez facilement, mais en plus sait comprendre un environnement plutôt complexe à partir d'éléments de code. Car à coup sûr il n'aura pas fait que développer de merveilleuses Apps from scratch, il aura passé l'essentiel de son temps à adapter les applications existantes aux variations réglementaires ou du marché. C'est donc quelqu'un qui sait extraire la substantifique moelle d'un bout de code et est capable de l'enrichir. Toujours dans ce cas, un gars qui travaille depuis 7 ans en informatique bancaire a montré qu'il s'intègre à un groupe, qu'il sait interagir avec les autres et qu'il est fiable. Bref, si j'étais le boss de la boîte qui a reçu ce CV, et partant de l'idée que je ne cherche pas quelqu'un dans le big data ou l'intelligence artificielle, je souhaiterais parler très rapidement à ceux qui l'ont balancé à la poubelle histoire de vérifier la position de leurs bretelles.
Accessoirement, qui sait si dans dix ans la mention de Python sur un CV ne suscitera pas la même hilarité chez certains que celle de COBOL aujourd'hui ? Et qui sait si dans dix ans COBOL ne sera pas en tête des compilateurs dans le domaine commercial ? Après tout, le reporting intégré est tout à fait capable de générer du HTML & similaires et selon le système d'exploitation il est aussi facile d'écrire un serveur en COBOL, si, si !
A part ça, ma langue maternelle est Pascal, j'ai travaillé dans à peu près tout ce qui est procédural, ainsi qu'avec une cohorte de langages dédiés, spécialisés. J'ai aussi sévi avec des langages objets, j'avais d'ailleurs étendu certaines librairies de TurboPascal à l'époque en créant les prémisses de ce modèle, non encore documenté. Ca ne me rend pas plus intelligent pour autant, mais ça démontre que considérer qu'on est un cador uniquement parce qu'on se débrouille avec le dernier langage à la mode est un peu court.
Voilà !
A part ça, excellente journée,
Thierry
11 |
0 |