¿Qué es COBOL? Explicación de la programación COBOL

Algunas tecnologías nunca mueren, simplemente se desvanecen en la madera. 

Pregúntele al desarrollador de software promedio sobre COBOL (Common Business Oriented Language) y lo mirará como si hubiera mencionado papel carbón, gasolina con plomo o el récord de 78 RPM. Comparado con lenguajes modernos como Go o Python, ¡o incluso Pascal o C!, COBOL parece prolijo, torpe, pasado de moda.

Pero COBOL ha perdurado. Lejos de ser una tecnología obsoleta de la que felizmente nos separamos, COBOL se ha convertido en una institución. Las bases de código COBOL masivas todavía se utilizan en todo el mundo, muchas de las cuales se ejecutan casi exactamente como estaban cuando se crearon por primera vez. En el lenguaje de Hollywood, el lenguaje COBOL tiene "piernas".

Entonces, sí, COBOL sigue siendo relevante y oportuno, dolorosamente, de hecho. En los últimos meses, COBOL ha vuelto a entrar en la conciencia pública, ya que estados como Nueva Jersey han hecho un llamado a los programadores para que ayuden a trasladar sus aplicaciones COBOL al siglo XXI.

En este artículo veremos los orígenes de COBOL, cómo se destaca el diseño del lenguaje de programación incluso hoy en día, y qué hace que COBOL sea tan duradero e intratable.

Historia COBOL

COBOL surgió a finales de la década de 1950 y principios de la de 1960. El desarrollo del lenguaje fue un proyecto patrocinado por el Departamento de Defensa de los Estados Unidos (DoD) que incluía un consorcio de empresas informáticas como IBM, Honeywell, Sperry Rand y Burroughs. El objetivo era crear un lenguaje de programación con los siguientes atributos:

  • Portabilidad entre sistemas informáticos, lo que facilita la migración de software tanto entre generaciones de hardware como entre fabricantes de hardware.
  • Más sintaxis parecida al inglés que otros idiomas de la época (por ejemplo, FORTRAN) como una forma de fomentar la programación por una audiencia más amplia, incluso a expensas de cierta velocidad operativa.
  • La capacidad de adaptarse a futuros cambios en el idioma.

Las primeras especificaciones oficiales de COBOL aparecieron en 1960. Durante la siguiente década, y para consternación de sus críticos, COBOL se convirtió en la opción predeterminada para escribir aplicaciones comerciales. Una de las razones de su rápida propagación fueron los efectos de red: IBM, uno de los colaboradores originales del lenguaje, se convirtió en uno de los primeros en adoptar y la presencia dominante de IBM en el mundo de la informática ayudó a contribuir a la adopción de COBOL.

Debido a sus ventajas de diseño y al respaldo de la industria de peso pesado, COBOL se ha mantenido, superando los sistemas originales para los que fue diseñado por un amplio margen. Según diversas estimaciones, en 1970 COBOL era el lenguaje de programación más utilizado en el mundo. En 1997, se creía que COBOL ejecutaba alrededor del 80 por ciento de las aplicaciones comerciales.

Lenguaje COBOL

Los diseñadores de COBOL rompieron con la sintaxis concisa de otros lenguajes de programación en ese momento (nuevamente, como FORTRAN). La idea era crear un lenguaje de programación que pudiera ser leído y comprendido por personas que no eran programadores, en particular contables, finanzas, seguros y otros profesionales de negocios.

Considere un programa de "hola mundo" escrito en un dialecto temprano de COBOL:

DIVISIÓN DE IDENTIFICACIÓN.

PROGRAMA-ID. HOLA MUNDO.

DIVISIÓN DE PROCEDIMIENTOS.

MOSTRAR '¡Hola mundo!'.

PANTALLA FINAL.

DETENER EJECUTAR.

Para los desarrolladores de software modernos que se han criado en la concisión de lenguajes como Python, este código es detallado. Pero la verbosidad de COBOL (si no su ejecución) surge de la misma presunción que informa a los lenguajes modernos como Python: que el código se lee muchas más veces de las que se escribe, por lo que debería escribirse para que sea legible.

Un programa similar en una versión más moderna de COBOL podría verse así:

id-programa. Hola.

división de procedimientos.

mostrar "¡Hola mundo!".

dejar de correr.

Si bien este ejemplo es más conciso, se aplican los mismos principios básicos: el código se esfuerza por ser explícito sobre lo que sucede en cada paso.

COBOL tiene reglas estrictas con respecto a la sintaxis y la organización interna de los programas. Un programa COBOL se divide explícitamente en secciones, o divisiones , que facilitan la localización y comprensión de sus componentes de un vistazo:

  • División de identificación: Esencialmente una sección de metadatos, que contiene detalles sobre el programa, su autor, etc.
  • División del entorno: contiene detalles sobre el entorno de ejecución, por ejemplo, alias para dispositivos externos, que pueden necesitar ser editados cuando se ejecuta el programa en un hardware diferente. Esto ayudó a la portabilidad de un programa entre sistemas, donde, por ejemplo, la E / S podría manejarse de manera completamente diferente.
  • División de datos: que contiene  secciones de almacenamiento de archivos y trabajo , la división de datos describe los archivos y las variables (respectivamente) que se utilizan en el programa.
  • División de procedimientos: el código del programa real vive aquí, dividido en unidades lógicas llamadas secciones, párrafos, oraciones y declaraciones . Es tentador comparar estas estructuras con módulos o funciones, porque sirven aproximadamente las mismas funciones (dividiendo el código en bloques, con entradas y salidas restringidas) pero son mucho menos flexibles.

COBOL también tiene reglas de formato extremadamente estrictas para el código, hasta el número de espacios que preceden a un comando. (¡Los usuarios de Python encontrarán esto familiar!) Algunas de estas restricciones son un subproducto de la mayoría de edad de COBOL durante la era del mainframe de la década de 1960, cuando los programas se codificaban en tarjetas perforadas y importaba el formato exacto de las líneas de 80 columnas. . Pero otras restricciones de formato imponen la legibilidad.

La idea detrás de la estricta reglamentación de los programas COBOL es hacer que se documenten lo más posible. Después de todo, los programas COBOL tendían a mantenerse durante años o décadas. La intención (si no siempre el resultado final) era hacer de cada programa COBOL un artefacto que cualquier programador COBOL pudiera entender, incluso años después, sin la ayuda del programador que lo creó. 

Desafíos COBOL

Gran parte de la prevalencia continua de COBOL, y la inercia, proviene del hecho de que las aplicaciones de COBOL, una vez escritas, tendían a dejarse en su lugar indefinidamente, con solo modificaciones menores. Cuanto más grande y más importante sea la aplicación, menos probabilidades hay de que se altere. Los mainframes, al igual que las ofertas de IBM, jugaron un papel clave: fueron construidos para ser altamente compatibles con versiones anteriores y para ejecutar software heredado, como aplicaciones COBOL, en generaciones de hardware con modificaciones mínimas. El resultado: miles de millones de líneas de código COBOL que se ejecutan esencialmente sin cambios durante décadas.

A lo largo de los años, COBOL ha evolucionado, aunque lentamente. Incluso ahora tiene una variante orientada a objetos, OO-COBOL, que incluye soporte para características modernas como Unicode, configuraciones regionales y tipos de datos más avanzados más allá de cadenas y números enteros. Pero COBOL retiene agresivamente la compatibilidad con versiones anteriores, por lo que incluso estas mejoras y extensiones se adhieren al mandato de que las aplicaciones COBOL existentes deben continuar ejecutándose.

No todas las opciones de diseño de lenguaje de COBOL han sido populares entre los programadores de COBOL. Algunos han dado lugar a programas demasiado complejos que resultaron difíciles de comprender o depurar, lo que desalienta las reescrituras o las mejoras. El GO TOcomando de COBOL , como su contraparte en C, permitió a los programadores saltar libremente alrededor de un programa y, por lo tanto, escribir aplicaciones más potentes. Pero el uso indisciplinado de GO TOpodría convertir un programa COBOL en un nido de ratas de referencias cruzadas difíciles de rastrear.

Programación COBOL hoy

COBOL sobrevive hoy en algunas encarnaciones. IBM mantiene activamente sus propias implementaciones COBOL y sostiene muchas aplicaciones COBOL existentes donde se ejecutan. Micro Focus COBOL es una edición comercial de COBOL que se ejecuta en Microsoft Windows, compila aplicaciones COBOL en Java y .NET e incluso se implementa en entornos de nube como Azure. También encontrará implementaciones de código abierto de COBOL, como GnuCOBOL, que están disponibles gratuitamente y se compilan en código de máquina nativo. Sin embargo, pueden carecer de algunas de las funciones de depuración o implementación más avanzadas de los COBOL comerciales.

Si bien COBOL sigue siendo de uso generalizado, la experiencia profunda de COBOL es cada vez más difícil de conseguir con cada año que pasa. Como resultado, muchos ex programadores de COBOL deben dejar de jubilarse para llevar aplicaciones más antiguas al siglo XXI. A menudo, no es el conocimiento de programación COBOL lo más importante, sino una comprensión íntima de los entornos de mainframe donde se ejecuta COBOL. Muchas aplicaciones COBOL trabajan de la mano con tecnología heredada, como los sistemas de base de datos y gestión de transacciones IMS y CICS de IBM, todos los cuales requieren una experiencia que es cada vez más rara.

Por lo tanto, por muy anticuado que parezca COBOL, la necesidad de conocimientos de entorno de desarrollo y lenguaje COBOL ha crecido con cada año que pasa. Abundan los listados de trabajo para COBOL y experiencia relacionada. En marzo de 2020, Nueva Jersey emitió una llamada de emergencia para que los programadores de COBOL ayudaran a actualizar los sistemas estatales de beneficios por desempleo tras la crisis de COVID-19.

Aprenda COBOL

Los recursos de aprendizaje para COBOL están proliferando nuevamente, dada la creciente demanda del idioma. Los desarrolladores modernos que quieran ponerse al día con el lenguaje más duradero tienen algunas opciones:

  • La Universidad de Limerick, en Irlanda, ofrece un curso completo de programación COBOL en línea, cortesía de su Departamento de Ciencias de la Computación y Sistemas de Información. No está tan actualizado como otros recursos, pero dado lo poco que cambia COBOL con el tiempo, eso no es necesariamente un defecto.
  • El Open Mainframe Project (parte de Linux Foundation) también ofrece recursos COBOL. Uno es un curso completo de programación COBOL, copatrocinado por IBM. Es más moderno que el curso de la Universidad de Limerick y está adaptado a la implementación zOS de COBOL de IBM, que es una versión ampliamente implementada del lenguaje.

COBOL ha sido un elemento básico de la informática empresarial durante décadas, y la demanda de talento en programación COBOL solo sigue creciendo. Si le interesa mantener o modernizar los programas COBOL, parece que es el momento más propicio que nunca para sumergirse.