Après avoir lu une étude de REUTERS il y a quelques semaines, j’avais envie d’écrire un article à propos du langage de programmation COBOL. Le COBOL reste un langage informatique – malheureusement mal connu de nos jours – que j’ai pratiqué durant une grande partie de ma vie de développeur. Abordons sérieusement le sujet car vous allez découvrir que le COBOL – langage « vintage » – a encore de belles années devant lui.
Nostalgique COBOL
Etudiant dans les années 1990, je suivais un cursus informatique et mes premières lignes de code furent en BASIC. Rapidement, nous laissions le langage interprété pour apprendre les concepts de la programmation compilée avec le COBOL. L’apprentissage fût laborieux et parfois frustrant. En effet, l’école privée dans laquelle j’étudiais disposait d’un IBM System/36 – chose incroyable à ce jour – qu’il fallait se partager lors des compilations avec les autres étudiants. Loin d’une méthode intuitive, cette programmation verbeuse passait par une analyse précise du projet. Bien souvent, il fallait débugger son programme avec des tonnes de listings papier. Cette méthode aurait rebuter bien des programmeurs mais c’était la seule méthode. N’entamant rien à ma créativité, structuré et puissant, et ne laissant rien au hasard, le COBOL accompagnerait mon apprentissage de l’informatique durant de longues années. Même si le PASCAL, le C et le C++ devenaient au fil du temps, mes outils du quotidien, le COBOL restera mon langage préféré pour sa seule qualité indéniable : la performance.
Il fallait apprendre à analyser les projets avec des méthodes très adaptées au langage COBOL, telle que la méthode d’analyse Warnier. Méthode qui n’a rien à voir avec l’Extrem Programming d’aujourd’hui. Avant de pouvoir observer le comportement du programme, il fallait concevoir sur le papier les organigrammes logiques, identifier chaque constante et chaque variable ; typer chaque champs et déterminer au mieux l’encombrement des données ainsi que la place nécessaire du programme en mémoire. Aujourd’hui, on ne se préoccupe plus de cela car le matériel offre un confort incroyable ; c’est de toute évidence un tort, car même avec 8 Go de RAM, un programme pour smartphone devra être optimisé comme il se doit comme bien fonctionner ; je vous rappelle qu’un IBM S/36 ne disposait que 7Mo de RAM (32Mo pour la version Advanced) avec un processeur 8bits et cette machine arrivait quand même à faire tourner des programmes financiers et commerciaux sans planter.
Exemple de programme COBOL :
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. premier-programme.
000003
000004 PROCEDURE DIVISION.
000005 paragraphe-principal.
000006 hello-world.
000007 DISPLAY "Hello World !".
000008 STOP RUN.
000009
000010 END PROGRAM premier-programme.
Historique du COBOL
Un peu d’histoire pour placer le sujet dans le temps. Le COBOL est un langage de programmation commun (indépendant du hardware), ciblant principalement l’informatique à caractère commercial. Initialement créé en 1959 par le comité SRC (Short Range Committee) à la demande de la défense américaine et sous le lead de Charles Phillips, les spécifications du COBOL furent validées en 1960. Les racines du COBOL sont issues du langage FLOWMATIC – lui-même inventé par Grace Hopper, la mère du COBOL – et COMTRAN d’IBM (par Bob Bemer). Ce langage fût créé en 6 mois. La première version COBOL-60 allait recevoir des améliorations au fil du temps pour devenir un langage de référence très évolué et cela jusqu’en 2014, l’année de la dernière release majeure. Et comprenez bien que ce langage est encore utilisé de nos jours. C’est d’ailleurs le sujet de ce billet. Les versions du COBOL sont les suivantes : COBOL-60, COBOL-68, COBOL-85, COBOL-2002, COBOL-2014. La version 2002 introduit les technologies modernes telles que les notions de programmation orientée objet ainsi que le support Unicode et XML. Le caractère de ce langage est que la totalité des constantes, variables et structures de données sont précisément définies et typées en début de programme. Ensuite vient la partie procédurale incluant précisément les instructions à exécuter. Cette structure de programmation s’organise comme un arbre et chaque ligne de code doit être unique et identifiée par des numéros. C’est donc un langage très structuré et verbeux qui permet ainsi aux entreprises, administrations et institutions de pouvoir auditer le code des programmes commerciaux ou financiers.
En effet, un expert comptable lira plus facilement le code COBOL comme suit pour auditer un process commercial :
ADD montant-fact TO montant-total-prod montant-total-liv montant-total-taxes.
Le COBOL impose donc une syntaxe complexe pour être le plus proche du langage naturel. Le COBOL est un langage compilé. L’exécutable généré est un code binaire très proche du langage machine et ses performances sont indéniables. D’autres avantages, tels que la gestion des décimales en virgules fixes, des traitements par lots et des dépassements arithmétiques en font un langage fiable et populaire dans les grandes entreprises et institutions financières.
AcuCobol
Le COBOL dans notre époque en 2017
Aujourd’hui, le COBOL est parfaitement méconnu, parfois dénigré. Lorsque vous rencontrez les jeunes ingénieurs diplômés en informatique, la discussion autour de l’histoire de l’informatique tourne court. Parler du COBOL de nos jours fait rire immédiatement. Si vous dites avoir développé en COBOL, vous êtes irrémédiablement relégué à l’époque des dinosaures.
Pourtant les chiffres de l’étude REUTERS « COBOL Blues » d’avril 2017 sont édifiants.
Voici une synthèse de son contenu :
- 43% des systèmes informatiques bancaires sont construit avec COBOL,
- 80% des transactions bancaires personnelles utilisent un système COBOL,
- 95% des échanges Cartes Bleues sont réalisés avec du code COBOL,
- 220 Milliard de lignes de code COBOL sont encore utilisées de nos jours,
- Chaque jour, 3 milliard de dollars sont gérés par des programmes COBOL.
Le classement des langages les plus populaires (Etude REUTERS 2017) :
- en 1987, le COBOL était en 8ème place dans le classement des langages utilisés, derrière le langage C, C++ et Fortran.
- en 1992, il descendait en 12ème place, toujours derrière le C.
- en 1997, il se plaçait en 3ème place, le JAVA arrivait en 13ème place.
- en 2002, le COBOL repassait en 5ème place et le JAVA prenait la tête devant le C ; le FORTRAN descendait en 22ème place, le C# arrivait en 4ème place devant le PYTHON.
- en 2017, le JAVA est toujours en tête, devant le C et le PYTHON ; désormais le COBOL passe en 24ème place.
Depuis quelques années, les ordinateurs centraux (mainframes) ont été abandonnés au profit d’ordinateurs décentralisés ou dans le Cloud. Pourtant, 92 des 100 premières banques américaines utilisent encore des gros systèmes avec des programmes COBOL. Beaucoup de ces systèmes sont « vieux » mais toujours opérationnels. Pourquoi une telle longévité ? Fiabilité et stabilité sont les premiers qualificatifs que l’on attribut au COBOL et les systèmes qui le portent. Alors pourquoi changer ? Quelles plus-values à redévelopper ces programmes ? Certaines entreprises se sont lancées dans l’aventure. Un bon exemple de migration infructueuse avec le cas de la banque « Commonwealth Bank of Australia ». Cet établissement a souhaité remplacer son système COBOL-2012 et a tenté pendant 5 ans de migrer l’ensemble de ses flux COBOL vers une plateforme JAVA pour un côut total de 750 millions de dollars. Un développeur a confié au journal américain TEMPA BAY, qu’il n’avait toujours pas fini de transcoder les programmes principaux 5 ans après le début et pire encore, que les performances n’étaient pas au rendez-vous. Le COBOL a donc encore sa place dans les grands systèmes informatiques.
Ainsi, certaines banques recrutent encore des développeurs COBOL. Et les profils sont chouchoutés. La plupart des postes offerts, proposent en sus des formations sur mainframe ou sur des outils spécifiques tels que PACBASE, un poste stable pour de longues années encore. Mais voilà ! Travailler dans des établissements bancaires ou d’assurances est bien moins sexy que dans une Start-up. En effet, certains groupes financiers importants n’arrivent pas à rivaliser avec les grandes entreprises comme GOOGLE et FACEBOOK pour offrir des postes aux attentes des jeunes diplômés. Les développeurs COBOL sont agés en moyenne de 45/50 ans. Les profils sont très recherchés et très bien payés. La plupart de ces développeurs continuent de maintenir, d’améliorer ou de migrer les systèmes codés en COBOL. Le COBOL n’est donc pas mort ; au contraire, ce langage est en passe de devenir un langage de programmation hybride JAVA. De quoi attirer de nouveaux talents et de conserver l’existant performant et fiable. Un excellent article a été réalisé sur le sujet, par David Cassel pour le site THENEWSTACK. Je vous invite à le lire.
Conclusion
J’ai moi même maintenu et amélioré de nombreux programmes ACUCOBOL (un Fork de COBOL-85 ANSI) sous SOLARIS. Ces programmes tournent encore dans une entreprise de la région Centre.
L’entreprise n’a jamais souhaité faire un nouvel investissement pour remplacer son système informatique commercial, avec pour seule raison que l’application en COBOL faisait le travail parfaitement et qu’un redéveloppement n’amènerait aucune plus-value au quotidien. Argument imparable ! Pourtant, un jour, il faudra bien changer le pauvre SPARC T1 et son container SOLARIS 8.
Quelques chiffres ! La Présence du COBOL en 2017
- Elaboration des systèmes informatiques bancaires 43%
- Utilisation des transactions bancaires personnelles 80%
- Echanges Cartes Bleues dans le monde 95%
Pour conclure, jeunes ingénieurs !
Si vous êtes malins, engouffrez-vous dans le développement COBOL !!! C’est une valeur sûre avec des postes très bien payés qui demandent simplement du sang neuf.