PowerRustCOBOL
Lo que comenzó como una simple experimentación se está transformando en un pequeño proyecto capaz de entregar cierto valor. Todavía está muy crudo, pero es bastante prometedor.
Utilicé Claude Code para imaginar una versión modernizada de PowerCobol 3.0. En lugar de intentar reutilizar código existente, imaginé cómo sería un PowerCobol que mantuviera en gran parte la filosofía del Fujitsu PowerCobol 3.0: sin ActiveX, sin dependencias del Registro de Windows, y con soporte para actividades modernas (llamar APIs REST, poseer un Agente de Inteligencia Artificial integrado capaz de modificar los propios objetos del formulario), todo ello con una interfaz moderna al estilo Apple Liquid Glass de los nuevos iPhones.
No utilicé el modelo de programación de Fujitsu (Nested programs), aunque quizás lo incorpore más adelante. Opté por algo más simple: un formulario = un programa. El enlace de eventos de un botón, timer o cualquier objeto sería un párrafo (generado por la IDE y editable por el desarrollador), de modo que todos los objetos convivieran dentro del mismo código.
Agregué una gran cantidad de controles (date picker, grid, imágenes, vídeos, elementos geométricos, botones, labels, textbox multilínea, listboxes, etc.). No está listo todavía para uso en producción, pero quise compartirlo desde ya para recibir opiniones sobre qué funcionalidades sería interesante añadir.
Gasté pocas horas describiendo lo que quería. Toda la programación fue realizada por Claude Code utilizando Rust, un lenguaje moderno y extremadamente rápido que está siendo considerado para reemplazar el kernel de Linux. Rust interpreta y ejecuta el código COBOL sin problemas.
Creo que lo más interesante es ver cómo los servicios de codificación con Inteligencia Artificial Generativa están cambiando completamente la forma de trabajar.
Además del timer tradicional de PowerCOBOL, también añadí un objeto para realizar llamadas a APIs (REST) y soporte completo a Generative AI Agents.
Un agente es capaz de simular cualquier comportamiento que deseemos. Por ejemplo: Defina una tool capaz de calcular la diferencia entre dos fechas definidas como PIC 9(8) (DDMMYYYY). Cuando solicite SET days TO agent::run('Calcule la diferencia entre "data-item1" y "data-item2"'), el agente retorna el resultado en formato PIC 9(8).
En realidad, cualquier cosa que podamos imaginar es posible solicitarle al agente. Por ejemplo: analice los ítems de la tabla valores-por-mes y haga una predicción del valor del próximo mes, colocando el resultado en el ítem de datos valor-del-proximo-mes. ¡Listo! Esto es todo lo que se necesita para crear subrutinas dinámicamente. Imagina todo lo que se puede hacer con esta capacidad...
Aún no tengo un plazo definido para liberar una versión testable. Claude es caro y mi plan actual se agota muy rápidamente, necesitando algunas horas para poder continuar. No pretendo cobrar por el uso de la solución, pero sería muy interesante si pudieran contribuir para contratar una suscripción más robusta que acelere el desarrollo.
No doy garantías, ni pretendo dar soporte, ni garantizo que la solución funcione perfectamente. Simplemente es un hobby mío y no quiero tener que lidiar con el dolor de cabeza de dar soporte a un producto que, por más interesante que sea, no tiene razón de existir. El mercado de IDEs nunca volverá a ser el mismo, con cada vez menos desarrollo siendo realizado de forma artesanal como hacíamos hasta hace pocos años, precisamente por causa de la tecnología que está posibilitando crear este proyecto (Inteligencia Artificial Generativa).
|