Al lenguaje de programación COBOL lo quieren jubilar. Lo cierto es que ya tiene casi casi la edad (se creó en 1959, hace 64 años), pero es que su presencia en el mercado de la informática es tan sorprendente como, para según qué empresas, incómodo: no hay ya muchos profesionales que puedan programar en este lenguaje, así que IBM se ha propuesto tomar otro camino: traducirlo a Java.
Perenne. Puede que los más jóvenes no hayáis oído hablar del lenguaje de programación COBOL (Common Business Oriented Language), pero se trata de uno de los más veteranos y, sorprendentemente, uno de los más resilientes. Una encuesta de 2022 revelaba que siguen existiendo 800.000 millones de líneas de código de COBOL en entornos de producción dando servicio a todo tipo de empresas, y lo curioso es que ese número creció notablemente desde 2017, cuando se estimaba que había 220.000 millones de líneas.
Un lenguaje difícil. El problema, claro, es que los años pesan y el lenguaje es ineficiente para los tiempos que corren. Las empresas que lo siguen utilizando han realizado procesos de migración cuando han podido —el Banco de Australia tardó 5 años e invirtió 700 millones de dólares en uno de esos procesos—, pero hay algunos proyectos tan gigantes que adaptarlos ha sido hasta ahora imposible. El Departamento de Defensa de EEUU lleva intentando hacer eso mismo con su sistema de gestión MOCAS desde hace años: cuando se comenzó a usar ni siquiera se usaba una pantalla y un teclado, sino tarjetas perforadas.
De COBOL a Java. Como indican en TechCrunch, la empresa IBM ha anunciado estos días Code Assistant for IBM Z, una plataforma que usa un modelo de IA generativa capaz de traducir COBOL para convertirlo en código Java. Se espera que esté disponible en el cuarto trimestre de 2023, y se postula como una opción prometedora a la hora de reemplazar proyectos veteranos que se basaban en ese lenguaje para adaptarlos a los nuevos tiempos en los mainframes donde esas aplicaciones suelen correr.
CodeNet. Así se llama el modelo de generación de código que no solo entiende COBOL y Java, sino otros 80 lenguajes de programación diferentes que permiten utilizarlo en otro tipo de escenarios. Según los responsables de IBM, este sistema es capaz de mantener tanto el rendimimento como la seguridad de la aplicación original. El modelo ha sido entrenado con 1,5 billones de tokens y tiene 20.000 millones de parámetros. Acepta además ventanas de contexto de hasta 32.000 tokens, lo que permite introducir largas porciones de código COBOL que luego son traducidas.
Una evolución de los anteriores "traductores". Ruchir Puri, científico jefe de IBM Research, explicaba que aunque ya existían traductores de COBOL a Java, Code Assistant es superior al evitar el sacrificio de algunas de las ventajas proporcionadas por COBOL y produce código fácil de mantener, algo que por lo visto no está tan claro en productos de la competencia. De hecho, es capaz de ofrecer un resultado mixto que combina Java con antiguas secciones de código COBOL que siguen pudiéndose aprovechar si se considera que son útiles para la plataforma traducida.
Pero hay que revisar ese código. Un reciente estudio de Stanford indicó que este tipo de herramientas pueden introducir vulnerabilidades en el código, algo que Puri también admite. Aún así, aclara, "es esencial que el código se analice con escáneres de vulnerabilidades de última generación para garantizar la seguridad del código".
Un mercado por explotar. En la actualidad el 84% de los clientes que utilizan mainframes de IBM ejecutan en ellos aplicaciones en COBOL en segmentos como el financiero y el gubernamental. Esta división de negocio sigue siendo crucial para IBM, pero como indican en TechCrunch, la empresa está tratando de convertirla en una pasarela para su división más lucrativa, la de los entornos de computación híbrida (nube incluida) que la empresa está impulsando desde hace años.
Imágenes | IBM | Wikimedia
En Xataka | Los lenguajes perdidos: COBOL, Delphi o FORTRAN siguen siendo críticos, pero no hay quien programe en ellos
Ver 49 comentarios
49 comentarios
yuri_primero
A ver si lo he entendido...
como hay pocos que sepan cobol, vamos a poner a una IA que lo traduzca, obviamente va a cometer errores, así que todos esos programas que nadie tocaba, ahora hay que revisarlos, y el que lo revise tiene que saber de cobol para encontrar y corregir esos errores.
sircalabera
Partiendo de lo fundamentales que son los sistemas que funcionan en COBOL, usar una IA para hacer la traducción en lugar de una persona me parece una idea pésima.
Pero bueno, una fantástica ducha de realidad para los CEOs y jefecillos por ahi que piensan que lo que han leído en la WIRED de la IA es que todo se puede hacer en un ratito.
eme_8
"el lenguaje es ineficiente para los tiempos que corren"
Jajajajajj, ya le gustaría a Java o cualquier otro lenguaje ser igual de "ineficiente" cuando tienen que tratar millones de registros. Y lo sé de primera mano porq soy programador Cobol y veo a diario los problemas de java.
Por cierto, para haber tan poca gente que programe en Cobol no es que se pague muy bien que digamos, al menos en España.
Usuario desactivado
Tengo una cosa que va a funcionar con IA. Hacedme casito.
t_r_a
Para no echar gota, por dios, no hay otro lenguaje al que pasarlo que java, nos queremos ir de COBOL para irnos a guatemala, no se podría pasar mejor a .net o algo parecido, "no claaaaro, pero ya que tenemos una IA superavanzada vamos a traducir nuestras líneas coboloras a javascript, que así las podemos insertar en la web" 🤦
Me imagino la IA traduciendo los gotos con cara de tonta, esos gotos que muchas empresas usaban para separar secciones de código 😁😁😁😁
georgeelcurioso
spoiler: termina mal
acerswap
Voy a decir algo que quizás sea una tontería pero, ¿por qué no escribir los programas que sustituyan a los existentes de cero y esta vez los documentamos como es debido?
Si sabemos lo que se quiere que haga el programa no debería ser tan complicado hacer un programa que haga lo mismo con las herramientas actuales, digo yo. Que si, que reutilizar código te quita trabajo, pero estamos perpetuando la necesidad de usar un código que pocas personas dominan y al traducirlo a otros lenguajes va a hacer que sea dificil de mantener porque perderá claridad.
O eso o que dependemos de unos sistemas que ni dios sabe cómo funcionan ni lo que hacen pero que parece que funcionan para lo que los necesitamos, lo que para mi es un problema mayor.
itrio
La verdad, no entiendo la utilidad.
Si tienes los fuentes en COBOL, haz un compilador a bytecode de la JVM y así puedes mantener esos programas sin modificar e ir ampliando con otros en Java. Si tienes que tocar algo de un 'programa COBOL', pues lo migras a Java y punto.
COBOL lo aprendes en 2 días, no es magia negra ni neurocirugía, es un lenguaje con sus palabras reservadas, sus bucles y sus controles de flujo. Que el programa sea más o menos churro, más o menos entendible, no es cosa del lenguaje. Si es un churro, no lo vas a entender ni en COBOL ni en Java, a menos que la IA haga magia negra y te transforme un tocho de 3000 líneas imperativo con 300 if anidados en un código bien estructurado, orientado a objetos y con clases y entidades pequeñitas y reutilizables.
carlosmsk
Cada vez que en esta web se habla de Cobol se cuñadea a tope. No esperaba menos de los juntaletras estos. Supongo que simplemente habrán traducido un artículo en inglés de otro portal.
rasubi56
De cóbol se puede decir muchas cosas, pero no que sea ineficiente, se han dado casos en las que aplicaciones cobol se han querido sustituir por base de datos y se han vuelto otra vez a las aplicaciones originales precisamente por la eficiencia de cobol, es muy bueno en para lo que está diseñado, se podrán hacer otras consideraciones como lenguaje antiguo etc pero desde luego no la de la eficiencia de hecho, que se mantenga tantos años es gran parte debido a lo eficiente, en cambio Java es público y notorio que es bastante lento no veo que en aplicaciones rápidas y críticas de gestión pueda sustituir a Cobol.
felixmanuelbritoamarante_2
¿A Java? 🤣
Se dice que es un lenguaje muy eficiente y lo van a traducir a Java. Rayos…