Le Cobol fête ses 60 ans

Le Cobol fête ses 60 ans

Le Cobol fête ses 60 ans

Le langage de développement, signifiant « Common Business Oriented Language », a été créé spécifiquement pour les programmes de gestion. Il fête aujourd'hui ses 60 ans.

Le projet a été initié dans le cadre d’une demande du Pentagone : développer un langage indépendant des constructeurs pour les logiciels au sein des administrations. Il fut largement influencé par FLOW-MATIC et COMTRAN.

Moins de six mois ont été nécessaires à sa création, une rapidité qui, couplée à la vision de l’époque, lui ont valu quelques interprétations peu flatteuses de son acronyme, comme « Compiles Only Because Of Luck ».

Le langage est cependant toujours vivant. Comme beaucoup d’autres, il a évolué par étapes majeures. Après la mouture initiale de 1968, d’autres sortent en 74, 85 et 89. C’est cette dernière qui marque un tournant, l’ANSI et l’ISO se penchant sur son cas.

La dernière version date de 2014 et est estampillée ISO/IEC 1989:2014. Les concepts centraux du langage ont évolué avec le temps pour se moderniser. En 2002 avaient ainsi été introduite la programmation orientée objet, accompagnée notamment de l’Unicode et du XML.

Cobol est encore surtout utilisé dans les banques. Bill Curtis, directeur du CISQ (Consortium for IT Software Quality) et l’un des créateurs du CMM (Capability maturity model), indiquait encore en 2013 que le Cobol présentait d’indéniables atouts en sécurité et performances.

Commentaires (44)


Je suis curieux, en quoi Cobol présente “d’indéniables atouts en sécurité et performances” ? C’est un fantasme de développeurs Cobol ou ça correspond à une certaine réalité ?


COBOL étant très bordé, on ne peut faire tout et n’importe quoi avec notamment côté système.

C’est dans ce sens qu’il s’est exprimé je pense.


Pour la sécurité : c’est pas un Jean-Kevin qui vient de lire un tuto sur le SDZ sur comment écrire un hello world en python qui code en Cobol.

Pour la performance : vu le niveau du langage, plus bas, il faut taper dans la langage machine.

<img data-src=" />


<img data-src=" />On va fêter ça par une petite compilation du petit dernier fini ce matin <img data-src=" />

<img data-src=" />








Argonaute a écrit :



COBOL étant très bordé, on ne peut faire tout et n’importe quoi avec notamment côté système.

C’est dans ce sens qu’il s’est exprimé je pense.









tazvld a écrit :



Pour la sécurité : c’est pas un Jean-Kevin qui vient de lire un tuto sur le SDZ sur comment écrire un hello world en python qui code en Cobol.

Pour la performance : vu le niveau du langage, plus bas, il faut taper dans la langage machine.

<img data-src=" />





Merci !



Peut-on dire que le langage Cobol est le langage le plus vieux encore utilisé de nos jours ?



On ressort la blague : dans un lointain futur, un humain est sorti de stase cryogénique et se voit dire “Bonjour. Nous sommes en 9999. Vous connaissez le COBOL ?”.


Sur la sécurité je ne sais pas, mais sur les perfs, les quelques banques qui ont migré leur code en java ont généralement eu une inflation considérable de leur infra à service rendu équivalent. Genre doublement du nb de serveurs voire pire…









Vekin a écrit :



Peut-on dire que le langage Cobol est le langage le plus vieux encore utilisé de nos jours ?





A cette échelle probablement.



Il y a des chances que ce soit en effet le plus vieux encore utilisé en effet.



Historiquement, c’est l’un des premier avec une volonté de faire un langage générique à toutes les machines avec une porté autre que purement R&D et avec un consortium derrière qui en avait l’utilité. Son but était d’être utilisé, il est orientés pour automatisé la gestion de données dans une entreprises ou une administration (le B de COBOL est pour Business).


C’est aussi un langage dans lequel 889 + 122 peut faire 011 si on taille les zones trop petites, sans compter les pertes de signe si on oublie de signer une zone, etc … quant aux dates, c’est juste l’enfer, rien n’existe…. Pipoux : 10 ans de Cobol, 2 ans de Pacbase


ha ouai. Autant coder en assembleur donc <img data-src=" />


Comme quoi c’est dans les vieux pots qu’on fait les meilleures soupes ^^


Ca doit être ultra chiant a coder quand on a pris l’habitude des langages de haut niveau.

En tout cas, chapeau, parce que 60 ans en informatique, c’est impressionnant !








Vekin a écrit :



Peut-on dire que le langage Cobol est le langage le plus vieux encore utilisé de nos jours ?





J’ai eu un collègue qui venait du secteur bancaire et qui ma rapporté ceci:



&nbsp;Les banques/assurances (parfois) utilisent encore ces solutions pour le fait que de remplacer par quelque-chose d’autre coûte cher. Et donc la vision court-termiste se faisant, si la question revennait chaque année sur la table, le budget n’y serait pas. De plus ils ne souhaitent pas changer parce que la solution actuelle est maîtrisée (disent-ils). Avec le vécu c’est devenu robuste. “Changer” veut dire “risque” dans le langage managérial de ce secteur. Ils n’aiment pas cela. Donc il y a encore de la demande pour ce langage. Comme pour Java aussi mais cela choque pas, pas encore.

&nbsp;



&nbsp;



Comme dit plus haut, c’est sans doute plus sécurisé parce que personne n’y comprend rien et que les hackers n’ont pas envie de se prendre la tête avec un truc pareil <img data-src=" />


D’un côté certains organismes tentent de quitter Cobol pour des solutions plus pérennes (et lisibles), souvent Java, parfois (rarement) .NET ou Erlang, de l’autre tu as trois des quatre plus grosses banques de France qui ne jurent que par IBM pour une grosse partie de leur SI et qui investissent durablement dans COBOL… Alors que les performances sont pas si exceptionnelles que ça, que le code est trop complexe pour ce que c’est, et que tu as des limitations totalement débiles (pipoux en a cité quelques unes).



Je pense pas que ce soit le prix de la migration qui soit si prohibitif que ça (chez nous on a calculé que la migration prendrait 10 ans si on faisait ça au fur à mesure des projets), c’est vraiment des décisions de commerciaux qui insistent pour avoir du Cobol et des technos IBM ou Oracle.








TexMex a écrit :



&nbsp; Les banques/assurances (parfois) utilisent encore ces solutions pour le fait que de remplacer par quelque-chose d’autre coûte cher. Et donc la vision court-termiste se faisant, si la question revennait chaque année sur la table, le budget n’y serait pas. De plus ils ne souhaitent pas changer parce que la solution actuelle est maîtrisée (disent-ils). Avec le vécu c’est devenu robuste. “Changer” veut dire “risque” dans le langage managérial de ce secteur. Ils n’aiment pas cela. Donc il y a encore de la demande pour ce langage. Comme pour Java aussi mais cela choque pas, pas encore.





Banque/assurance =&gt; mainframe =&gt; COBOL



Le problème c’est pas vraiment le langage lui-même, c’est clairement la résistance au

changement et les mauvaises pratiques du milieu :

* Vision court-termiste mais en production depuis 30 ans

* Qualité du code exécrable (pas de documentation, pas de tests ou intégration & déploiement continue, source perdu !!!)

* Continuer de penser qu’on a une “grosse infra” avec des “gros problèmes à résoudre” (style Facebook ou Google) alors que la production pourrait tenir en 2019 sur 2 serveurs avec du code propre et une architecture de qualité



C’est surtout plus sécurisé parce que ça tourne majoritairement sur des gros système qui sont peu exposés aux accès Internet, que c’est assez verbeux et facilement compréhensible parce que voulu d’origine assez abordable par les néophytes car conçu à une époque ou l’informatique était du domaine scientifique et non popularisé comme aujourd’hui.



Et tout reste incompréhensible à qui ne s’intéresse pas.



Par ailleurs, le hacking à l’époque se faisait en assembleur…








pipoux a écrit :



C’est aussi un langage dans lequel 889 + 122 peut faire 011 si on taille les zones trop petites, sans compter les pertes de signe si on oublie de signer une zone, etc … quant aux dates, c’est juste l’enfer, rien n’existe…. Pipoux : 10 ans de Cobol, 2 ans de Pacbase







Moui…. des overflows silencieux comme en C / C++ / Java / Plein d’autres… Et ces mêmes langages ne sont pas spécialement doués pour les dates non plus.



Par contre, en COBOL 0,1 + 0,1 ça fait 0,2 et pas 0,19999999999999999999999999997 et ça, ben les organismes financiers, ils aiment.



Je crois que tu t’engage un peu là…



Compte tenu des traitements monolithiques que ces boites ont à gérer, les mainframes leur offre la puissance et la prévisibilité nécessaire.



Je ne pense pas qu’une architecture plus éclatée leur permettrait de tenir leurs engagements fonctionnels.



Il n’y a plus que le cœur du business qui tourne sur ces plateformes le reste est effectivement passé sur d’autres architectures et sont alimentés par les données traitées en central.


Une horreur pour moi le Cobol. J’ai été amené à réécrire (toujours en Cobol) un programme écrit dans les années 80 dans une de mes missions quand je bossais en SSII dans la finance. Et j’ai du l’interfacer avec de nouveaux programmes en C++ et proC, des années après, je suis encore traumatisé <img data-src=" />.



Même si je n’adhère pas à ce langage disons spécial, il faut savoir que dans les banques sur les mainframes, Il y a beaucoup de programmes qui reposent sur du Cobol, très souvent interconnectés, sur lesquels d’autres solutions sont connectés (et parfois même, dépendants de sociétés tierces, anciennes reposant sur des solutions en Cobol).



Migrer ces solutions qui fonctionnent correctement vers d’autres langages pourrait s’avérer très coûteux et très risqué (on est au cœur du système).



J’ai travaillé au début des années 2000 sur un projet de ce type de migration vers C dans un établissement bancaire. Malgré des mois de dev, et toute un équipe, à la fin du dev, les tests n’ont pas été concluants, et le projet abandonné .


Bah quant tu vois que le support de python 2 devait se terminer en 2015 mais il a été finalement repoussée de cinq années par la PSF. La PSF avait ensuite demandé aux développeurs et aux entreprises qui utilisaient toujours Python 2 de passer à Python 3, mais jusque là, plusieurs entreprises ont encore des projets sous Python 2.



Là il doit se terminer en janvier 2020 mais selon eFinancialCareers, beaucoup d’entreprises comme JPMorgan ne seront pas prêtes à temps “….à l’heure actuelle, la plateforme de trading Athena de JPMorgan est toujours pilotée par Python 2.7.”



Bref python 2 est encore largement utilisé dans le secteur financier et les banques ne sont pas toujours les plus rapides à s’adapter.



Goldman Sachs utilise Python 3.6 dans son package de finances quantitatives qui est open source, mais la banque invite toujours les étudiants à passer les tests Hackerrank en Python 2.



Bref, il semblerait que les banques sont toujours à la traîne lorsqu’il s’agit de migrer d’une technologie à une autre.


La question est le COBOL nous survivra-t-il ?

Conçu par deux femmes.&nbsp;<img data-src=" />

COBOL turns 60: Why it will outlive us all








Hadrien01 a écrit :



Je pense pas que ce soit le prix de la migration qui soit si prohibitif que ça (chez nous on a calculé que la migration prendrait 10 ans si on faisait ça au fur à mesure des projets), c’est vraiment des décisions de commerciaux qui insistent pour avoir du Cobol et des technos IBM ou Oracle.







C’est que visiblement tes problématiques ne sont pas du meme niveau que les grandes banques. Pour bosser dans l’une d’entre elle, je peux te dire que le traitement comptable central, le coeur de la banque, est en COBOL. Tout lui est connecté. Tout le SI gravite autour.



Ils sortent des fonctions annexe au compte goutte, mais le gros est pas prévu de migrer. Très cher (pas trop, très) très risqué, DONC trop cher. Aucun responsable ne prendra la décision de lacher des dizaines de millions pendant des années, pour changer un truc qui fonctionne et qui peut couler la banque si ça se passe mal (et ça se passera mal).



Donc pendant ce temps là, IBM se gave, la banque embauche les rares dev COBOL qu’ils trouvent à prix d’or, et tout le monde est content.



Pour bosser dans une banque, un des avantages important du COBOL c’est sa stabilité inégalable. Pas dans le sens “je plante peu”, mais dans le sens “peu d’update des libaries, des API etc…”.



&nbsp;

Un projet bancaire, ça peut mettre 6 mois pour être décidé, 6 mois pour les specs, 2 ans de dev et 20 ans de prod. Vous imaginez ça sur le monde web ou linux ou les frameworks changent tous les 3 mois et il faut migrer ou tout réécrire à chaque fois ?

&nbsp;










Hadrien01 a écrit :



[….]

Je pense pas que ce soit le prix de la migration qui soit si prohibitif que ça (chez nous on a calculé que la migration prendrait 10 ans si on faisait ça au fur à mesure des projets), c’est vraiment des décisions de commerciaux qui insistent pour avoir du Cobol et des technos IBM ou Oracle.







Ha, la fameuse migration qui se ferait en XX mois et qui coutera XX k€ , selon l’estimation… on les connaît. Dans le genre, j’avais entendu parlé d’une histoire d’une migration de SGBD par une boite externe (je crois que c’était directement Oracle), les 2 mois se sont transformée en 2ans, “easy qu’il disait”.







33A20158-2813-4F0D-9D4A-FD05E2C42E48 a écrit :



Moui…. des overflows silencieux comme en C / C++ / Java / Plein d’autres… Et ces mêmes langages ne sont pas spécialement doués pour les dates non plus.



Par contre, en COBOL 0,1 + 0,1 ça fait 0,2 et pas 0,19999999999999999999999999997 et ça, ben les organismes financiers, ils aiment.





Ouai, après, aujourd’hui, on est large en mémoire, on a moins besoin de pinailler entre prendre un int8 et un int64. Donc oui, l’overflow existera toujours, mais dans des cas particuliers qui soit consiste à utiliser des valeur très grande, soit que l’on est sur des cas ou la mémoire est un facteur important. Mais dans les 2 cas, on devrait se rendre compte que l’on est dans des conditions propices à l’overflow.



Sinon, tient, c’est intéressant cette gestion des nombre à virgule, ce n’est pas un float. Mais du coup, ce n’est géré matériellement via le floating-point unit du processeur, ou il faut un processeur adapté au cobol ?










Vekin a écrit :



Peut-on dire que le langage Cobol est le langage le plus vieux encore utilisé de nos jours ?



Il y a le Fortran, inventé en 1954, avec une version 2018 (ISO/CEI 1539-1:2018) !



Pas du tout : je code tous les jours dans 2 langages.

Un du moment (30% de mon temps) et l’autre en BASIC <img data-src=" />.

Bon des fois j’intervertis les instructions, mais globalement, ça va.

Je fais ça depuis 20 ans, je programme depuis 40 ans (j’ai commencé en langage machine à 13 ans).








tazvld a écrit :



Sinon, tient, c’est intéressant cette gestion des nombre à virgule, ce n’est pas un float. Mais du coup, ce n’est géré matériellement via le floating-point unit du processeur, ou il faut un processeur adapté au cobol ?







Je me rappelle plus trop, j’ai abandonné le COBOL il y a 20 ans, mais les nombres exprimés en virgule fixe sont pour autant que je me rappelle explicitement garantis comme étant à cette précision en décimal et pas des approximations en virgule flottante. La plupart du temps tu peux t’en sortir en stockant comme un entier et appliquer une puissance de 10 quand tu mixes diverses précisions dans un même calcul. Sinon, note que certains mainframes sont optimisés pour les représentations en BCD. Il y a un mot-clé COMPUTATIONAL qui te permet de spécifier comment tu veux représenter les nombres.



Chez certains, il y a encore de l’assembleur mainframe qui tourne :-p


Je travaille dans une de ces grandes banques <img data-src=" /> Chez nous aussi le SI gravite autour d’une base COBOL pour les traitements, mais je pense sincèrement qu’on a les compétences pour réaliser une migration petit à petit (on fait évoluer une partie ? -&gt; on migre). Et les estimations que j’ai vu étaient pas déconnantes (elles ne concernait que la partie banque, pas la partie assurance). Notre SI est plutôt bien découpé, et on peut tout à fait proposer des interfaces modernes aux développeurs plus haut niveau (IHM, filiales, applications, etc.) dont on enlève ensuite la base COBOL en toute transparence.



Je vois le COBOL comme un risque majeur dans les années à venir pour 1) trouver des développeurs qui veulent utiliser cette techno de merde et 2) perdre petit à petit les développeurs existants qui connaissent le fonctionnel et le technique. Mais les grands patrons sont full IBM, malgré toutes les remontées des équipes techniques.








33A20158-2813-4F0D-9D4A-FD05E2C42E48 a écrit :



Moui…. des overflows silencieux comme en C / C++ / Java / Plein d’autres… Et ces mêmes langages ne sont pas spécialement doués pour les dates non plus.



Par contre, en COBOL 0,1 + 0,1 ça fait 0,2 et pas 0,19999999999999999999999999997 et ça, ben les organismes financiers, ils aiment.





La seule solution pour que 0.1 + 0.1 fasse 0.2, c’est le calcul formel. Et je doute que COBOL fasse du calcul formel.



D’aprèshttps://medium.com/@bellmar/is-cobol-holding-you-hostage-with-math-5498c0eb428b , le COBOL est tout aussi mauvais que les autres languages pour le calcul sur les réels, sauf qu’il n’utilise pas le FPU, car faisant obligatoirement du calcul en virgule fixe.


Non, ce n’est pas la seule solution. Voir plus haut pour des pistes.



En gros, on calcule sur des nombres entiers et on place la virgule toujours au même endroit, d’où le nom virgule fixe. Et effectivement, les nombres sont plutôt codés en BCD.








Gamble a écrit :



La seule solution pour que 0.1 + 0.1 fasse 0.2, c’est le calcul formel. Et je doute que COBOL fasse du calcul formel.







COBOL étant un langage à but financier, et ce qui importe aux financiers étant que 10 centimes plus 10 centimes ça fait 20 centimes, COBOL fait exactement ce qu’il doit : des additions et soustractions exactes en base 10. Il le fait efficacement car en interne il travaille généralement avec des entiers auxquels il applique un facteur de conversion au dernier moment.



Si tu veux faire des calculs sur les réels, rien ne vaut Fortran.







Hadrien01 a écrit :



[…] quitter Cobol pour des solutions plus pérennes […]







J’ai un peu de mal à imaginer une solution plus pérenne que COBOL… Si c’est pour passer aux technologies modernes qui introduisent des breaking changes tous les deux ans, je comprends aisément pourquoi monsieur J.P. Morgan hésite…









tazvld a écrit :



Ha, la fameuse migration qui se ferait en XX mois et qui coutera XX k€ , selon l’estimation… on les connaît. Dans le genre, j’avais entendu parlé d’une histoire d’une migration de SGBD par une boite externe (je crois que c’était directement Oracle), les 2 mois se sont transformée en 2ans, “easy qu’il disait”.







En fait c’est souvent un problème lié aux deux parties.

Le prestataire te vend monts et merveilles en promettant de mettre des expérimentés pour 2€/ans et une migration “transparente”.

Le client n’a aucune connaissance ni de son SI ni de son métier (en dehors de 23 expérimentés, anciens, survivants, etc) et veut tout hier, pour 2€, sans incident.



Ca marche rarement cette recette.



Quant à moi, je suis entre ces deux là et ne fait que de constater le désastre systématique. <img data-src=" />



J’ai souvenir d’un éditeur de progiciel, au moment d’aborder les précos d’architecture selon les estimations du nombre de connexions, taille des données, etc, qui nous a quand même proposé une infra coûtant 13 du CA annuel de l’enseigne pilote. (genre 2 millions d’euros rien qu’en acquisition)



Le COBOL et son fils spirituel, l’ABAP de SAP…

Vos commentaires sur la résistance au changement dans la banque, j’ai les mêmes au quotidien sur mes projets SAP.


Dans ce cas, les 23 expérimentés de la boite n’étaient pas naïfs et avait surtout flairé le pigeon à qui refourguer le bébé (ils connaissaient le merdier, c’était eux qui le géraient et ça ne les enchantait pas vraiment de faire la migration eux même), il ont fait en sorte de blinder le contrat (je les vois tellement géré ça avec une fausse candeur) pour qu’il n’y ait pas de surprises avec un grand sourire aux lèvres (“Hahaha ! Les cons !”). Bon, du coup le prestataire a bien eu mal au cul (comme j’ai dit, il me semble que c’était Oracle directement, ça reste donc assez relatif).


Le côté chiant de tout ça, c’est quand toi tu es au milieu d’une guerre de bistouquette et que tu leur demande à un moment : “sinon, on fait quoi pour avancer ?”



Moi ça me dérange pas d’être payé à rien foutre, mais j’ai parfois l’impression d’être le seul à voir l’intérêt du client là où lui-même en a rien à cirer de jeter sa thune par la fenêtre.








DKman a écrit :



Banque/assurance =&gt; mainframe =&gt; COBOL



Le problème c’est pas vraiment le langage lui-même, c’est clairement la résistance au

changement et les mauvaises pratiques du milieu :

* Vision court-termiste mais en production depuis 30 ans

* Qualité du code exécrable (pas de documentation, pas de tests ou intégration & déploiement continue, source perdu !!!)

* Continuer de penser qu’on a une “grosse infra” avec des “gros problèmes à résoudre” (style Facebook ou Google) alors que la production pourrait tenir en 2019 sur 2 serveurs avec du code propre et une architecture de qualité





Tu es sur de connaitre ce domaine ?

Il y a des tetrachiées de tests, les docs sont suivies.

Pour l’infra en 2 serveurs, je rigole.

Si on considère la monétique en France ce sont des dizaines de millions de mouvements d’autorisations de paiement par CB à traiter par jour, par banque, et quasiment en temps reel !

Ca nécessite autre chose qu’un serveur mutualisée chez ovh.









barthous a écrit :



Tu es sur de connaitre ce domaine ?

Il y a des tetrachiées de tests, les docs sont suivies.

Pour l’infra en 2 serveurs, je rigole.

Si on considère la monétique en France ce sont des dizaines de millions de mouvements d’autorisations de paiement par CB à traiter par jour, par banque, et quasiment en temps reel !

Ca nécessite autre chose qu’un serveur mutualisée chez ovh.

&nbsp;



Je vais pas donner de nom pour rester anonyme, mais j’ai bossé dans une des plus grandes banques d’Europe



* Il y pas de tests complets/représentatifs malgré une tétrachiée environnements (test/dev/recette/preprod/prod), tant que ça tourne pas en production depuis 1 mois t’es sûre de rien

* La documentation est minimaliste ou inexistante



Et l’infra sur deux serveurs ? On est en 2019, on te demande pas de faire de la data science sur 1Po de données, juste du transactionnel assez basique au final. T’imagines pas la volumétrie traitée par n’importe lequel des GAFA vs une banque qui manipule des chiffres entre des comptes …









DKman a écrit :



Et l’infra sur deux serveurs ? On est en 2019, on te demande pas de faire de la data science sur 1Po de données, juste du transactionnel assez basique au final. T’imagines pas la volumétrie traitée par n’importe lequel des GAFA vs une banque qui manipule des chiffres entre des comptes …







Pareil… Notre domaine c’est pas la banque, mais notre appli Oracle + Middleware (Wintel … pas taper) sur un seul serveur (gros mais pas gigantesque : 8 coeurs, 32GB) se coltine facilement 10 - 15 millions de transactions par jour. C’est à peine plus petit que ce que doit se taper une banque.



Étrange qu’IBM propose maintenant des machines capables de traiter jusqu’à 1000 milliards de transactions par jour, non ?



https://www.lemondeinformatique.fr/actualites/lire-avec-le-z15-ibm-renforce-la-p…








Z-os a écrit :



Étrange qu’IBM propose maintenant des machines capables de traiter jusqu’à 1000 milliards de transactions par jour, non ?







Dans ce thread, on s’était fixé l’objectif plus modeste de valider les mouvements et paiements par CB des clients d’une banque française classique. À moins que tu me cites une banque dont les 7 milliards de clients font 100 paiements CB par jour, c’est clairement de l’overkill dans ce scénario limité.



Personne cependant ne nie qu’il existe des besoins qui pulvérisent des records (p. ex. les micro-transactions boursières).



BASIC, tu appelles ca un language évolué ? C’est un trol rassure moi !


Fermer