Qu'est-ce que COBOL? Explication de la programmation COBOL

Certaines technologies ne meurent jamais - elles disparaissent simplement dans les boiseries. 

Demandez au développeur de logiciel moyen sur COBOL (Common Business Oriented Language) et il vous regardera comme si vous parliez de papier carbone, d'essence au plomb ou du record de 78 tr / min. Comparé aux langages modernes comme Go ou Python - ou même Pascal ou C! - COBOL semble verbeux, maladroit, dépassé.

Mais COBOL a duré. Loin d'une technologie obsolète avec laquelle nous nous sommes heureusement séparés, COBOL est devenue une institution. Des bases de code COBOL massives sont toujours utilisées dans le monde entier, beaucoup d'entre elles fonctionnent presque exactement comme elles l'étaient lors de leur création. Dans le langage hollywoodien, le langage COBOL a des «jambes».

Alors, oui, COBOL est toujours pertinent et opportun - douloureusement, en fait. Ces derniers mois, COBOL est rentré dans la conscience publique, alors que des États comme le New Jersey ont lancé un appel aux programmeurs pour aider à faire passer leurs applications COBOL dans le 21e siècle.

Dans cet article, nous examinerons les origines de COBOL, comment la conception du langage de programmation se démarque encore aujourd'hui et ce qui rend COBOL à la fois si durable et si insoluble.

Histoire COBOL

COBOL est né à la fin des années 50 et au début des années 60. Le développement du langage était un projet parrainé par le département américain de la Défense (DoD) qui comprenait un consortium d'entreprises informatiques comprenant IBM, Honeywell, Sperry Rand et Burroughs. L'objectif était de créer un langage de programmation avec les attributs suivants:

  • Portabilité entre les systèmes informatiques, facilitant ainsi la migration des logiciels à la fois entre les générations de matériel et entre les fabricants de matériel.
  • Une syntaxe plus anglaise que les autres langages de l'époque (par exemple, FORTRAN) comme moyen d'encourager la programmation par un public plus large, même au détriment d'une certaine vitesse opérationnelle.
  • La capacité de s'adapter aux changements futurs de la langue.

Les premières spécifications officielles de COBOL sont sorties en 1960. Au cours de la décennie suivante, et à la consternation de ses critiques, COBOL est devenu le choix par défaut pour l'écriture d'applications d'entreprise. Une des raisons de sa propagation rapide était les effets de réseau: IBM, l'un des premiers collaborateurs sur le langage, est devenu un des premiers utilisateurs agressifs, et la présence dominante d'IBM dans le monde informatique a contribué à l'adoption de COBOL.

En raison de ses avantages de conception et de son support industriel lourd, COBOL est resté fidèle, survivant largement aux systèmes d'origine pour lesquels il a été conçu. Selon diverses estimations, en 1970, COBOL était le langage de programmation le plus utilisé au monde. En 1997, COBOL était censé exécuter environ 80% des applications professionnelles.

Langue COBOL

Les concepteurs de COBOL ont rompu avec la syntaxe laconique des autres langages de programmation de l'époque (encore une fois, comme FORTRAN). L'idée était de créer un langage de programmation qui pourrait être lu et compris par des non-programmeurs, en particulier la comptabilité, la finance, l'assurance et d'autres professionnels.

Considérez un programme «hello world» écrit dans un dialecte ancien de COBOL:

DIVISION D'IDENTIFICATION.

PROGRAM-ID. BONJOUR LE MONDE.

DIVISION DE LA PROCÉDURE.

AFFICHER «Hello World!».

AFFICHAGE FINAL.

STOP RUN.

Pour les développeurs de logiciels modernes élevés sur la lacune des langages comme Python, ce code est verbeux. Mais la verbosité de COBOL (si ce n'est son exécution) provient de la même vanité qui informe les langages modernes comme Python - ce code est lu beaucoup plus de fois qu'il n'est écrit, il devrait donc être écrit pour être lisible.

Un programme similaire dans une version plus moderne de COBOL pourrait ressembler à ceci:

id-programme. Bonjour.

division de procédure.

affiche "Hello world!".

arrêtez de courir.

Bien que cet exemple soit plus concis, les mêmes principes de base s'appliquent: le code s'efforce d'être explicite sur ce qui se passe à chaque étape.

COBOL a des règles strictes concernant la syntaxe et l'organisation interne des programmes. Un programme COBOL est explicitement divisé en sections, ou divisions , qui facilitent la localisation et la compréhension de ses composants en un coup d'œil:

  • Division d'identification: essentiellement une section de métadonnées, contenant des détails sur le programme, son auteur, etc.
  • Division de l'environnement: contient des détails sur l'environnement d'exécution, par exemple les alias pour les périphériques externes, qui peuvent nécessiter des modifications lors de l'exécution du programme sur un matériel différent. Cela a facilité la portabilité d'un programme entre les systèmes, où, par exemple, les E / S peuvent être gérées de manière totalement différente.
  • Division des données: contenant  des sections de fichiers et de stockage de travail , la division des données décrit les fichiers et les variables (respectivement) utilisés dans le programme.
  • Division de procédure: le code du programme actuel vit ici, divisé en unités logiques appelées sections, paragraphes, phrases et instructions . Il est tentant d'analoguer ces structures à des modules ou des fonctions, car elles servent à peu près les mêmes fonctions (division du code en blocs, avec des entrées et des sorties contraintes) mais elles sont beaucoup moins flexibles.

COBOL a également des règles de mise en forme extrêmement strictes pour le code, jusqu'au nombre d'espaces précédant une commande. (Les utilisateurs de Python trouveront cela familier!) Certaines de ces restrictions sont un sous-produit du passage à l'âge adulte de COBOL à l'ère du mainframe des années 1960, lorsque les programmes étaient encodés sur des cartes perforées et que le formatage exact des lignes de 80 colonnes importait . Mais d'autres restrictions de formatage renforcent la lisibilité.

L'idée derrière la réglementation stricte des programmes COBOL est de les rendre aussi auto-documentés que possible. Après tout, les programmes COBOL avaient tendance à rester en place pendant des années, voire des décennies. L'intention (sinon toujours le résultat final) était de faire de chaque programme COBOL un artefact que tout programmeur COBOL pourrait comprendre, même des années plus tard, sans l'aide du programmeur qui l'a créé. 

Défis COBOL

Une grande partie de la prévalence continue - et de l'inertie - de COBOL vient du fait que les applications COBOL, une fois écrites, avaient tendance à être laissées en place indéfiniment, avec seulement des modifications mineures. Plus l'application était volumineuse et critique, moins elle risquait d'être dérangée. Les mainframes, comme les offres d'IBM, ont joué un rôle clé: ils ont été conçus pour être hautement rétrocompatibles et pour exécuter des logiciels hérités, comme les applications COBOL, sur des générations de matériel avec un minimum de modifications. Le résultat: des milliards de lignes de code COBOL fonctionnant pratiquement inchangé pendant des décennies.

Au fil des ans, COBOL a évolué, bien que lentement. Il a même maintenant une variante orientée objet, OO-COBOL, qui inclut la prise en charge de fonctionnalités modernes telles que Unicode, les paramètres régionaux et des types de données plus avancés au-delà des chaînes et des entiers. Mais COBOL conserve de manière agressive la compatibilité descendante, de sorte que même ces améliorations et extensions adhèrent au mandat selon lequel les applications COBOL existantes doivent continuer à fonctionner.

Tous les choix de conception de langage de COBOL n'ont pas été populaires auprès des programmeurs COBOL. Certains ont conduit à des programmes trop complexes qui se sont avérés difficiles à comprendre ou à déboguer, décourageant les réécritures ou les améliorations. La GO TOcommande de COBOL , comme son homologue en C, permettait aux programmeurs de se déplacer librement dans un programme, et donc d'écrire des applications plus puissantes. Mais l'utilisation indisciplinée de GO TOpourrait transformer un programme COBOL en un nid de rats de références croisées difficiles à tracer.

La programmation COBOL aujourd'hui

COBOL survit aujourd'hui en quelques incarnations. IBM gère activement ses propres implémentations COBOL et soutient de nombreuses applications COBOL existantes là où elles s'exécutent. Micro Focus COBOL est une édition commerciale COBOL qui s'exécute sur Microsoft Windows, compile des applications COBOL vers Java et .NET, et se déploie même dans des environnements cloud comme Azure. Vous trouverez également des implémentations open source de COBOL, telles que GnuCOBOL, qui sont disponibles gratuitement et compilées en code machine natif. Cependant, il se peut qu'ils ne disposent pas de certaines des fonctionnalités de déploiement ou de débogage les plus avancées des COBOL commerciaux.

Bien que COBOL reste largement utilisé, une expertise approfondie de COBOL devient de plus en plus difficile à obtenir chaque année. En conséquence, de nombreux anciens programmeurs COBOL doivent être persuadés de quitter leur retraite pour faire entrer les anciennes applications dans le 21e siècle. Souvent, ce n'est pas la connaissance de la programmation COBOL qui est la plus avantageuse, mais une compréhension intime des environnements mainframe où COBOL s'exécute. De nombreuses applications COBOL fonctionnent main dans la main avec des technologies héritées telles que les systèmes de gestion des transactions et de bases de données IMS et CICS d'IBM, qui nécessitent toutes une expertise de plus en plus rare.

Ainsi, aussi ancienne que puisse paraître COBOL, le besoin d'expertise en langage COBOL et en environnement de développement s'est accru d'année en année. Les offres d'emploi pour COBOL et l'expertise connexe abondent. En mars 2020, le New Jersey a lancé un appel d'urgence aux programmeurs COBOL pour aider à améliorer les systèmes de prestations de chômage des États à la suite de la crise du COVID-19.

Apprendre COBOL

Les ressources d'apprentissage pour COBOL prolifèrent à nouveau, compte tenu de la demande croissante de la langue. Les développeurs modernes qui souhaitent se familiariser avec ces langages les plus durables ont quelques options:

  • L'Université de Limerick, en Irlande, propose un cours complet de programmation COBOL en ligne, gracieuseté de son Département d'informatique et des systèmes d'information. Ce n'est pas aussi à jour que certaines autres ressources, mais étant donné le peu de changement de COBOL avec le temps, ce n'est pas nécessairement un défaut.
  • L'Open Mainframe Project (qui fait partie de la Linux Foundation) propose également des ressources COBOL. L'un est un cours complet de programmation COBOL, coparrainé par IBM. Il est plus moderne que le cours de l'Université de Limerick et adapté à l'implémentation zOS d'IBM de COBOL, qui est une version largement déployée du langage.

COBOL est un incontournable de l'informatique d'entreprise depuis des décennies, et la demande de talents en programmation COBOL ne fait que croître. Si le maintien ou la modernisation des programmes COBOL vous intéresse, le moment semble plus propice que jamais pour vous y plonger.