← Últimos artículos
🤖 AI

A Literate Programming Environment for Human and Machine Agents

Este artículo presenta un entorno de programación literaria que integra código ejecutable, lenguaje natural y datos estructurados a través de una arquitectura de grafo de nombres, optimizando así el contexto para los Modelos de Lenguaje de Gran Escala y proporcionando a los agentes de máquinas herramientas conscientes de símbolos comparables a los IDE de los humanos.

Autores originales: Adam T. Burke

Publicado 2026-08-26
📖 9 min de lectura🧠 Análisis profundo

Autores originales: Adam T. Burke

Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo

En la era moderna de la computación, un nuevo tipo de compañero ha entrado en el taller: el modelo de lenguaje. Estos son sistemas vastos y flexibles entrenados en enormes bibliotecas de texto humano, capaces de leer instrucciones y escribir código con una fluidez sorprendente. Para muchos, este cambio se siente como una expansión repentina de la capacidad, permitiendo que los novatos construyan scripts y que los expertos aborden sistemas masivos. Sin embargo, persiste una tensión fundamental. Aunque estas máquinas pueden procesar lenguaje, no "aprenden" realmente ni recuerdan lo que sucede en una conversación una vez que la sesión termina. Dependen enteramente del texto que tiene actualmente visible, una ventana de contexto limitada que debe ser constantemente rellenada con detalles relevantes. Si un programador quiere que la máquina comprenda la lógica detrás de un fragmento de código, esa lógica debe estar presente en el texto justo al lado del código mismo. Esto crea un desafío para la forma en que escribimos software. Tradicionalmente, el código y las explicaciones humanas de ese código se han mantenido en lugares separados, o enterradas en comentarios que las máquinas a menudo ignoran. Pero si la máquina ha de ser un verdadero colaborador, la historia del programa y el programa mismo deben vivir juntos, uno al lado del otro, en un formato que tanto humanos como máquinas puedan leer con igual facilidad.

Este es el problema central abordado por un nuevo entorno llamado notlob, creado por el investigador Adam T. Burke. El trabajo propone un retorno a una vieja idea conocida como programación literaria, pero actualizada para una era donde tanto humanos como agentes artificiales leen los mismos documentos. En este sistema, un proyecto de software no es una colección de archivos separados para código, documentación y pruebas. En su lugar, es un documento único y fluido que parece un ensayo. El texto explica las ideas, la motivación y el diseño, mientras que las instrucciones ejecutables están incrustadas directamente dentro de la prosa. Los investigadores construyeron un sistema funcional que trata este documento combinado como la fuente principal de verdad. Cuando el sistema lee el archivo, no solo ve palabras; construye un mapa detallado de cómo cada nombre, concepto y pieza de código se relaciona con los demás. Este mapa, que el autor llama un grafo de nombres (name-graph), permite a un agente de máquina navegar por el proyecto no mediante la búsqueda de palabras clave, sino siguiendo las conexiones lógicas entre las ideas, de forma muy similar a como un lector humano seguiría un hilo de pensamiento a través de un libro.

El diseño de notlob está impulsado por tres observaciones simples sobre cómo está cambiando la programación. Primero, el lenguaje natural se ha convertido en la forma dominante de especificar y organizar el software cuando se trabaja con inteligencia artificial. Segundo, las verificaciones generadas por computadora que validan que el código aún funciona son más valiosas que nunca, sirviendo como un ciclo de retroalimentación fiable para los agentes. Tercero, la generación actual de estos modelos de lenguaje depende fuertemente de la cantidad de texto que pueden ver a la vez. Para abordar esto, los investigadores crearon un lenguaje donde la explicación, la ejecución y la verificación residen en el mismo archivo. Un documento típico comienza con un título y una introducción, seguidos de la lógica central del programa. Esto es seguido por una sección para pruebas y referencias, separada por una línea simple. El sistema utiliza marcadores específicos para distinguir entre un fragmento de prosa, un bloque de código, una propiedad que siempre debe ser cierta y un caso de prueba específico. Por ejemplo, una sección podría describir una secuencia matemática, seguida inmediatamente por el código que la genera, y luego un bloque de texto que establece que el código debe satisfacer ciertas reglas. El sistema luego ejecuta estas reglas para asegurar que el código se comporte como el texto afirma que debería hacerlo.

Para que esto funcione, los investigadores desarrollaron un analizador (parser) que trata los nombres como los objetos más importantes del sistema. En la programación tradicional, un nombre es solo una etiqueta para una variable o función. En notlob, un nombre es un ciudadano de primera clase que vincula la explicación escrita con el código ejecutable. Cuando el sistema procesa un archivo, construye un grafo que conecta el texto que describe un concepto con el código que lo implementa, y con las pruebas que lo verifican. Esta estructura permite que un agente de máquina salte de una idea de alto nivel a las líneas específicas de código que la realizan, o que encuentre cada lugar donde se usa un concepto específico, sin perderse en un mar de archivos. El sistema incluye herramientas que pueden exportar este mapa en formatos estándar, permitiendo que otro software consulte las relaciones entre las diferentes partes del proyecto. Esto imita la forma en que un programador humano utiliza un entorno de desarrollo integrado para encontrar dónde se define una función o quién la llama, pero lo hace comprendiendo el significado semántico del texto, no solo la estructura de archivos.

Los investigadores probaron este entorno construyendo varios programas funcionales, incluyendo una herramienta para convertir números en números romanos y un juego basado en la web basado en redes de Petri, que son diagramas utilizados para modelar sistemas con partes que interactúan. En un experimento, utilizaron un agente artificial para ayudar a escribir un proyecto desde cero. El agente recibió una descripción de alto nivel del objetivo y algunas firmas de funciones vacías. El agente luego completó el código, escribió las pruebas y organizó la prosa, todo ello adhiriéndose a la estructura del documento notlob. El agente fue capaz de detectar inconsistencias entre el texto y el código, como una discrepancia en la definición de una función, y pidió aclaraciones. En otro caso, el sistema ayudó a un agente a encontrar un error sutil en un proyecto de procesamiento de señales digitales que había sido pasado por alto por otros métodos de prueba. El error estaba relacionado con un cálculo que se volvía inestable bajo ciertas condiciones, y las pruebas de propiedades del agente, que fueron escritas como parte del ensayo, expusieron con éxito el error.

Sin embargo, los investigadores también observaron que los agentes no eran perfectos. En varias instancias, los agentes tendían a descuidar las partes declarativas del documento, como las propiedades formales y las reglas estructurales, centrándose en cambio en la tarea inmediata de escribir código. A veces trataban el texto como una sugerencia en lugar de una restricción, lo que llevaba a inconsistencias que requerían la intervención humana para ser corregidas. Los investigadores notaron que esta dinámica es familiar para los equipos de software humanos, donde los desarrolladores senior deben a menudo intervenir para asegurar que la documentación y el código permanezcan alineados. El estudio sugiere que, aunque estos modelos de lenguaje son poderosos, todavía se benefician de una estructura que obliga a que el código y la explicación permanezcan en estrecho contacto. El entorno notlob proporciona esa estructura, ofreciendo una forma de mantener la teoría del programa y la práctica del código en el mismo lugar.

El trabajo también se distingue de otros enfoques para el uso de modelos de lenguaje en la programación. Algunos métodos tratan la descripción en lenguaje natural como una especificación separada que precede a la escritura del código, un proceso que puede derivar en una desconexión entre el plan y el resultado. Otros dependen de que el modelo resuma o regenere el código después de que este ha sido escrito. Notlob toma un camino diferente al co-localizar la especificación, el código y las pruebas en un único espacio de trabajo iterativo. Esto permite que humanos y máquinas trabajen en los tres elementos simultáneamente, refinando la lógica y la explicación en tándem. Los investigadores argumentan que este enfoque es más efectivo que tratar el lenguaje natural como un mero prompt o un documento separado. Al hacer que la prosa y el código sean partes inseparables del mismo artefacto, el sistema asegura que la ventana de contexto del modelo de lenguaje esté llena con la información más relevante posible.

La implementación de notlob es un proyecto de código abierto que actualmente soporta tres lenguajes de programación establecidos: Haskell, Python y TypeScript. El sistema incluye un conjunto de herramientas de línea de comandos que permiten a los usuarios construir, probar y visualizar el proyecto. Una herramienta puede renderizar el documento como una página web estándar, mientras que otra puede generar un mapa visual del grafo de nombres, mostrando cómo las diferentes partes del proyecto están conectadas. Los investigadores también experimentaron con el uso del sistema para crear un agente "crítico", una inteligencia artificial encargada de revisar los proyectos en busca de consistencia lógica y estilo. Este agente fue capaz de identificar errores y sugerir mejoras, adoptando a veces diferentes personae para proporcionar perspectivas diversas sobre el trabajo. Estos experimentos sugieren que el entorno puede soportar no solo la creación de código, sino también la revisión crítica y el refinamiento de todo el proyecto.

En última instancia, el artículo presenta una visión de un futuro donde el desarrollo de software es un acto colaborativo entre humanos y máquinas, fundamentado en un lenguaje compartido de texto y código. El entorno notlob no pretende resolver todos los problemas de la inteligencia artificial en la programación, ni promete que las máquinas escribirán pronto software perfecto por sí solas. En su lugar, ofrece una herramienta práctica que hace que la relación entre la idea y la implementación sea más transparente y robusta. Al tratar el ensayo y el código ejecutable como una entidad única e interconectada, el sistema ayuda a cerrar la brecha entre la intención humana y la ejecución de la máquina. El trabajo sugiere que el futuro de la programación puede no tratarse de escribir más código, sino de escribir mejores historias que el código pueda seguir, asegurando que la lógica del sistema sea tan clara para la máquina como lo es para el humano.

¿Ahogado en artículos de tu campo?

Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.

Probar Digest →