La programación con modelos de lenguaje grande (LLMs) presenta un gran potencial, pero también pone de manifiesto problemas persistentes en la construcción de software. Estos inconvenientes incluyen un código desordenado, difícil de modificar de manera segura y, a menudo, poco claro en cuanto a su funcionamiento interno. En respuesta a estos desafíos, investigadores del Laboratorio de Ciencias de la Computación e Inteligencia Artificial (CSAIL) del MIT han desarrollado un enfoque más modular que promete revolucionar la forma en que se construye software.
Este nuevo modelo divide los sistemas en conceptos, que son componentes independientes diseñados para realizar tareas específicas, y sincronizaciones, que son reglas explícitas que describen cómo estos componentes se interrelacionan. La innovación resulta en un software más transparente y comprensible.
Desglose de los conceptos y sincronizaciones
El uso de un lenguaje específico de dominio (DSL) permite expresar las sincronizaciones de manera sencilla, facilitando que los LLMs generen código de forma confiable. En un estudio de caso práctico, el equipo demostró cómo esta metodología puede integrar características que, de otro modo, estarían dispersas en diferentes servicios.
El problema de la fragmentación de características
El desafío principal radica en que, en la mayoría de los sistemas modernos, una única función no está completamente contenida en un solo lugar. Por ejemplo, al incorporar un botón de compartir en plataformas sociales como Instagram, su funcionalidad se distribuye en varios fragmentos de código que gestionan la publicación, las notificaciones y la autenticación de usuarios, entre otros. Este fenómeno, que el profesor Daniel Jackson del MIT denomina fragmentación de características, representa un obstáculo significativo para la fiabilidad del software.
Jackson explica que, con el enfoque tradicional, entender cómo funciona la función de compartir puede requerir buscar en diferentes lugares dentro del código, donde las conexiones están enredadas en instrucciones de bajo nivel.
Una nueva forma de entender el software
Los conceptos y las sincronizaciones están diseñados para abordar esta fragmentación. Un concepto agrupa una funcionalidad coherente, como el me gusta, comentar o seguir, junto con su estado y las acciones que puede realizar. Las sincronizaciones, por su parte, describen cómo interactúan estos conceptos a un nivel superior.
Un lenguaje para la interacción clara
En lugar de escribir código de integración desordenado, los desarrolladores pueden utilizar el DSL para definir estas conexiones de manera directa. En este lenguaje, las reglas son simples y claras: la acción de un concepto puede activar otro, permitiendo que un cambio en una parte del sistema se refleje en otra. Jackson ilustra esto diciendo que los conceptos actúan como módulos completamente limpios e independientes, mientras que las sincronizaciones funcionan como contratos que definen cómo deben interactuar esos módulos.
“¿Por qué no podemos leer el código como un libro?”, pregunta Jackson, enfatizando la idea de que el software debería ser legible y estar en términos comprensibles para los humanos. El objetivo es que los conceptos se asemejen a fenómenos familiares, y las sincronizaciones representen nuestra intuición sobre cómo se combinan.
Ventajas adicionales y futuro del software
Las ventajas de este nuevo enfoque no se limitan a la claridad. Dado que las sincronizaciones son explícitas y declarativas, pueden ser analizadas y verificadas, lo que abre la puerta a un desarrollo de software más seguro y automatizado. Esto permite que los asistentes de IA sugieran nuevas características sin introducir efectos secundarios ocultos.
En el estudio, los investigadores asignaron características como gustar, comentar y compartir a un solo concepto, logrando un enfoque más modular similar a la arquitectura de microservicios. Esta organización permite que los desarrolladores localicen y prueben características con facilidad, preservando la legibilidad y la consistencia del sistema.
Este nuevo modelo divide los sistemas en conceptos, que son componentes independientes diseñados para realizar tareas específicas, y sincronizaciones, que son reglas explícitas que describen cómo estos componentes se interrelacionan. La innovación resulta en un software más transparente y comprensible.0


